ウォンツテック

そでやまのーと

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分?なんのことです?