2007年05月20日
FizzBuzz
やじうまウォッチで見かけてから寝かせたので、流行からかなり遅れてますが、 せっかくやってみたので出しておこうかと。
ネタ元:「どうしてプログラマに・・・プログラムが書けないのか?」
問題:
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環境ならほとんどの環境で試せますが自慢にはならんな。