FizzBuzz問題
ハテブみてたら「http://b.hatena.ne.jp/entry/okajima.air-nifty.com/b/2009/12/post-f94c.html」こんなんがあって、
それをたどって「http://okajima.air-nifty.com/b/2009/12/post-7adb.html」みたら「FizzBuzz問題」なるものの存在を知った。
最初のプレイヤーは「1」と数字を発言する。次のプレイヤーは直前のプレイヤーの次の数字を発言していく。ただし、3で割り切れる場合は 「Fizz」(Bizz Buzz の場合は 「Bizz」)、5で割り切れる場合は 「Buzz」、両者で割り切れる場合は 「Fizz Buzz」 (Bizz Buzz の場合は 「Bizz Buzz」)を数の代わりに発言しなければならない。
ようするにナベアツのあれなんだけど、「http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm」この記事を見たら出来ないやつがワンサカいると書いている。
んな訳ないだろと僕もやってみた。
php -r 'for($i=1;$i<101;$i++){if($i%3==0)echo"Fizz";if($i%5==0)echo"Buzz";if($i%3>0&&$i%5>0)echo $i;echo "\n";}'
よかった、100秒くらいだった
とおもったら、
実際に「制限時間2分以内」「剰余(%記号等)を用いない」「1行でできる限り短く(ワンライナー)」等
なんと!剰余禁止か!他は偶然クリア
php -r 'for($i=$f=$b=0;$i<100;$i++){$f++;$b++;$e="";if($f==3){$f=0;$e.="Fizz";}if($b==5){$b=0;$e.="Buzz";}if($e==""){$e.=($i+1);}echo($e."\n");}'
2分くらいだけど恐ろしくダサいぞ。。。
いけてるのはどんなんだろうか。
はてブこめんとみたら全ぜん長いな...無念