世界を動かす技術を、日本語で。

第29回国際難読C言語コンテスト(IOCCC)2025年の受賞者

2026年6月7日原文(ioccc.org)

概要

  • IOCCC29(第29回国際難読Cコードコンテスト)の結果と概要
  • 2025年の受賞作や注目エントリを紹介
  • 新たな「ファンチャレンジ」導入と参加方法
  • ルール・ガイドラインの更新と今後の展望
  • 受賞者・非受賞者へのメッセージとFAQ案内

IOCCC29(第29回国際難読Cコードコンテスト)総括

  • IOCCC29 は2025年に開催された、歴史ある難読Cコードコンテスト
  • 今年も 高品質かつ多数の応募作品 が集まり、例年に比べても質・量ともに充実
  • 公式Webサイト で各受賞作のindex.htmlページを参照可能
  • 受賞作の ソースコードや解説、実行方法 も掲載
  • すべての受賞作を tarball形式で一括ダウンロード 可能

近年の傾向と運営改善

  • IOCCC28は4年ぶりの開催で 応募数・質ともに過去最高水準
  • IOCCC29も 高い応募数と質 を維持
  • Webサイト刷新やSNS活用、過去作の蓄積 が質向上の要因
  • コンテストのクローズ手順、審査、発表、Web更新などを詳細にドキュメント化
  • ドキュメント化により 運営全体の効率化と品質向上 を実現

受賞作発表とメディア展開

  • Our Favorite Universe のYouTubeチャンネルで受賞作をプレゼン
  • 各受賞作index.htmlページに YouTubeセグメントへのリンク を追加予定

ファンチャレンジ(Fun Challenge)の新設

  • 今年から「 ファンチャレンジ」を各受賞作の Judges’ remarks に追加
  • 作品の内容を理解した上で 追加課題に挑戦可能
    • 例:prog.cの改変、解説文の作成など
  • GitHub Pull Request による貢献を歓迎
  • チャレンジが終了していても より良い解決策 があればPR提出可能
  • IOCCC Judgesが 優れたPRを採用 する場合あり

ルール・ガイドラインの刷新

  • 2025年版ルール(ver 29.15)・ガイドライン(ver 29.08) を適用
  • 多くのボランティアによる 編集・統合・再構成 で大幅リライト
  • 運営の透明性・公平性の向上

今後の予定と運営計画

  • IOCCC30 は2026年末に開始、2027年第1四半期に締切予定
  • IOCCC30の準備・運営も 詳細に内部ドキュメント化
  • IOCCC29終了後、 運営チームは短期休暇 を予定
  • mkiocccentryリポジトリ のPR対応は休暇後に実施

最終審査と受賞者

  • 最終審査で 高評価エントリ が多数
  • 今年は 台湾(jingp49) から初の受賞者
  • Hat trick of Hat-tricks (3冠)達成者:
    • Yusuke Endoh (endoh1, endoh2, endoh3)
    • Nick Craig-Wood (ncw1, ncw2, ncw3)
    • Don Yang (yang1, yang2, yang3)

注目受賞作(抜粋)

  • 2025/cable: Subleqコンピュータ
  • 2025/cesmoak: ブラックホール・パンチカードFortran
  • 2025/endoh3: patch/diffクワイン
  • 2025/jhshrvdp: ローグライク風ゲーム
  • 2025/jingp49: Dr. WHO数列
  • 2025/ncw1: GameBoyエミュレータ
  • 2025/tompng: 海の音ジェネレータ
  • 2025/uellenberg: クワインPong
  • 2025/yang2: Zoltraakエンコーディング
    • 他にも多数の受賞作を 公式サイトで紹介

非受賞者へのエール

  • 多くの応募作が 惜しくも受賞を逃す
  • 努力は高く評価 されるが、受賞は限られた作品のみ
  • 改良して次回IOCCC30へ再挑戦 を推奨
  • 過去の非受賞作が 改良されて受賞する例も多数
  • 新しいアイデアや別ジャンルでの挑戦 も歓迎
  • 改良・再応募しない場合は 自身で公開も可能

受賞作のコンパイル・実行

  • 一部のCコンパイラは 互換性や動作が不十分 な場合あり
  • 最新のclangやgcc でのビルド推奨
  • FAQ で下記の情報を案内
    • IOCCCエントリのコンパイル方法
    • 依存関係や実行時の問題
    • 修正方法や作者情報の更新
    • Webサイト問題の報告・修正方法
    • IOCCCへの連絡先・FAQ・公式サイト案内

2025年受賞作一覧(抜粋)

  • 2025/ayu: IMO賞
  • 2025/cable: 架空エミュレータ賞
  • 2025/cesmoak: レトロスペース賞
  • 2025/diels-grabsch: ワンライナー賞
  • 2025/dogon: 一貫性賞
  • 2025/endoh1: 最も目を引く賞
  • 2025/endoh2: 最も衝撃的賞
  • 2025/endoh3: 最も堅牢賞
  • 2025/ferguson: 反対賞
  • 2025/howe: 侵略賞
  • 2025/jhshrvdp: テレポート賞
  • 2025/jingp49: Who won賞
  • 2025/kurdyukov: カウント賞
  • 2025/mattpep: 最も難読なオプション賞
  • 2025/ncw1: 実用エミュレータ賞
  • 2025/ncw2: 分数エミュレータ賞
  • 2025/ncw3: Unicode活用賞
  • 2025/tompng: 癒し賞
  • 2025/uellenberg: ピンポン賞
  • 2025/yang1: 複合賞
  • 2025/yang2: 魔法の言葉賞
  • 2025/yang3: INABIAF賞
    • 公式サイトで全受賞作を参照可能

参考・FAQ・公式情報

  • www.ioccc.org :公式サイト
  • Winning Entries of 2025 :2025年受賞作一覧・ダウンロード
  • FAQ :エントリのビルド・実行・修正・連絡先など詳細案内

Hackerたちの意見

ウェブサイト自体が難解で、Cソースを見つけるのが全然簡単じゃないね!

直接 https://www.ioccc.org/2025/#inventory に飛べるよ。

最初の文は、勝者のエントリーをリストしたセクションへのリンクだよ。それぞれには右上に「Cコード」のリンクがあるんだ。

本当にナビゲートが難しい。コンテストが何なのか全然わからないし、すでに知ってる前提で進んでるみたい。

ゲームボーイエミュレーターのコードもゲームボーイみたいだ。スロークラップ、これはすごい、間違いなくお気に入りの作品だよ。 https://github.com/ioccc-src/winner/blob/master/2025/ncw1/pr... 作者のニック・クレイグウッドはrcloneのクリエイターなんだ!

うわ、かっこいい!俺がCSSとPHPを打ってるのを見てるみたいだ…

楽しんでもらえてよかったよ!:-) もしどうやって作ったか知りたいなら、こちらがソースだよ: https://github.com/ncw/ioccc-gameboy そこには少しだけ難読化されていないバージョンもあるよ。これが実際に僕が作業したもので、プログラムで全ての変数名を潰してゲームボーイの形に収めたんだ。エントリーのサイズ制限が厳しかったんだよね。IOCCCのエントリーでは、空白以外の文字が2503文字まで(簡略化した表現だけど、ルールは複雑)で、合計コードサイズは4Kまでなんだ。Z80プロセッサとゲームボーイのハードウェアエミュレーターを収めるにはあまりにも少ないよ!最初はCでフルゲームボーイエミュレーターを書いたんだけど、約6000文字の空白以外の文字数だったんだ。それを2503の制限に収めるために、約100時間かけて頑張ったよ。しばらくの間、収まるかどうか不安だった。エミュレーターにテトリス(比較的シンプルなゲーム)を動かすのを目標にして、Z80エミュレーターのハーフキャリーフラグや、テトリスには必要ないゲームボーイエミュレーションのウィンドウシステムなどの機能を削除したんだ。それから、Cコードをひどく使い倒して、暗黙のintを使ったことはもう忘れられないよ。IOCCCのルールにも工夫を凝らして、ソースをチェックするCプログラムを逆解析して抜け道を探したりもした!オペレーターが1トークンとしてしかカウントされないことを発見して、それがすごく役立ったよ。サイズが小さくなったら、動かすゲームをいくつか用意しなきゃいけなかったんだ。4つ作ったよ、Z80アセンブラで書いたテストプログラム、アセンブラで書いたπ計算機、Cでgbdk-2020を使って書いた3Dの三目並べゲーム、そしてCで書いたチェスプログラム。オープンソースのゲームがエミュレーターで動くこともわかったから、できるだけダウンローダーも追加したよ。BCD算術を使ってるゲームはあまりないみたいで、意外だった!楽しいプロジェクトだったよ。

LLMが競い合うことができないのは残念だね。彼らができる難解さを考えると。

自分の経験では、LLMは多くのエントリー(自分のも含めて)をデオブファスケートするのが結構得意だったけど、かなり難解なコードを生成するのは全然ダメだった。だから、難解化は本当に人間的なアートだと言えるね---少なくとも今のところは。

フロンティアモデルをIOCCCコードで動かすのが「安全性」のせいでちょっと面倒だけど、それを回避できてもLLMはあんまり得意じゃない。コードを難解化するには、LLMが苦手な創造性と狡猾さが必要なんだ。

LLMは許可されてるよ。[0] > コードを書くために使いたいツールは何でも自由に使っていいよ。AIベースのツール、LLM(大規模言語モデル)、バーチャルコーディングアシスタント、コードジェネレーター、またはそれに類似したツール、自分のツールも含まれるよ。IOCCCの審査員は、提出した難読化されたCコードの著者があなたであれば、使用したツールに基づいて差別しないからね。[0]

そうだね、でもゲームボーイのコードをゲームボーイっぽく見せることはできないよ、頼まれない限りはね。それに、たぶんそれもうまくいかないだろうし。これがLLMと人間の違いで、だからこそこの競技は価値があるんだよね。

Hacker Newsで議論の続きを見る