From: Patrick Hurley Date: 2007-06-04T00:10:32+09:00 Subject: Re: FizzBuzz (#126) My first thought: (1..100).each do |i| case when i % 15 == 0 puts "FizzBuzz" when i % 3 == 0 puts "Fizz" when i % 5 == 0 puts "Buzz" else puts i end end If I took 30 seconds to think about it on an interview, I would have a unit test (see my earlier post) and something like this: module Enumerable def map_every(n) m = n - 1 result = [] self.each_with_index do |elem,i| if i % n == m result << yield(elem,i) else result << elem end end result end end result = *1..100 result = result.map_every(3) { "Fizz" } result = result.map_every(5) { "Buzz" } result = result.map_every(15) { "FizzBuzz" } puts result ---------------------------------------- I peeked on the mailing list, so I won't participate in the golf tournament -- and I am not particularly good at golfing in any case. pth