pascal.rb


パスカルの三角形という、上の段のとなり同士を足して下段を作っていく数字の三角形があります。課題は何行目の何列目という指定をすると数字を答えるものでしたが、それより、一段全部答えた方がきれいな感じがするので下記のプログラムになっています。

# pascal.rb

def pascal(n)
  parray= []
  parray[0] = parray[n - 1] = 1 #どの段も両端は1
  i = 1
  while i < n do
    parray[i] = pascal(n - 1)[i - 1].to_i + 
                pascal(n - 1)[i].to_i
    i += 1
  end
  return parray
end

p pascal(1) #=> [1]
p pascal(2) #=> [1, 1]
p pascal(3) #=> [1, 2, 1]
p pascal(4) #=> [1, 3, 3, 1]
p pascal(5) #=> [1, 4, 6, 4, 1]
p pascal(6) #=> [1, 5, 10, 10, 5, 1]