引用元:https://www.ioccc.org/1991/buzzard.c
審査員・作者による説明:https://github.com/ioccc-src/winner/blob/main/1991/buzzard.hint
動作
3D迷路。fで前に進む、rとlがそれぞれ右と左に向きを変える。
$ gcc -o buzzard buzzard.c
$ ./buzzard
\ /
|\ |
| \ |
| \ |
| \ |
| |\ /--------|
| | \ / | |
| | \ / | |
| | | /| | |
| | | / | | |
| | |---------| | | |
| | | | | | | |
| | |---------| | | |
| | | \ | | |
| | | \| | |
| | / \ | |
| | / \ | |
| |/ \--------|
| / |
| / |
| / |
|/ |
/ \
f
\
|\ /--
| \ / |
| \ / |
| \ / |
| | /| |
| | / | |
| | / | |
| |-------------------| | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| |-------------------| | |
| | \ | |
| | \ | |
| | \| |
| / \ |
| / \ |
| / \ |
|/ \--
/
r
--\ /--
| \ / |
| \ / |
| \ / |
| | /| |
| | / | |
| | / | |
| |-------------------| | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| |-------------------| | |
| | \ | |
| | \ | |
| | \| |
| / \ |
| / \ |
| / \ |
--/ \--
f
\ /
| /|
| / |
| / |
| / |
|---------------------------------| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
|---------------------------------| |
| \ |
| \ |
| \ |
| \|
/ \
f
/
-------------------------------------------|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
-------------------------------------------|
\
解説
マップファイル(テキストファイル)、ゴールの記号、スタート位置はで指定することができる。
$ ./buzzard [filename [escape-char [start-x start-y]]]
デフォルトでは自分自身のソースコードをマップとして使う。
空白文字が通れる空間で、その他の文字はすべて壁になる。
スタート位置は4行目のchar
とZ
の間の空白、ゴールは\
記号。
この記事は一応ネタバレなので、攻略方法を示しておく。
次の入力でゴール直前まで一気に進める。
frfflfffflffffffffffrfflfffffffffffffflffrfffflffffrffffrffffffrfffflffrflfffflffrfflffffrfff
比較的短いコードでインパクトのある出力を行う作品。
コード中に迷路のマップを埋め込んでいるため、空白の入り方が奇妙になっている。
マップに関係ない部分が多くあるのが荒削りではあるが、むやみやたらに難読化するのではなく、意味のある難読化が始まった作品としても興味深い。