From: Dirk Meijer Date: 2006-06-26T08:09:33+09:00 Subject: [SOLUTION] #84 Pascal Triangle ------=_Part_24318_5344479.1151276969935 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline hi everyone, here's my own solution to the problem: pascal.rb ------ class Pascal attr_reader :triangle def initialize(rows) @triangle=[] generate(rows) end def [](row, n) if row>0 and row<=@triangle.length and n>0 and n<= @triangle[row-1].length @triangle[row-1][n-1] else nil end end def generate(rows) return nil if rows<@triangle.length rows.times do |s| row=[1] 1.upto(s-1) do |n| row[n]=@triangle[s-1][n-1]+@triangle[s-1][n] end row[s]=1 @triangle << row end end def to_s spacing=@triangle.last.max.to_s.length total_length=(spacing+1)*@triangle.last.length @triangle.map do |row| row.map do |number| number.to_s.center(spacing) end.join(" ").center(total_length) end.join("\n") end end puts Pascal.new(ARGV[0].to_i) ------ ------=_Part_24318_5344479.1151276969935--