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

**URL:** <https://www.ruby-forum.com/t/solution-pp-pascal-84/64420>\
**Category:** Ruby\
**Created:** [June 25, 2006, 7:00pm UTC](https://www.ruby-forum.com/t/solution-pp-pascal-84/64420 "2006-06-25T19:00:55Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![rambor](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/9de053/32.png) [@rambor](https://www.ruby-forum.com/u/rambor)\
**Post date:** [June 25, 2006, 7:00pm UTC](https://www.ruby-forum.com/t/solution-pp-pascal-84/64420/1 "2006-06-25T19:00:55Z")

</div>

Hello,

you can take this as negative example, cause I store the triangle and  
the formatted output 🙂 Thus it’s much slower than most solutions.

kind regards  
Robert

---

<div class="post-metadata">

**Author:** ![rambor](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/9de053/32.png) [@rambor](https://www.ruby-forum.com/u/rambor)\
**Post date:** [June 25, 2006, 11:54pm UTC](https://www.ruby-forum.com/t/solution-pp-pascal-84/64420/2 "2006-06-25T23:54:41Z")

</div>

Here is my solution…

rows = ( ARGV.shift || 1 ).to\_i  
tri = Array.new( rows ) { |i| Array.new( i+1 ) }  
tri.each\_with\_index do |row, rowno|  
row.fill do |colno|  
( colno == 0 or colno == rowno ) ? 1 : tri[rowno-1][colno-1] +  
tri[rowno-1][colno]  
end  
end

cols, col\_w = tri.last.length, tri.last.max.to\_s.length+1  
tri.each do |row|  
row\_strs = row.collect { |col| col.to\_s.center( col\_w ) }  
puts row\_strs.join.center( cols\*col\_w )  
end

mark
