恐るべき現実(マイナー言語によるFizzBuzz問題解集)

俺は普通のオタクで決してプログラマーではないんだが、と朝日新聞が独島を擁護する時のような前置きをした上で。
どうしてプログラマに・・・プログラムが書けないのか?

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

ブクマの方ではさっそくコメントに各言語のワンライナーがたくさん。しかし、普通にしては面白くない。
C言語C++C#PerlRubyJavaJavaScriptPythonPHP、などの人口の多い(俺主観)言語は除外して、あまり使われていない言語で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

実行結果

蛇足

なお、NScripterでは再帰はかなりきつい。なのでNScripterプログラマーでなくても扱える……と言うのは何の証明にもなってないか。

ページに対する感想

ちゃんとしたプログラマであれば、これを実行するプログラムを2分とかからずに紙に書き出せるはずだ。怖い事実を聞きたい? コンピュータサイエンス学科卒業生の過半数にはそれができないのだ。自称上級プログラマが答えを書くのに10-15分もかかっているのを見たこともある。

なんと恐ろしい! そんなプログラム、小学生でも書けるだろうに!*1
プログラマーって大変ですね。

*1:少なくとも俺は書けた。当時の俺ならMSX-BASICで作れたはず