FizzBuzz in anagol

Rubyでのsubmit落ち着いたみたいなので貼ります。flaたんebanさんに勝てたのは嬉しいなあと思います。

1.upto(?d){|n|n%3<1&&s="Fizz";puts n%5<1?"#{s}Buzz":s||n}

これは結構面白いので以下簡単な解説。
論理演算子によって評価されなかった式で変数が宣言されていた場合も、ちゃんと宣言だけはされます(nilで初期化されます)。

false&&s="hoge"
p s             # -> nil

これによって変数sをフラグとして利用することができ、結果「Fizzか数を返す」式を「s||n」まで縮めることが出来ました。すばらしー。
あと、Nil#to_sが空文字列""を返すことを利用して「s.to_s+"Buzz"」で「FizzBuzzかBuzzを返す」式を作ります。で、これは"#{s}Buzz"の方が短い。
そんなこんなで57B。最後の最後まで「?d」でなく「100」を使ってたのは、流石アマチュアゴルファーだなあと。

しかし58Bとかはどんななのかなあ。nil使わずに60切れるとあまり思えないので、かなり近い気もする。