# \[QUIZ\] pp Pascal (#84)

**URL:** <https://www.ruby-forum.com/t/quiz-pp-pascal-84/96152>\
**Category:** Ruby\
**Created:** [June 26, 2006, 9:13pm UTC](https://www.ruby-forum.com/t/quiz-pp-pascal-84/96152 "2006-06-26T21:13:13Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![davidtl](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/35a633/32.png) [@davidtl](https://www.ruby-forum.com/u/davidtl)\
**Post date:** [June 26, 2006, 9:13pm UTC](https://www.ruby-forum.com/t/quiz-pp-pascal-84/96152/1 "2006-06-26T21:13:13Z")

</div>

require ‘enumerator’

def pascal(row\_count)  
result = [[1]]  
(row\_count - 1).times do  
new\_row = [1]  
result.last.each\_cons(2) { |a| new\_row \<\< (a[0] + a[1]) }  
result \<\< (new\_row \<\< 1)  
end  
result  
end

def pp\_pascal(rows)  
max\_digits = rows.last[rows.last.size / 2].to\_s.size  
lines = rows.map {|row| row.map { |e| “%#{max\_digits}i” % e }.join(’  
') }  
max\_size = lines.last.size  
lines.each { |line| puts line.center(max\_size) }  
end

pp\_pascal(pascal((ARGV[0] || 10).to\_i))
