RosettaCodeData/Task/Zeckendorf-number-representation/Clojure/zeckendorf-number-representation.clj
2023-07-01 13:44:08 -04:00

13 lines
380 B
Clojure

(def fibs (lazy-cat [1 1] (map + fibs (rest fibs))))
(defn z [n]
(if (zero? n)
"0"
(let [ps (->> fibs (take-while #(<= % n)) rest reverse)
fz (fn [[s n] p]
(if (>= n p)
[(conj s 1) (- n p)]
[(conj s 0) n]))]
(->> ps (reduce fz [[] n]) first (apply str)))))
(doseq [n (range 0 21)] (println n (z n)))