对于下面的代码,我从stdin读取输入。基本上它只是由空格或换行符分隔的一些数字。具体来说,我试图完成this challenge。
我的目标是从输入中创建一个数字列表(没有第一个数字)。当我在hackerrank运行下面的代码时,我得到一个单个数字的列表:(5)
不确定发生了什么,或者如何修复。有人知道吗?
(map read-string (rest (line-seq (java.io.BufferedReader. *in*))))
答案 0 :(得分:2)
line-seq
为每一行提供一个字符串。 read-string
从字符串中读取,返回找到的第一个完整对象。因此,您只能获得第一项。
您可以让我们clojure.string/split
分解字符串并在每个部分上使用read-string
,或loop
,在由自己制作的PushbackReader上累积调用read
的结果BufferedReader,直到你不再输入。
答案 1 :(得分:2)
由于您的输入是
输入格式
第一行包含一个整数N。
下一行包含N个整数:a0,a1,... aN-1由空格分隔...
示例输入
6
5 4 4 2 2 8
您无需担心验证/安全性,您可以
(let [n (read-string (read-line))
v (read-string (str "[" (read-line) "]"))]
(assert (== n (count v))) ;if you like
(comment solution here...))