澳门新葡萄京官网注册 ,第20届国际C语言混乱代码大赛(IOCCC)于2月5日结束,获胜者名单已正式公布,获奖作品的源代码尚未发布,主办方表示将在2月底或3月初释出。IOCCC是一项国际编程赛事,目的是写出最有创意的最让人难以理解的C语言代码。

大家可能一直觉得代码简洁易懂才是我们所膜拜的,但恰恰有个组织却在比赛谁的代码可读性更差……它就是IOCCC……

第22届国际C语言混乱代码大赛公布了获胜者的程序源代码。IOCCC要求参赛者写出最有创意的最让人难以理解的C语言代码,并限制在4
Kb以内
,但今年的许多入选作品却利用了大小检查程序中的bug。获胜者多数是IOCCC大赛的常客,其中来自日本的有4位,美国8位,中国1位。获奖作品中最令人感兴趣的是Adrian
Cable的Largest small system emulator,用了4043个字节模拟出了80年代的IBM
PC,包括Intel 8086/186 CPU、1MB
RAM、3.5英寸软盘控制器……代码字节数比它模拟出的8086/186
CPU的晶体管数量还要少,源码如下:

今年的获胜者中包括了1名英国人,1名德国人,6名美国人(其中一人可能是华裔Don
Yang),1名芬兰人,1名以色列人,1名墨西哥人,3名日本人和1名中国人(Hou
Qiming,作品是科学计算器)。

首先科普下IOCCC,其英文全称是“The International Obfuscated C Code
Contest”,中文名为“国际C语言混乱代码大赛”。IOCCC是一项国际编程赛事,从1984年开始,每年举办一次(1997年、1999年、2002年、2003年和2006年例外),比赛目的是写出最有创意的最让人难以理解的C语言代码,并且要求代码限制在4
kilobytes以内。

#include "SDL.h"#define $ for(O=9#define CX M+=(T%3+2*!(!T*t-6))#define x ,A=4*!T,O=t,W=h=T3?u(Q?p:D(A+3),D(A),D(A+1)[i]+D(A+2)*g+):K(t),U=V=K(a),o?U=h,W=V:V,#define C 8*-~L#define Z short#define y a(Z)Y[++O]#define B ),a--||(#define _ ),e--||(#define V(I,D,E)(O=a(I)h[r])!(A=(D)(V=(1[E+L]16)+*i)/O,A-(I)A)?1[E+L]=V-O*(*E=A):H(0)#define i(B,M)B(o){return M;}#define R(O,M,_)(S=L?a(I Z)O:O,N=L?a(I Z)O M(f=a(I Z)_):(O M(f=a(I n)_)))#define T(_)R(r[u(10,L=4,--)],=,_)#define u(a,r,T)16*i[a]+(I Z)(T i[r])#define a(_)*(_*)#define L(_)M(W,_,U)#define M(S,F,T)R(r[S],F,r[T])#define A(_)(i[L=4]+=2,R(_,=,r[u(10,4,-2+)]))#define c(R,T)(1[u=19,L+T]=(N=a(R)h[r]*(R)*T)16,*i=N,G(F(N-(R)N)))#define h(_)(1(L?a(Z)_:_)C-1)#define I unsigned#define n char#define e(_)v(F(40[L(_##=40[E]+),E]N==S|_ N_(int)S))I n t,e,l[80186],*E,m,u,L,a,T,o,r[121],X,*Y,b,Q=0,R=0;I Z*i,M,p,q=3;I*localtime(),f,S,kb=0,h,W,U,c,g,d,V,A;N,O,P=983040,j[5];SDL_Surface*k=0;i(K,P+(L?2*o:2*o+o/47))i(D,r[a(I)E[259+4*o]+O])i(w,i[o]+=~(-2*47[E])*~L)i(v,(z((f^=S^N)16),G(N-S1(40[E]^fC-1))))J(){V=61442;$;O--;)V+=40[E+O]D(25);}i(H,(46[u=76,J(),T(V),T(9[i]),T(M),M(P+18,=,4*o+2),R(M,=,r[4*o]),E]=0))s(o){$;O--;)40[E+O]=11D(25)o;}i(BP,(*i+=262*o*z(F((*E15)9|42[E])),*E=15))i(SP,(w(7),R--1[i]o?R++,QQ++,M--:0))DX(){$,O*=27840;O--;)O[(I*)k-pixels]=-!!(17-O%8r[O/2880*90+O%720/8+(88+952[l]/128*4+O/720%413)]);SDL_Flip(k);}main(BX,nE)n**nE;{9[i=E=r+P]=P4;$;q;)j[--q]=*++nE?open(*nE,32898):0;read(2[a(I)*i=*j?lseek(*j,0,2)9:0,j],E+(M=256),P);$;Y=r+16*9[i]+M,Y-r;Q|R||kb46[E]KB)--64[T=1[O=32[L=(X=*Y7)1,o=X/21,l]=0,t=(c=y)7,a=c/87,Y]6,g=~-T?y:(n)y,d=BX=y,l],!T*t-6T-2?T-1?d=g:0:(d=y),QQ--,RR--x(O=*Y,O=u=D(51),e=D(8),m=D(14)_ O=*Y/27,M+=(n)c*(L^(D(m)[E]|D(22)[E]|D(23)[E]^D(24)[E]))_ L=*Y8,R(K(X)[r],=,c)_ L=e+=3,o=0,a=X x a=m _ T(X[i])_ A(X[i])_ a2?M(U,+=1-2*a+,P+24),v(f=1),G(S+1-a==1C-1),u=u4?19:57:a-6?CX+2,a-3||T(9[i]),a2T(M),a1M(P+18,=,U+2),R(M,=,U[r]),u=67:T(h[r])_(W=U B u=m,M-=~L,R(W[r],,d)B 0 B L(=~)B L(=-),S=0,u=22,F(NS)B L?c(I Z,i):c(I/**/n,E)B L?c(Z,i):c(n,E)B L?V(I Z,I,i):V(I n,I Z,E)B L?V(Z,int,i):V(n,Z,E))_++e,h=P,d=c,T=3,a=m,M--_++e,13[W=h,i]=(o|=!L)?(n)d:d,U=P+26,M-=~!o,u=17+(m=a)_(a=m B L(+=),F(NS)B L(|=)B e(+)B e(-)B L(=)B L(-=),F(NS)B L(^=)B L(-),F(NS)B L(=))_!L?L=a+=8 x L(=):!o?Q=1,R(r[p=m x V],=,h):A(h[r])_ T=a=0,t=6,g=c x M(U,=,W)_(A=h(h[r]),V=m?++M,(n)g:o?312[E]:1)(a4?V%=a/2+C,R(A,=,h[r]):0,a1?R(h[r],=,V):R(h[r],=,V),a3?u=19:0,a5?0:F(SV-11)B R(h[r],+=,AC-V),G(h(N)^F(N1))B A=(1V)-1,R(h[r],+=,AC-V),G(h(N*2)^F(h(N)))B R(h[r],+=(40[E]V-1)+,A1+C-V),G(h(N)^F(A1C-V))B R(h[r],+=(40[E]C-V)+,A1+C-V),F(A1V-1),G(h(N)^h(N*2))B G(h(N)^F(h(SV-1)))B G(h(S))B 0 B VC||F(A),G(0),R(h[r],+=,A*=~((1C)-1V)))_(V=!!--1[a=X,i]B V=!m[E]B V=m[E]B 0 B V=!++1[i]),M+=V*(n)c _ M+=3-o,L?0:o?9[M=0,i]=BX:T(M),M+=o*L?(n)c:c _ M(U,,W)_ L=e+=8,W=P,U=K(X)_!R||1[i]?M(m2?u(8,7,):P,=,m1?P:u(Q?p:11,6,)),m1||w(6),m2||SP(1):0 _!R||1[i]?M(m?P:u(Q?p:11,6,),-,u(8,7,)),43[u=92,E]=!N,F(NS),m||w(6),SP(!N==b):0 _ o=L,A(M),mA(9[i]),m2?s(A(V)):o||(4[i]+=c)_ R(U[r],=,d)_ 986[l]^=9,R(*E,=,l[m?2[i]:(n)c])_ R(l[m?2[i]:(n)c],=,*E)_ R=2,b=L,QQ++_ W-U?L(^=),M(U,^=,W),L(^=):0 _ T(m[i])_ A(m[i])_ Q=2,p=m,RR++_ L=0,O=*E,F(D(m+=3*42[E]+6*40[E])),z(D(1+m)),N=*E=D(m-1)_ N=BP(m-1)_ 1[E]=-h(*E)_ 2[i]=-h(*i)_ 9[T(9[i]),T(M+5),i]=BX,M=c _ J(),T(V)_ s(A(V))_ J(),s((V~m)+1[E])_ J(),1[E]=V _ L=o=1 x L(=),M(P+m,=,h+2)_++M,H(3)_ M+=2,H(cm)_++M,m[E]H(4)_(c=m)?1[E]=*E/c,N=*E%=c:H(0)_*i=N=mE[L=0]+c*1[E]_*E=-m[E]_*E=r[u(Q?p:m,3,*E+)]_ m[E]^=1 _ E[m/2]=m1 _ R(*E,,c)_(a=c B write(1,E,1)B time(j+3),memcpy(r+u(8,3,),localtime(j+3),m)),a2?*E=~lseek(O=4[E][j],a(I)5[i]9,0)?(a?write:read)(O,r+u(8,3,),*i):0:0),O=u,D(16)?v(0):D(17)G(F(0)),CX*D(20)+D(18)-D(19)*~!!L,D(15)?O=m=N,41[43[44[E]=h(N),E]=!N,E]=D(50):0,!++q?kb=1,*l?SDL_PumpEvents(),k=k?k:SDL_SetVideoMode(720,348,32,0),DX():k?SDL_Quit(),k=0:0:0;}i(F,40[E]=!!o)i(z,42[E]=!!o)i(G,48[E]=o)

(文/solidot)    

IOCCC是由蓝登·克特·诺尔(Landon Curt Noll)与拉里·贝索(Larry
Bassel)在1984年受雇于国家半导体(National
Semiconductor)的Genix程序移殖事业群时开始的。比赛的点子是来自他们俩比较彼此有关于它们得修正的某些写得很烂代码的笔记。

IOCCC主页IOCCC获奖者名单源代码:#2013

作品从联机提交,并经过好几回合的裁判的审核。作品审核是基于滥用混乱代码的程度(以及创造性的滥用)。作品通过最后一轮审核的会被归成其特别的一类以示嘉奖,例如“最滥用C预处理器”或者“最古怪的行为”,并且发表在官方IOCCC网站。作品没有通过者会被删除或遗忘;该赛事主办声明:作品被声明在IOCCC网站是竞赛的锦标。

第21届国际C语言混乱代码大赛(IOCCC)于9月30日公布了获胜者名单。获胜者的源代码也已正式发布。其中最有用混乱代码是中国程序员Qiming
HOU(他也是20届IOCCC的获奖者之一)的语法高亮器,其他获奖作品包括Don
Yang(同是20届IOCCC的获奖者)的 Encodes text as a C program
等。获胜者包括1名法国人,1名韩国人,5名美国人,1名比利时人,1名以色列人,1名英国人,4名日本人和1名中国人。

下面罗列几份获奖代码给大家仰视下~~~

最佳短程序奖:韩国 Seonghoon Kang

最强大功能奖:美国 John Tromp

最具隐蔽性奖:美国 Don Yang(看这名字像华裔)

最有用混乱代码奖:中国
侯启明(候大神也是20届IOCCC的获奖者之一)其中有一句暴露了他的宅男本性……“跟我签订契约成为魔法少女吧!”

铜奖作品 最佳Cocoa应用:美国 Daniel Vik

银奖作品 最基础C语言应用 :日本 Tsukasa Hamano

IOCCC每届获奖源代码可到这里查看

我相信在商业化开发过程中,这些编程风格和代码是不被推崇的,但这些代码所蕴含的逻辑思维和编程功底才是我们需要学习的!