2005-11-22
Factorial!
このblogの読者を3人ほど把握しているのだが、そろそろ読者がいなくなる頃だろう。 昨日、developerWorksのメタプログラミング技法 第1回: メタプログラミングとはという記事にSchemeのコードがあったので、久しぶりにSchemeが書きたくなった。学部の頃九州工業大学のゼミに参加していて、そこでSchemeをやった。当時は何にもわかってなかったなぁ。(今もあんまり変わらんけど) 制御構造とラムダを学習した後に最初に書くプログラムは、階乗の計算だろう。記憶を頼りに書いてみる。
(define fact (lambda (x) (cond ((= x 0) 1) (else (* (fact (- x 1)) x))))) (display (fact 10000)) (newline)
処理系はmzschemeを使った。10000の階乗を計算して表示するプログラムだ。 Cで同じプログラムを書いても、ここまで簡単には書けない。階乗を計算するプログラムは簡単に書けるが、そのプログラムで計算できるのは100の階乗くらいまでだ。 10000の階乗を上記のプログラムを使って、研究室にある数値計算用のPC(Pentium4 3.2GHz HT RAM 500MByte)で計算させると1分30秒くらいかかる。結果はちなみに456575桁だ。果たしてこの結果は正しいのだろうか。
私の博士論文包囲網は着々と狭くなってきている。審査員がどうやら決まったようだ。今月末に内部向けの、論文内容の検討が行われる。どーりでSchemeなんか書きたくなった訳だ。
このblogは、http://www.argv.org/~chome/blog/noisefactory/に移転しました。
Subscribe to Posts [Atom]