SICP 1.12練習問題 をClojureでといてみた
練習問題1.12です。 Pascalの三角形ですね。
再帰プロセス ちょっとださい
(defn calc[v]
(if (> (count v) 1)
(cons (+ (first v) (second v)) (calc (next v)))
v))
(defn nextRow[v]
(cons 1 (calc v)))
(defn pascal[v]
(lazy-seq
(cons v
(pascal (nextRow v)))))
(take 10 (pascal [1]))
反復プロセス iterateをつかったとき
(defn nextRow[v]
(->> (partition 2 1 v)
(map #(+ (first %) (second %)))
(#(concat [1] % [1]))))
(take 10 (iterate #(nextRow %) [1]))
再帰プロセス consをつかったとき
(defn nextRow[v]
(->> (partition 2 1 v)
(map #(+ (first %) (second %)))
(#(concat [1] % [1]))))
(defn pascal[v]
(lazy-seq
(cons v
(pascal (nextRow v)))))
(take 10 (pascal [1]))