Yet Another Ruby FizzBuzz

FizzBuzzはプログラムする人の最初のfilterプログラムだ*1
だからプログラムをするのならFizzBuzzを解かなきゃならない
こうしてプログラムする人の数だけFizzBuzzが生まれる
そして今日もまた別のFizzBuzzが生まれた

module Enumerable
  def fizzbuzz(opt)
    map do |num|
      opt.to_a.sort_by{|i, _| -i}.push([1, num])
      .detect {|i, _| (num % i).zero?}.last
    end
  end
end

puts (1..100).fizzbuzz(3 => 'Fizz', 5 => 'Buzz', 15 => 'FizzBuzz')