FizzBuzz, short code #2
昨日の続き。
step 4: upto
ちょっとイテレータ周りのことを調べていたら upto という繰り返しの構文を発見した。
http://www.namaraii.com/rubytips/?%C0%A9%B8%E6%B9%BD%C2%A4#l9
これでさらに2byte短くなって、73byte。
1.upto(100){|i|puts i%3==0?i%5==0?"FizzBuzz":"Fizz":i%5==0?"Buzz":i.to_s}
anarchy golf - FizzBuzz
順位は変わらず。
あと気になるところは、
- i%5==0 の判定を2回やっているところ
- i.to_s
- 文字列の表示のところ
の3つ。
step 5: putsの引数
よく考えたら、i.to_s は必要ない、ということにようやく気づいて、修正して、68byte達成。
1.upto(100){|i|puts i%3==0?i%5==0?"FizzBuzz":"Fizz":i%5==0?"Buzz":i}
これで、30位にアップ!
anarchy golf - FizzBuzz
あと、他の方法も試してみたけど、これも68byte。
1.upto(100){|i|s=i%3==0?'Fizz':'';s+='Buzz'if i%5==0;puts s==''?i:s}
うーん、どっちの改良に未来があるんだろうか?