国際難読化 C コード コンテストについて詳しく解説

国際難読化 C コード コンテストは、 1984 年から毎年開催されているプログラミング コンテストです (1997 年、1999 年、2002 年、2003 年を除く)。毎年、いくつかの受賞作品があり、各年は「Cプリプロセッサの最大の悪用」または「最も一貫性のない動作」のようなカテゴリに分類されます。

IOCCC はランドン・カート・ノールとラリー・バッセルによって設立されました。彼らは、日々の業務で保守しなければならないひどいコードについて話していました。そこで彼らは、考えられる限り最悪の C コードを競うコンテストを開催することにしました。わずか数 KB の許可されたスペースで、参加者は複雑な作業を実行できます。2004 年の優勝者はオペレーティング システムであることが判明しました。

2004 年の受賞者の言葉には次のようなものがあります。

  • 物事をシンプルにするために、C プリプロセッサと、「if」、「for」、「do」、「while」、「switch」、「goto」などの複雑なステートメントを避けました。
  • 有用なプログラムがあるかどうかはまだわかりませんが、これはIOCCCで確認された最初の原子核分裂です。
  • このプログラムは、プリプロセッサに 11 ビット ALU を実装します。
  • 1024 までの素数を計算すると、プログラム自体が自分自身を 680 万回以上インクルードすることに気づきました。

エントリの例は(リンク)です。

#define _ -F<00||--F-OO--;
int F=00,OO=00;main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
{
_-_-_-_
_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_
_-_-_-_
}

このプログラムは、自身の曲面を観察して pi を計算します。より大きなプログラムを使用すると、より正確な値を取得できます。

エントリの注目すべき点は次のとおりです。

  • 画像やテキストなどのリストの形式。
  • コードを読みにくくするためのプリプロセッサの再定義。
  • 自己変更コード。
  • ルールの最悪の乱用: 明らかに不合理なエントリーが提出され、その後何年にもわたってルールの再定義が必要になることが何度かありました。これは明らかに非常に名誉なことです。例としては、それ自体を表示する最小のプログラムがあります。入力はサイズzeroのプログラムで、実行すると画面上に 0 バイトが表示されました (正しく表示するにはメイクファイルを創造的に使用する必要があります)。

これまでのエントリのいくつかは、厄介なコンパイラ クラッシュ (特に Visual Studio) を引き起こすことで注目に値します。

  1. المسابقة الدولية لبرامج لغة C المخفية – arabe
  2. International Obfuscated C Code Contest – allemand
  3. International Obfuscated C Code Contest – anglais
  4. مسابقه بین‌المللی کدنویسی مبهم به زبان سی – persan
  5. IOCCC – japonais
  6. IOCCC – coréen

国際難読化 C コード コンテストについて詳しく解説・関連動画

サイエンス・ハブ

知識の扉を開け、世界を変える。