在 J 中读取多行标准输入

Reading multiline standard input in J

现在我使用这段代码从标准输入读取数据:

print =: 1!:2&2
read =: 1!:1[3

in =. (read-.LR)-.CR

但它 returns 只是一串数字,例如输入:

2 3个 4个 5

输出:

2345

数字的数量未知,但每个都在单独的行中

使用 (1!:1) 读取时,您读取的是字符流。您必须操纵流以获得所需的输入。

例如。如果你想输入一个由行分隔的整数列表,你可以读取列表,然后用 LF 拆分它,删除 LF,然后转换为整数。您可以使用 cut (;._2) 实现前两个步骤,并使用 do (".):

实现转换
in =: ".;._2 (1!:1) 3

如果你想输入一个由 space 分隔的整数列表,你只需使用 do,spaces:

隐含了拆分
in =: ". LF -.~ (1!:1) 3

尾随 LF(如果存在)必须在应用 ". 之前删除,因为 do 无法转换特殊字符。