Please Forward: Ruby Quiz Submission #84

From: Tristan Allwood <tristan.allwood@gmail.com>
Date: June 24, 2006 11:15:14 AM CDT
To: submission@rubyquiz.com
Subject: Please Forward: Ruby Quiz Submission #84

Hey,

Gotta love Hash.new { |h,k| .. }

if __FILE__ == $0
  rows = ARGV[0].to_i

  tri = Hash.new do |h,k|
    h[k] = Hash.new do |hh,kk|
      if kk == 0 or kk == k
        hh[kk] = 1
      else
        hh[kk] = h[k-1][kk] + h[k-1][kk-1]
      end
    end
  end

  tri_a = Array.new(rows) do |i|
    Array.new(i+1) do |j|
      tri[i][j]
    end
  end

  spacing = tri_a.flatten.max.to_s.size
  space = " " * spacing
  len = tri_a[-1].size

  puts tri_a.map { |row|
    pad = len - row.size
    (space * pad) + row.map { |val| "%#{spacing}d" % val }.join(space)
  }.join("\n")
end

···

Begin forwarded message: