いわゆる卍研究所。
In: Project Euler
9 1月 2010Project EulerをClojureでおさらいシリーズ。
Problem 15
日本語訳:
2×2のマス目の左上よりスタートして右下にたどり着く道順は6通りである。 (ただし逆方向に引き返さないこととする)
20×20のマス目では何通りの道順が存在するかを求めよ。
40C20 ですね。以上。
久々に紙と鉛筆でもいける問題。
こういうのも嫌いじゃない。
以前Rubyで解いたバージョンはこちら:
#!/usr/bin/env ruby # 40C20 p 21.upto(40).inject(1){|s,x| s*x} / 1.upto(20).inject(1){|s,x| s*x}
さて、次はClojure:
(ns euler.p015) (defn fact "Return factorial of N." [n] (apply * (range 1 (inc n)))) (defn comb "Return number of combinations from N choose M." [n m] (/ (fact n) (fact m) (fact (- n m)))) (println "Answer : " (comb (* 20 2) 20))
せっかくなので階乗と組合せの関数でも定義してみた。
私 manjilab のポータル的サイトになっております。日々気付いたこと、考えたこと、発表したいものを載せていきます。