16 lines
453 B
Clojure
16 lines
453 B
Clojure
(defn digits-seq
|
|
"Returns a seq of the digits of a number (L->R)."
|
|
[n]
|
|
(loop [digits (), number n]
|
|
(if (zero? number) (seq digits)
|
|
(recur (cons (mod number 10) digits)
|
|
(quot number 10)))))
|
|
|
|
(defn join-digits
|
|
"Converts a digits-seq back in to a number."
|
|
[ds]
|
|
(reduce (fn [n d] (+ (* 10 n) d)) ds))
|
|
|
|
(defn look-and-say [n]
|
|
(->> n digits-seq (partition-by identity)
|
|
(mapcat (juxt count first)) join-digits))
|