恐るべき現実(マイナー言語によるFizzBuzz問題解集)
俺は普通のオタクで決してプログラマーではないんだが、と朝日新聞が独島を擁護する時のような前置きをした上で。
どうしてプログラマに・・・プログラムが書けないのか?
1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
ブクマの方ではさっそくコメントに各言語のワンライナーがたくさん。しかし、普通にしては面白くない。
C言語、C++、C#、Perl、Ruby、Java、JavaScript、Python、PHP、などの人口の多い(俺主観)言語は除外して、あまり使われていない言語でFizzBuzz問題に挑戦した事例を集めた。随時増やしていく予定。
また、集めるだけでも芸がないので、自分でもやってみることにする。
NScripterでの事例
誰もやらないだろうNScripterでやってみた。調整も含めて10分くらいか? デフォルトのサイズだと、一画面に文字が収まりきれなかったりしたから、その分setwindow命令の仕様を調べる時間がかかってる。
スクリプト
;mode800 *define game *start saveoff setwindow 8,16,25,23,26,26,0,2,20,1,1,#999999,0,0,799,599 for %0=1 to 100 mov %3,0 mov %1,%0 mod 3 mov %2,%0 mod 5 if %1=0 puttext "Fizz/":inc %3 if %2=0 puttext "Buzz/":inc %3 if %3>0 jumpf %0/ ~ puttext " /" next click end
ページに対する感想
ちゃんとしたプログラマであれば、これを実行するプログラムを2分とかからずに紙に書き出せるはずだ。怖い事実を聞きたい? コンピュータサイエンス学科卒業生の過半数にはそれができないのだ。自称上級プログラマが答えを書くのに10-15分もかかっているのを見たこともある。