> Here's an incremental squeezing of an earlier solution, I think by Steven > Grady, down to 164 (or has someone already done that?): > > def b(n)"#{n>0?n: 'No more'} bottle#{'s'if n!=1} of beer"end > 99.downto(1){|n|w=" on the wall";puts "#{b(n)+w}, #{b n}\nTake one down, pass it around\n#{b(n-1)+w}."} [165, by my count?] Not entirely; the original poster asked for a comma after ``around'' and an empty line in between the iterations. That costs you 5 bytes (a double '\n' in a puts). But, in the same way, ``more'' is not required, which saves you 5 bytes. You've got to be careful with these things :) NB: def b(n)"#{n>0?n: 'No'} bottle#{'s'if n!=1} of beer"end 99.downto(1){|n|w=" on the wall";puts b(n)+w+", #{b n}\nTake one down, pass it around,\n#{b(n-1)+w}.\n\n"} Is only 163 bytes. +--- Kero ------------------------------ kero / chello.nl ---+ | Don't split your mentality without thinking twice | | Proud like a God -- Guano Apes | +--- M38c ------- http://members.chello.nl/~k.vangelder ---+