On Sat, 21 Jul 2001, Glen Starchman wrote: > 99.downto(0){|x|w=" on the wall";u="#{x!=0?eval(x.to_s):'no more'} > #{x>1?'bottles':'bottle'} of beer";p"#{u}#{w} #{u}. Take one down, pass > it around,#{u}#{w}"} > > > 159 characters... can it be squeezed down any further? I don't think this one quite works - you don't decrement the bottle count after the "Take one down". 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}."}