FizzBuzz二つ
1.upto(100){|n| puts (("!"*n).sub(/^(!{15})+$/, "FizzBuzz").sub(/^(!{3})+$/, "Fizz").sub(/^(!{5})+$/, "Buzz").sub(/!+/, "#{n}")) }
fizz=["Fizz","",""]*34 buzz=["Buzz","","","",""]*21 1.upto(100){|n| puts ((fizz[n]+buzz[n]).sub(/^$/, "#{n}")) }
上の方は正規表現でやっていて||を使おうかと思ったけどifと同じじゃんと思い置換でやってみる。!をn個並べてるのは3の倍数の正規表現によるマッチがこれだと楽だから。ほんとは15の場合を3、5の置換の組み合わせで吸収したかったけど思いつかず。下の方は最初に考えた物で、当初はfizz[n%3]などとやっていたけど配列で全て用意する方法に書き換え。
時間?2分?なんのことです?