Best Encapsulation

最高のカプセル化

受賞者:Bas de Bakker

引用元:https://www.ioccc.org/1998/bas1.c

審査員・作者による説明:https://github.com/ioccc-src/winner/blob/main/1998/bas1.hint

動作

gzipされたPostScriptを生成する。

$ gcc -o bas1 bas1.c

$ ./bas1 | gunzip > tmp.ps

$ ps2pdf tmp.ps

エッシャーの描いたような3D迷路みたいなものが出てくる。

ビームの迷路
図:ビームの迷路

左下と右上のビームが切れている。 端っこから反対側の端っこを目指して迷路を解けとのこと。

解説

プログラム中にも書かれている通り、”bemazing”というタイトルがついている。 bemaze(戸惑わせる)、beam(ビーム)、maze(迷路)、amazing(すばらしい)などをかけている。

作者コメントの冒頭にある”you’re in a twisty little maze of beams, all different.”(曲がりくねった小さなビームの迷路にいる。すべてまちまちである)は、コロッサル・ケーブ・アドベンチャーで迷路にいるとき出てくる有名なメッセージ”you are in a twisty little maze of passages, all different.”(曲がりくねった小さな通路の迷路にいる。すべてまちまちである)のパロディ。

gzipにするのは、emacsをインストールするためのディスクの余裕を残すためとのこと。 ポータビリティのために、復帰文字(\r)と改行文字(\n)は出力しないようにしている(Windowsのテキストモードなど)。 こういう細かい配慮は面白い。

コマンドライン引数を与えると迷路が乱数生成になるが、その場合、解けることは保証されない、とのこと。

カプセル化という賞名はあまりよくわからない。 同年の[[1998/chaos]][[1998/df]]の賞名と合わせて、なんとなくオブジェクト指向の用語を選んだのかもしれない。