  Hi there!  I'm new to Wikipedia so I hope this is the right way to respond... anyway, I've been hacking Ruby professionally since 2000 (and lots of other languages before and since), so I've soaked up a number of tricks.  To answer your questions:  1) Yes, the Array constructor can take a block which gets evaluated upon each elements initialization, optionally with the index as the block parameter, so Array.new(10){|i|puts i; i} will print the numbers 0-9 as side-effect and populate each element with the integer corresponding to its index (since that is the last thing evaluated in the block and therefore the implicit return value).  2) The retry statement and r variable were unnecessary since Ruby handles numerical under/overflow by returning 0.0 or Infinity respectively (both Floats), never by raising an exception, so really, the begin/rescue block is not necessary at all; moreover the other language implementations appear to consider any value greater than 400 as overlow, so I'll modify the new implementation to be consistent with them.  Let me know what you think.  