RosettaCodeData/Task/Pascal-matrix-generation/Ruby/pascal-matrix-generation-2.rb

17 lines
529 B
Ruby

require 'pp'
def binomial_coeff(n,k) (1..k).inject(1){|res,i| res * (n-i+1) / i} end
def pascal_upper(n) (0...n).map{|i| (0...n).map{|j| binomial_coeff(j,i)}} end
def pascal_lower(n) (0...n).map{|i| (0...n).map{|j| binomial_coeff(i,j)}} end
def pascal_symmetric(n) (0...n).map{|i| (0...n).map{|j| binomial_coeff(i+j,j)}} end
puts "Pascal upper-triangular matrix:"
pp pascal_upper(5)
puts "\nPascal lower-triangular matrix:"
pp pascal_lower(5)
puts "\nPascal symmetric matrix:"
pp pascal_symmetric(5)