パスカルの三角形
javascriptばかりやって、rubyを忘れないように作ってみた。
一応、今考えられる最も読みやすい書き方。
コード
def describe_pascal(n) #パスカルの三角形の要素を含む配列の作成 pascal = lambda do |depth| (0..depth-2).inject([[0,1,0]]) do |arr, e| arr << [0, ((2..(arr[e].size)).map {|i| arr[e][i-2] + arr[e][i-1]}), 0].flatten! end.each {|e| e.delete(0)} end #整形された表示に適する形に変換 seed = pascal.call(n).map {|e| e.join(" ")} width = seed[-1].length #表示 seed.each {|e| print"#{e.center(width)}\n"} end describe_pascal(7)
出力結果
=> 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1