加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

国际C语言混乱代码大赛(IOCCC, The International Obfuscated C Code Contest)

(2011-04-26 08:58:21)
标签:

竞赛

ioccc

c语言

it

IOCCC

国际C语言混乱代码大赛简介

国际C语言混乱代码大赛(IOCCC, The International Obfuscated C Code Contest是一项年度竞赛,自1984年以来一直延续至今 ,每年举办一次(1997年、1999年、2002年、2003年和2006年例外),目的是写出最有创意的最让人难以理解的C语言代码。它由Landon CurtLarry BasselUSENET上举办,冬天接收参赛作品,作品从线上提交,春天评判,在夏天的Usenix会议上公布获胜者。作品审核是基于滥用混乱代码的程度(以及创造性的滥用),作品通过最后一轮审核的会被归成其特别的一类以示嘉奖,并且发表在官方IOCCC网站。

大赛通常具有10种类型的获胜者:对规则的最奇怪的滥用最具创意的源代码布局最优秀的单行代码等等。综合性的最佳上镜奖授予最难阅读、行为最古怪(但能运行)的c程序的作者。

 

比赛网址

http://www.ioccc.org

 

编辑本段比赛宗旨

1、在遵守下面规则的前提下,写出最混乱,最让人看不明白的C程序。

2、用讽刺的手法显示编程风格的重要性。

3、用反常的代码加重编译器的负担。

4、演示C语言的不让人注意的地方。

5、为糟糕的C代码提供避难所。

英文:

Goals of the Contest:

To write the most Obscure/Obfuscated C program under the rules below.

To show the importance of programming style, in an ironic way.

To stress C compilers with unusual code.

To illustrate some of the subtleties of the C language.

To provide a safe forum for poor C code.

代码举例

1987年,贝尔实验室的David Korn 提交了下面这个获奖作品:

main() { printf( &unix["\021%siz\012\0"], (unix)["have"] + "fun" - 0x60); }

能看出它要打印什么吗?^_^它要打印的东西与have fun 没有任何关系!

来自伦敦大学的Diomidis Spinellis只用了大约1500个字符就完成了一个BASIC解释器,该程序附有一个指导手册,解释了如何使用解释器,并提供了一个程序实例!

===============分割线======================= ian phillipps1988年的作品,搞C的能读懂这段代码就是天才

#include <stdio.h>

main(t,_,a)char *a;

{return!0<t?t<3?main(-79,-13,a+main(-87,1-_, main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13? main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?main(_,t, "@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#\ ;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l \ q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# \ ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' \ iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \ ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# \ }'+}##(!!/") :t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a=='/')+t,_,a+1) :0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a, "!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有