国际C语言混乱代码大赛(IOCCC,The International Obfuscated C Code Contest)第29届获奖作品于近日揭晓。这项自1984年开始的编程竞赛,每年都能吸引全球最疯狂的代码爱好者提交那些"匪夷所思"的程序——它们能跑,但几乎没人能看懂。

https://www.ioccc.org/2025/
今年的参赛作品数量和质量都接近历史最高水平。IOCCC28因为4年停办后首次重启,作者们有充足时间打磨作品,使得提交质量异常高;而IOCCC29作为恢复后的第二届,参赛数量与去年持平,质量依然保持在高位。裁判认为,这可能与网站设计的改进、社交媒体曝光增加、以及作者们借鉴往年获奖作品的思路有关。
三位选手完成帽子戏法
本届比赛出现了罕见的"帽子戏法"——三位作者各自获得三项获奖作品:Yusuke Endoh(endoh1、endoh2、endoh3)、Nick Craig-Wood(ncw1、ncw2、ncw3)、Don Yang(yang1、yang2、yang3)。
Yusuke Endoh是日本著名的代码混淆大师,这是他连续第三次完成帽子戏法。Nick Craig-Wood则来自英国,Don Yang来自美国。三人的作品覆盖了从quine到模拟器的多个类别。
台湾作者首次获奖
本届比赛还迎来了历史上首位来自台湾的获奖作者:jingp49。他的作品"Dr. WHO sequence"获得了"Who won award"奖项。这是IOCCC历史上又一个里程碑式的时刻,标志着这项赛事在全球的覆盖范围进一步扩大。
亮点作品一览
部分值得关注的作品包括:
2025/cable — "Best imaginary emulator":一个Subleq计算机模拟器,Subleq是一种极简的汇编语言,整个指令集只有一条SUBLEQ指令。
2025/cesmoak — "Retro space award":黑洞打孔卡Fortran代码。将Fortran程序写成黑洞卡片的样子,用极其晦涩的方式实现计算。
2025/endoh3 — "Most resilient":一个patch/diff quine。程序本身是一个补丁,运行后会生成一个打补丁后的完整程序。
2025/ncw1 — "Best real emulator":GameBoy模拟器。一个完整运行的GameBoy掌机模拟器,能实际运行GameBoy游戏卡带。
2025/tompng — "Most soothing":海洋声音生成器。生成海浪和海底环境声音的程序,用纯C代码实现自然界声音的仿真。
2025/uellenberg — "Ping pong prize":Quine pong。一个既是quine又是pong游戏的程序——它运行起来是一个弹球游戏,而它的源代码打印出来就是它本身的描述。
2025/yang2 — "Most magical word":Zoltraak编码。Zoltraak是一种极简的编程语言,作者用C代码实现了一个Zoltraak解释器。
有趣挑战
今年的裁判评语中新增了"有趣挑战"(Fun challenge)环节。裁判鼓励参赛者在理解程序工作原理后,尝试完成附加任务——有些要求改造prog.c文件,有些则要求解释某些行为。裁判目前正在改进这些挑战的展示方式,敬请期待。
下一届比赛
IOCCC30计划于2026年底开放参赛,预计持续到2027年第一季度末。裁判团队在IOCCC29结束后将进行文档整理工作,并计划在公布获奖者后休假一段时间。
关于编译和运行
裁判特别提醒:某些C编译器可能无法正确编译这些获奖作品,建议使用更新版本的clang或gcc。如果遇到编译问题,可以参考FAQ中的"Compiling IOCCC entries"和"Problems compiling entries"页面。
IOCCC的魅力在于:这些程序不仅能编译运行,而且其工作方式超出了普通程序员的想象。理解它们需要花费大量时间——但正是这种对代码极限的探索,让这个比赛持续了40多年。