パスカルの三角形
パスカルの三角形が最近はやっているらしい。
身内の間で。厳密には約二名(課長と係長)の間で。
ことの発端は魔術師本に出てる問題。
先に答えを見てしまっているからだろうけど
考え方をまとめてみた。
もうすこしわかりやすくしてみよう
実は三角形って名前と図がピラミってる(ピラミッド状になっている)
ことに惑わされることに気がついた。
なので、これを全部左に寄せてみる。
1
11
121
1331
こうするとなんとなく法則性が見えてくる気がする。
その法則性は、
- (左から数えて)先頭列は無条件で1になる
- (左から数えて)最後の列は1になる
- 上記以外は、その数の1行上 + 1行上の1列前(左)
2番目はその行と同じ列と等しい(これには気がつかなかった)
これを満たすようにつくればいいわけだな。
結局
答えは、id:kanouk課長がRubyで出したのだが、
(というか盛り上がりきったところで、この盛り上がりに気がついたorz)
JavaScriptで書き換えたのを載せとく。
function pascal(depth, order){ return (order == 1 || order == depth) ? 1 : pascal(depth - 1, order - 1) + pascal(depth - 1, order); }