SICP 1.12練習問題 をClojureでといてみた Oct 31, 2018 練習問題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]))