変態C言語プログラムコンテストであるIOCCCの全作品を日本語でネタバレ解説するサイトを書いてます。
年初にIOCCC 1984の解説から書き始めて、先程IOCCC 2000の解説を公開したところです。
数えてみると、ここまで165作品を解説したようです。どれも面白いものばかりですが、その中でも特におすすめの作品を個人的な好みでピックアップ紹介してみました。
Brian Westleyの作品
初期のIOCCCを支えたwestleyの作品群。多彩で超絶技巧で、とにかくすごいです。絶対に見てほしい!ので、まずは彼の作品だけまとめます。 ネタバレ解説を書き始めたのは、すごさのわりにあまり注目されていない彼の作品を紹介したかったのが動機のひとつです。
- IOCCC 1987 Best Layout 線対称なプログラム。実行すると回文が出る。
- IOCCC 1988 Best Layout 円の形のプログラムで、円周率を計算する。ちゃんと円の形に意味があるのがよい。
- IOCCC 1989 Most algorithms in one program ROT13しても文字列反転しても動くプログラム。コード形状のトリックが芸術の域。
- IOCCC 1990 Best Layout 演劇の英語脚本っぽいプログラム。これでちゃんと意味のある動きをするのだから衝撃的。
- IOCCC 1991 Grand Prize ○✕ゲームを組み込んだQuine。
- IOCCC 1992 Best Small Program 小さな円(地球)の形のプログラムで、世界地図が出る。指定した緯度経度にマークを置ける機能付き。
- IOCCC 1994 Worst Abuse of the C Preprocessor Cプリプロセッサでアドベンチャーゲームを実装。
- IOCCC 1996 Best One Liner たった92文字のコードで、様々な時計を表示するワンライナー。
気楽に楽しめる作品
個人的な好みでwestleyだけ贔屓しましたが、他にも面白いのがたくさんあります。 まずは、コードの形や実行結果がひと目で面白く、気楽に楽しめるものをピックアップ。
- IOCCC 1989 Best layout π、と見せかけてe
- IOCCC 1991 Best Output ターミナルで3D迷路。
- IOCCC 1994 Best Utility ターミナルでグラフ。
- IOCCC 1994 Most Well Rounded Obfuscation psで時計。
- IOCCC 1995 Best Layout 加算器の形をした加算器。
- IOCCC 1998 Best Object Orientation ターミナルで3Dオブジェクトのビューア。
- IOCCC 1998 Best of Show 飛行機の形をしたフライトシミュレータ。
- IOCCC 2000 Best Layout 「あく」「そく」「ざん」
- IOCCC 2000 Best Small Program 現在の月齢をわかりやすく表示する。
地味だけどよく見るとすごい作品
ちょっととっつきにくいけれど、個人的にかなり好きなもの。
- IOCCC 1988 Most useful Obfuscated C program わかりにくいC言語の型宣言を、英語で解説してくれる。
- IOCCC 1989 Best self-modifying program 自分自身を書き換えながら階乗を計算する。
- IOCCC 1990 Best of Show 微分方程式のソルバで、ソートで、フィボナッチ。
- IOCCC 1993 Best Abuse of the C Preprocessor ライフゲームのためのC言語埋め込みDSL。
- IOCCC 1994 Best Layout 入力を転置行列のように転置するプログラムで、自分自身も転置可能。
- IOCCC 1996 Best Obfuscated Character Set Utility 点字の形をした点字変換プログラム。
- IOCCC 1996 Best of Show セルフホスト可能なC言語サブセットコンパイラ。
縛りプレイな作品
C言語の機能を制約して書かれたプログラム。無意味な超絶技巧にIOCCCらしさを感じられます。
- IOCCC 1988 Best abuse of C constructs ほぼwhileとdecrementだけのプログラム。
- IOCCC 1998 Best Flow Control 条件分岐を使わずに条件分岐をするプログラム。
また、C言語ではなくCプリプロセッサで計算をするプログラムも結構あります。
ルールの悪用系の作品
「C言語プログラムとは何なのか」を考えさせられる哲学的な作品群。実にIOCCCならではです。
- IOCCC 1984 The Grand Prize
short main[]={...};
- IOCCC 1987 Best Abuse of the Rules
P;
- IOCCC 1988 Best abuse of the rules
#include "/dev/tty"
- IOCCC 1989 Strangest abuse of the rules
char*_="Hello, world.\n";
- IOCCC 1990 Strangest Abuse of the Rules
c
- IOCCC 1993 Most Versatile Source
char*_=__FILE__;
- IOCCC 1994 Worst Abuse of the Rules 世界最小Quine。
まとめ
20世紀のIOCCCから個人的なおすすめ作品ピックアップでした。 紹介しなかったやつもだいたい面白いので、ぜひ暇な土日などにでも眺めてみてほしいです。
20世紀のIOCCCは、古いC言語なので、動作確認やパッチ作成がやたら大変でした。 来週からは21世紀のIOCCCのネタバレを書いていきます。 動作確認は楽になりそうですが、そのかわり作品の数や難解さが増えるので、やっぱり大変そう。