パスカルの三角形

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