国际
c语言混乱代码大赛(IOCCC, The International Obfuscated C Code Contest)是一项旨在展示C语言语法模糊性和创意的国际编程竞赛。自1984年起,除了1997年、1999年、2002年、2003年和2006年的几年外,每年都会举行。参赛选手的任务是在不超过4千字节的空间内编写最具创意且最难理解的C语言代码。
IOCCC由兰登·克特·诺尔(Landon Curt Noll)和拉里·贝索(Larry Bassel)于1984年创立,当时他们在国家半导体公司的Genix移植小组工作。比赛的想法源于两人对比修复一些糟糕代码的经历,特别是对Bourne shell和buggy版本的finger的修改。IOCCC曾一度中断,但在2011年恢复举办。
每一年,IOCCC会在其官方网站上公布当年的比赛规则,规则每年都有所变化,并附有指南,以传达规则的精神。这些规则往往包含精心设计的漏洞,鼓励参赛者寻找并利用这些漏洞。比赛中出现的一些规则漏洞可能会导致下一届比赛规则的调整。
参赛作品经常采用奇特或非传统的技术手段,如利用C预处理器实现超出其预期功能的操作,或是避免使用常见的
c语言构造,转而采用更加晦涩的方式达成同样的目的。参赛者的贡献包括将代码格式化为图形或文本形式,类似于ASCII艺术,以及使用预处理器使代码难以阅读等。有些作品甚至会导致下一年度比赛规则的变化。
在有限的代码空间内,参赛者能够完成复杂的任务。例如,一位参赛者在2004年的大赛中提交了一个操作系统。此外,还有计算
圆周率和飞行模拟器等例子,展示了参赛者如何在极小的代码空间内实现复杂的功能。