パスカルの三角形
SICPの問題1.12は、パスカルの三角形。
パスカルの三角形は、三角形の辺上の数は全て1。三角形の内部の数はその上の2つ上の数の和という三角形。
こんなかんじ
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 ............
rubycoさんやtakatohさんがやられていたやつ。
SICPでは、三角形を描くのではなく、要素を求めるだけでいい。
というわけで、定義に忠実に実装。
pascal x y | x == y = 1 | y == 1 = 1 |otherwise = (pascal ( x - 1 ) (y-1)) + ( pascal ( x- 1) y) *Main> pascal 4 3 3 *Main> pascal 5 3 6 *Main> pascal 1 1 1
簡単な定義のため、気づかないうちにid:takatohさんの実装とほぼいっしょになっちゃいました。
追記:id:takatohさんのコメントより。
こちらも、御参考に。http://hpcgi2.nifty.com/1to100pen/wiki/wiki.cgi?p=%CB%E8%C6%FCHaskell の 2006-05-12
http://d.hatena.ne.jp/takatoh/20060514