So much for the pp part, but this does the Pascal just fine:

----------------------
require "rational"

# I derived the nCk formula myself, didn't wanna cheat.
class Fixnum
  def choose(k); (1..k-1).inject(1){ |s,e| s *= Rational(self,e) - 1 }; end
end

# not to disappoint JEG2, I decided to maintain my record of
# "never completing a ruby quiz", so take the formatting with a grain of salt.
1.upto(ARGV[0].to_i) { |n| puts((1..n).map {|k| n.choose k }.join("|")) }
----------------------

For me the fun part was learning through inspection that the values of
the triangle were simply nCk values, and then deriving the the nCk
formula from the triangle.  The above is a bit of a messy version of
that formula, because I did derive it myself, and my math is slow this
summer ;)


Output (no effort here) :
[sandal@harmonix rubyquiz]$ ruby pascal.rb 15
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
1|7|21|35|35|21|7|1
1|8|28|56|70|56|28|8|1
1|9|36|84|126|126|84|36|9|1
1|10|45|120|210|252|210|120|45|10|1
1|11|55|165|330|462|462|330|165|55|11|1
1|12|66|220|495|792|924|792|495|220|66|12|1
1|13|78|286|715|1287|1716|1716|1287|715|286|78|13|1
1|14|91|364|1001|2002|3003|3432|3003|2002|1001|364|91|14|1