fizzbuzz

なんとなく悔やまれるのでリトライ。制限時間 30m というシバリはスルーで。
引数としては 3 個指定されていなければ ignore ということにします。あと、数値でなかった場合は例外 (to_i してるだけ)。

#!/usr/bin/env ruby

class Fizzbuzz
  def initialize(limit, fizz, buzz)
    @array = Array.new(limit.to_i)

    for i in 0..limit - 1 do
      @array[i] = i + 1
    end

    @fizz = fizz.to_i
    @buzz = buzz.to_i
    @fizzbuzz = @fizz * @buzz

    @array.map! { |tmp|
      if (tmp % @fizzbuzz == 0)
        "fizzbuzz"
      elsif (tmp % @fizz == 0)
        "fizz"
      elsif (tmp % @buzz == 0)
        "buzz"
      else
        tmp.to_s
      end
    }
  end

  def print
    @array.each { |i|
      puts i
    }
  end
end

limit = 100
fizz = 3
buzz = 5

if ARGV.count > 2
  limit = ARGV[0].to_i
  fizz = ARGV[1].to_i
  buzz = ARGV[2].to_i
end

fb = Fizzbuzz.new(limit, fizz, buzz)
fb.print

うーん、微妙。