(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

どうやって数字を分割する?

質問者 Geem7n は効率的でない書き方なら出来るんだけど、効率の良い数字を分割する方法を知りたいとのこと。

(->> (str 942)
      seq
      (map str)
      (map read-string)) ;=> (9 4 2)

;; and

(defn digits [n] ;YUK!!
   (cons 
      (str (mod n 10)) (lazy-seq (positive-numbers (quot n 10)))))

(map read-string (reverse (take 5 (digits 10012)))) ;=> (1 0 0 1 2)

回答者 vsnyc はもっとシンプルに出来ると言ってます。

(map #(Character/digit % 10) (str 942))

他の回答者 Charles の意見を受けて、数字を文字に変換しないやり方だとこう出来ると

(defn numTodigits
  [num]
  (loop [n num res []]
    (if (zero? n)
      res
      (recur (quot n 10) (cons (mod n 10) res)))))