2013-04-10 21:29:02 -07:00
|
|
|
(defn happy? [n]
|
|
|
|
|
(loop [n n, seen #{}]
|
2015-02-20 00:35:01 -05:00
|
|
|
(cond
|
|
|
|
|
(= n 1) true
|
|
|
|
|
(seen n) false
|
|
|
|
|
:else
|
|
|
|
|
(recur (->> (str n)
|
|
|
|
|
(map #(Character/digit % 10))
|
|
|
|
|
(map #(* % %))
|
|
|
|
|
(reduce +))
|
|
|
|
|
(conj seen n)))))
|
2013-04-10 21:29:02 -07:00
|
|
|
|
|
|
|
|
(def happy-numbers (filter happy? (iterate inc 1)))
|
|
|
|
|
|
|
|
|
|
(println (take 8 happy-numbers))
|