最高の難読化アルゴリズム
引用元:https://www.ioccc.org/1993/ejb/ejb.orig.c
審査員・作者による説明:https://www.ioccc.org/1993/ejb/index.html
2つのアルゴリズムが搭載されている。 1つはハノイの塔。コマンドライン引数に正の値を与えると、その高さのハノイの塔の解答を表示する。
$ gcc -o ejb ejb.c
$ ./ejb 3
move ring 1 from stack 1 to stack 2
move ring 2 from stack 1 to stack 3
move ring 1 from stack 2 to stack 3
move ring 3 from stack 1 to stack 2
move ring 1 from stack 3 to stack 1
move ring 2 from stack 3 to stack 2
move ring 1 from stack 1 to stack 2
もう1つ。負の値をあたえると、patience puzzleを外すまでの状態の列を表示する。 patience puzzleはたぶん連環・チャイニーズリングのこと。 右端の数字が最初のリングを表し、1はU字金具に入った状態、0は外れた状態を表すらしい。
$ ./ejb -3
111
110
010
011
001
000
コードはセミコロンをかたどっている。
このプログラムには、セミコロンが2つしかない(変数宣言で1つ、return文の終わり)。
プログラムの規模(lines of code)を測るためにセミコロンを数えるとすると、このプログラムのセミコロンは2つか、それとも3つか曖昧にするため、というネタらしい。
型名などを除けば、キーワードはreturnしか使っていない。必然的に、main関数の再帰を伴う巨大な式1つからなるreturn文となっている。