2007年05月20日

FizzBuzz

Posted by morim at 00:30
Categories: Webとか 技術方面

やじうまウォッチで見かけてから寝かせたので、流行からかなり遅れてますが、 せっかくやってみたので出しておこうかと。

ネタ元:「どうしてプログラマに・・・プログラムが書けないのか?」

問題:

1から100までの数をプリントするプログラムを書け。 ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、 3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

これに対する、はてブの回答群が興味深くて。
んじゃ私もやってみようってんで。

方針:

  • DOS窓から叩けるようにJSなWSHで無理にでも1行にする
  • if文を使わない
  • 剰余を使わない
  • 可読性が落ちようとも、なるべく短く書く

と。
書き上げたところで cscript "プログラム内容" とか渡せないから1行にした意味が無い事に気付いたわけで orz
もったいないから改行とインデント入れてココに書いてしまえ。

var f=1,b=1,s="";
for(var i=1;i<=100;i++){
s+=" "+(f>=3||b>=5?(f>=3?"Fizz":"")+(b>=5?"Buzz":""):i);
f=f>=3?1:f+1;
b=b>=5?1:b+1;
}
WScript.echo(s);

拡張子.jsなテキスト形式で保存してDOS窓で cscript に渡せば、Windows環境ならほとんどの環境で試せますが自慢にはならんな。