From: Gregory Brown Date: 2006-06-26T00:17:13+09:00 Subject: Re: [QUIZ] pp Pascal (#84) 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