Best use of python

Pythonの最高の使用

受賞者:Yusuke Endoh

引用元:https://www.ioccc.org/2018/endoh2/prog.c

審査員・作者による説明:https://www.ioccc.org/2018/endoh2/hint.html

動作

オウムの絵が回るQuine。

$ gcc -o prog prog.c

$ ./prog
最初の出力
図:最初の出力

この出力は色のためのエスケープシーケンスが混ざっているが、そのままコンパイルできる。

$ ./prog > tmp.c

$ gcc -o tmp tmp.c

$ ./tmp
2枚目の出力
図:2枚目の出力

同じことを合計10回繰り返すと、赤いオウムに戻る。詳しくはデモ動画を参照のこと。

図:作者によるデモ動画(引用元:https://www.youtube.com/watch?v=6Ak1DC1uBuc

解説

新しいハッカーが好きなオウムと、古いハッカーが好きなオウムのネタをかけ合わせたハイコンテクストな作品。 1つはParty Parrotと呼ばれるインターネットミーム。 もう1つはイギリスのコメディテレビ番組『空飛ぶモンティ・パイソン』『死んだオウム』というスケッチ(コント)。 賞名の”Python”はプログラミング言語のPythonではなく、モンティ・パイソンを指している(なお、プログラミング言語のPythonの名前はモンティ・パイソンに由来している)。

prog.cの形状は『死んだオウム』(dead parrot)を踏まえて”Undead Parrot”。 出力のソースコードの一番下の行に出てくるメッセージは、『死んだオウム』に出てくる、オウムが死んだことを多種多様な表現で説明するセリフの主語をIにしたもの。 また、下から2行目の__<-_Source_of_Parrots__という文字列がある行には、http://cultofthepartyparrot.com/のURLが隠されている(オウムの胴体で見えなくなっている)。

見飽きたQuineネタではあるが、10枚のオウムの絵と10個のセリフのデータを持たせるのはそれなりに大変。 オウムの絵は輪郭データのみを保存していて、胴体の塗りつぶしは実行時に行っている。 これらのデータはたぶんbyte pair encodingで圧縮されている。

hint.textの作者コメントはオウムのアスキーアートのみ。 “It’s”はモンティ・パイソンの番組のオープニングで言われるセリフ。 審査員コメントの“And now for something completely different”も同様にオープニングで使われるセリフ。