Clojure问题,无法将字符串列表转换为数字

时间:2014-09-12 17:30:53

标签: clojure io

对于下面的代码,我从stdin读取输入。基本上它只是由空格或换行符分隔的一些数字。具体来说,我试图完成this challenge

我的目标是从输入中创建一个数字列表(没有第一个数字)。当我在hackerrank运行下面的代码时,我得到一个单个数字的列表:(5)

不确定发生了什么,或者如何修复。有人知道吗?

(map read-string (rest (line-seq (java.io.BufferedReader. *in*))))

2 个答案:

答案 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...))