FizzBuzzが流行っているので

FizzBuzzが流行っているので、私も書いて見ました。
普通に書くのは一回やって飽きたので、数値と範囲の両方取れるようにしました。

module FizzBuzz
  def self.fizzbuzz obj
    if    obj.kind_of? Integer then fizzbuzz_upto  obj
    elsif obj.kind_of? Range   then fizzbuzz_range obj
    else  raise
    end
  end

  def self.fizzbuzz_upto n
    1.upto(n).each{|i| fizzbuzz_one i}
  end
  def self.fizzbuzz_range range
    range.each{|i| fizzbuzz_one i}
  end

  def self.fizzbuzz_one n
    if    n % 15 == 0 then print 'fizzbuzz'
    elsif n % 5  == 0 then print 'buzz'
    elsif n % 3  == 0 then print 'fizz'
    else                   print n
    end
    print ' '
  end
end

FizzBuzz::fizzbuzz 10
print "\n"
FizzBuzz::fizzbuzz 5..20

さっと作ったから、突っ込みどころは多そう。