octech このページをアンテナに追加 RSSフィード

2007-05-19 頭の体操2

[][]FizzBuzz, short code #2 11:39 FizzBuzz, short code #2を含むブックマーク

昨日の続き。

step 4: upto

ちょっとイテレータ周りのことを調べていたら upto という繰り返しの構文を発見した。

逆引きRuby ? www.namaraii.com ? Index of TAKEUCHI, Hitoshi

これでさらに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

f:id:octech:20070519113553j:image

順位は変わらず。

あと気になるところは、

  • 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

f:id:octech:20070519145657j:image

あと、他の方法も試してみたけど、これも68byte。

1.upto(100){|i|s=i%3==0?'Fizz':'';s+='Buzz'if i%5==0;puts s==''?i:s}

うーん、どっちの改良に未来があるんだろうか?