I know this comes a bit late, but this made me want to give it a bash in Ruby… So here is my Christmas tree with ‘*’ in Ruby.

WIDTH = 10

(1..3).each do
  |j|
  1.step(WIDTH, 2) do
    |i|
    # This if truncates the top of the triangles for level 2 and 3.
    if not(j>1 and i==1)
      ((WIDTH-i)/2).times{ print " "  }
      i.times{ print "*" }
      puts ""
    end
  end
end
(1..3).each do
  |i|
  ((WIDTH-3)/2).times{ print " " }
  3.times{ print "*" }
  puts ""
end

This gives:

    *
   ***
  *****
 *******
*********
   ***
  *****
 *******
*********
   ***
  *****
 *******
*********
   ***
   ***
   ***

Oooooh!