IOCCC или что такое элитный код
Современным разработчикам часто нехватает чести, ума и совест... эм.. некоторого эталона, примера нереальной крутизны в программировании, к которому стоит стремиться. Именно о таком эталоне и пойдет сегодняшний рассказ.
Любая работа (даже творческая) состоит на 99% из скучной рутины и может задолбать в край, даже если вы работаете порноактером.
В ежедневном процессе разработки ПО тоже нет ничего интересного, интригующего или вдохновляющего:
однотипный, примитивныйговнокод, перекладываниескотоданных в виде JSON/XML да постоянные CRUDы.
Постоянное ковыряние в таком легко приводит в дурку к тому самому выгоранию с последующим уходом из профессии, а одним из способов подобного избежать является изучение действительно сложных и необычных проектов.
IOCCC
Кладезью таких проектов и примеров запредельной крутизны в программировании является The International Obfuscated C Code Contest — соревнование по обфускации кода на языке Си.
Это старейший конкурс на планете, позволяющий померяться уровнем в программировании и регулярно привлекающий звезд индустрии.
Если хотите посмотреть на настоящих профи, которых никогда не сможете нанять — вам сюда.
Стеба ради я отправлял ссылку выше рекрутерам, желающим найти «настоящих профессионалов», но почему-то договориться у них так ни разу и не вышло.
Конкурс IOCCC проводится с 1984 года, практически каждый год, с большим перерывом в 2006-2011.
Последний раз он проводился в пандемийный 2020й, так что видимо у нас опять задержка с выходом.
Каждый раз объявляются специальные правила проведения, ограничивающие полет фантазии авторов.
Вот так для примера выглядели правила 1984го года:
Now you have the chance to compete with the worst C hackers around by sending in your own obfuscated C program. Just follow the contest rules below: 1) the source file must be no more than 512 bytes long 2) mail your source to: hplabs!nsc!chongo no later than April 11, 1984. entries posted to the net will NOT be accepted. please give your letter the subject of: obfuscated C code contest. 3) winning entries will be posted to net.lang.c after April 12, 1894. (thats the prize folks) 4) indicate your net address in the text of your entry, this will be used to give credit unless you indicate that you want to remain anonymous. 5) entries must be of original work. (dont send anything that might upset Big Brother Bell) all entries are public domain. (who would want to own them anyway?!) Entries will be judged for: violations of structured programming, non-clarity, and use of "by the K&R book" C. (use of local mods to C are not encouraged) extra credit if they can be compiled using the 4.2BSD C compiler on our VAX 780, but dont let the lack of a 780 or 4.2 discourage you! chongo <flames about the contest will be kindly #ifdef'ed out> /\CC/\
Как видите, тут сразу оглашается лимит в 512 байт на размер исходного кода и лулзовый:
Entries will be judged for .. and use of "by the K&R book" C.
Для этой статьи я отобрал несколько работ-победителей этого конкурса с 1984 под 1996 годы, которые надеюсь покажут наконец «кто тут папа».
Заодно увидите, что на дебильных CRUDах и JSON разработка не заканчивается.
Стоит сразу заметить, что далеко не все из интересного удалось собрать или адаптировать под современные ОС, некоторые из собранных проектов падали при запуске или в процессе работы.
Поэтому ниже представлены только те работы, которые точно собираются и запускаются на конец 2024 года.
Еще некоторые авторы побеждали в IOCCC неоднократно и даже с несколькими разными проектами, в таких случаях я брал лишь одну работу победителя.
FreeBSD 14.2, gcc13 или clang
В некоторых случаях специально отключались обязательные для современного окружения проверки компилятора на ошибки и убирались устаревшие вызовы вроде gets.
Shapiro, 1985
Grand prize for most well-rounded in confusion
This program was selected for the 1987 t-shirt collection.
наводят на правильную мысль о том что перед нами нечто необычное.
Ожидания полностью оправдываются, стоит лишь взглянуть на исходный код:
#define P(X)j=write(1,X,1) #define C 39 int M[5000]={2},*u=M,N[5000],R=22,a[4],l[]={0,-1,C-1,-1},m[]={1,-C,-1,C},*b=N, *d=N,c,e,f,g,i,j,k,s;main(){for(M[i=C*R-1]=24;f|d>=b;){c=M[g=i];i=e;for(s=f=0; s<4;s++)if((k=m[s]+g)>=0&&k<C*R&&l[s]!=k%C&&(!M[k]||!j&&c>=16!=M[k]>=16))a[f++ ]=s;if(f){f=M[e=m[s=a[rand()/(1+2147483647/f)]]+g];j=j<f?f:j;f+=c&-16*!j;M[g]= c|1<<s;M[*d++=e]=f|1<<(s+2)%4;}else e=d>b++?b[-1]:e;}P(" ");for(s=C;--s;P("_") )P(" ");for(;P("\n"),R--;P("|"))for(e=C;e--;P("_ "+(*u++/8)%2))P("| "+(*u/4)%2 );}
508 байт и 3 строки (в оригинале) выдают после компиляции вот такую красоту:
Applin, 1986
Автор: Jack Applin
Как вам классический «Hello world», который одновременно компилируется как код на Си и Фортране и заодно является шелл-скриптом?
The judges were so amused by this little program that we created an award just for it.
Теперь сам код (напоминаю что это 1986 год):
cat =13 /*/ >/dev/null 2>&1; echo "Hello, world!"; exit * * This program works under cc, f77, and /bin/sh. * */; main() { write( cat-~-cat /*,'( */ ,"Hello, world!" , cat); putchar(~-~-~-cat); } /* ,)') end */
Несмотря на столь почтенный возраст, все три варианта использования до сих пор работают в современной ОС:
Pawka, 1986
The judges found this entry to be one of hardest to read without the aid of /lib/cpp
and a good editor. When run, the program asks if it is obfuscated, of all things!
Код, который желает вам всем удачного дня:
#include "stdio.h" #define xyxx char #define xyyxx putchar #define xyyyxx while #define xxyyyx int #define xxxyyx main #define xyxyxy if #define xyyxyy '\n' xyxx *xyx [] = { "]I^x[I]k\\I^o[IZ~\\IZ~[I^|[I^l[I^j[I^}[I^n[I]m\\I]h", "]IZx\\IZx[IZk\\IZk[IZo_IZ~\\IZ~[IZ|_IZl_IZj\\IZj]IZ}]IZn_IZm\\IZm_IZh", "]IZx\\IZx[I^k[I\\o]IZ~\\IZ~\\I]|[IZl_I^j]IZ}]I^n[IZm\\IZm_IZh", "]IZx\\IZx[IZk\\IZk[IZo_IZ~\\IZ~_IZ|[IZl_IZj\\IZj]IZ}]IZn_IZm\\IZm]IZh", "]I^x[I]k\\IZo_I^~[I^|[I^l[IZj\\IZj]IZ}]I^n[I]m^IZh",'\0'};/*xyyxyxyxxxyxxxyy*/ xyxx *xyyx; xxyyyx xyyyx,xyyyyx,xyyyyyx=0x59,xyyyyyyx=0x29,/*yxxyxyyyxxyyyxyy*/ xxyx=0x68;xxxyyx(){xyyyyx=0;xyyyxx(xyx[xyyyyx]){xyyx=xyx[xyyyyx++];/*xyyyxxyx*/ xyyyxx(*xyyx){xyyyx= *xyyx++-xyyyyyx;xyyyxx(xyyyx--)xyyxx(*xyyx-xyyyyyyx);/*x*/ xyxyxy(*xyyx==xxyx)xyyxx(xyyxyy);*xyyx++;}}}/*xyxyxyyyyxxyxxxyyyxyyyxyxxyyy*/
Korn, 1987
David Korn
AT&T Bell Labs
MH 3C-526B, AT&T Bell Labs
Murray Hill, NJ
07974
USA
Да это тот самый Korn, автор Korn Shell.
The Judges believe that this is the best one line entry ever received. Compile on a UN*X system, or at least using a C implementation that fakes it. Very few people are able to determine what this program does by visual inspection. I suggest that you stop reading this section right now and see if you are one of the few people who can.
И поверьте — такие судьи не ошибаются, потому что даже на конец 2024го года я не знаю людей, способных с ходу разобраться в таком коде:
main() { printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Все собирается и работает до сих пор:
Westley, 1988
Автор: Merlyn LeRoy (Brian Westley)
Best layout
несколько не передает всю гамму чувств при просмотре кода:
#define _ -F<00||--F-OO--; int F=00,OO=00;main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO() { _-_-_-_ _-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_ _-_-_-_ }
Код разумеется рабочий и спокойно собирается современными GCC и Clang:
clang westley.c -o westley gcc13 westley.c -o westley
vanb, 1989
Автор: David Van Brackle
Опять же краткая аннотация от судей:
Best one liner
не передает всю гамму эмоций от такого замечательного кода (крутите влево, все целиком не влезло):
main(Q,O)char**O;{if(--Q){main(Q,O);O[Q][0]^=0X80;for(O[0][0]=0;O[++O[0][0]]!=0;)if(O[O[0][0]][0]>0)puts(O[O[0][0]]);puts("----------");main(Q,O);}}
Код спокойно собирается в современном окружении, вот так выглядит тестовый запуск:
This program computes all proper subsets of the set of arguments passed to it. Each subset is printed with one element on each line, followed by a line of ten dashes.
PJR, 1990
Most Unusual Data Structure
будет слегка непонятным, без просмотра кода:
#include <stdio.h> #define A(a) G a(); #define B(a) G (*a)(); #define C(a,b) G a() { printf(b); return X; } typedef struct F G;A(a)A(b)A(c)A(d)A(e)A(f)A(g)A(h)A(i)A(j)A(k)A(l)A(m)A(n)A( o)A(p)A(q)A(r)A(s)A(t)A(u)A(v)A(w)A(x)A(y)A(z)A(S)A(N)void Q();struct F{B(a)B (b)B(c)B(d)B(e)B(f)B(g)B(h)B(i)B(j)B(k)B(l)B(m)B(n)B(o)B(p)B(q)B(r)B(s)B(t)B( u)B(v)B(w)B(x)B(y)B(z)B(S)B(N)void(*Q)();}X={a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p, q,r,s,t,u,v,w,x,y,z,S,N,Q};C(a,"z")C(b,"y")C(c,"x")C(d,"w")C(e,"v")C(f,"u")C( g,"t")C(h,"s")C(i,"r")C(j,"q")C(k,"p")C(l,"o")C(m,"n")C(n,"m")C(o,"l")C(p,"k" )C(q,"j")C(r,"i")C(s,"h")C(t,"g")C(u,"f")C(v,"e")C(w,"d")C(x,"c")C(y,"b")C(z, "a")C(S," ")C(N,"\n") void Q(){}main(){X=g().s().v().S().j().f().r().x().p(). S().y().i().l().d().m().S().u().l().c().S().q().f().n().k().v().w().S().l().e ().v().i().S().g().s().v().S().o().z().a().b().S().w().l().t().N();}
Вот так это выглядит в работе:
Да, все что делает это чудо — вывод знаменитой тестовой строчки для шрифтов, но блин как!
By use of pointers to functions returning a struct of pointers to functions!
Buzzard, 1991
Автор: Sean Barrett
Best Output
получен не просто так, поскольку внутри столь небольшого кода скрывается.. настоящий (ну почти) 3D-движок:
#include <stdio.h> #define X(s) (!(s&3)-((s&3)==2)) #define W while char Z[82][82],A,B,f,g=26;z(q){return atoi(q);}m(d,l){return Z[ B + X ( f + 3) * d+l *X(f+ 2 )][ A+X ( f ) * d + l* X ( f + 3 ) ] ;}int h= 0;D(p,s)char*s; {W(h>>3<p>> 3 ) {putchar('\t' ); h = ( h +8 )&~7 ;}W(h < p ){putchar(' ');++h; }(void)printf( "%s" , s ) ;h+=strlen(s);}main(x,a)char **a; { # define P(x) (x?(5-(x))*(6-(x ))/2:11) int b; { char b[256],i, j=0; FILE*F;F=fopen(x-1?a[1]:"buzzard.c","r");W( fgets( b ,256 ,F)){for(i=0;b[ i];++ i) Z[j][i ] =( b [ i ] ==' '?1:2*(b[i]==(x>2?*a[2]:'\\')));++j;}fclose (F);}A =4 ; B = 3 ; f = 1;x >3? A=z(a[3]),B=z(a[4]):0;b='\n';do{if(b=='\n' ){int y , s , d , p , q ,i;for (y=-11; y<= 11;++ y){ for(s = 1 ,d=0;s+3;s-=2){for (;d!=2 + 3 * s ; d+=s){ if(m(d,0) !=1 ){p=P (d) ;if (abs( y ) <p&& ! m ( d , 0 )||abs(y)>p)break;for (i =-p;i<p;++i)D(g+i*2,"--");D(0,"\-");break;}if(d==5)continue; p=P(d+1);q=P(d);if (abs(y) >q)continue;if (abs(y) <p)D(g-s*(2*p+1),"|");else if(m(d,s)){if (abs(y) <=p)for(i=(s==1?-q:p);i!=(s==1?-p:q); (abs(y) ),++i)D(g+2*i+(s==-1),"--");}else if (abs(y) ==p)D(g-s*(2*p+1),"|");else D(g- (abs(y) *s*2),(s==1)^(y>0)?"\\":"/");}d-=s;}puts( "");h=0;}}f+=(b=='r')-(b=='l');f&=3;if(b=='f'){if(!m(1,0))continue; A+=X(f);B+=X(f-1);}}W((b=getchar())!=-1&&m(0,0)==1);return 0;}
Вот так это выглядит в работе:
IMC, 1992
Ian Collier
Oxford University
The Queen's College
High Street
OXFORD
OX1 4AW
ENGLAND
Best Output
был выдан этому шедевру не просто так, но для начала исходный код:
#include <stdio.h> #include <malloc.h> #define ext(a) (exit(a),0) #define I " .:\';+<?F7RQ&%#*" #define a "%s?\n" #define n "0?\n" #define C double #define o char #define l long #define L sscanf #define i stderr #define e stdout #define r ext (1) #define s(O,B) L(++J,O,&B)!=1&&c>++q&&L(v[q],O,&B)!=1&&--q #define F(U,S,C,A) t=0,*++J&&(t=L(J,U,&C,&A)),(!t&&c>++q&&!(t=L(v[q],U,\ &C,&A)))?--q:(t<2&&c>++q&&!(t=L(v[q],S,&A))&&--q #define T(E) (s("%d",E),E||(fputs(n,i),r)) #define d(C,c) (F("%lg,%lg","%lg",C,c))) #define O (F("%d,%d","%d",N,U),(N&&U)||(fputs(n,i),r))) #define D (s("%lg",f)) #define E putc C G=0, R =0,Q,H ,M,P,z,S =0,x=0 , f=0;l b,j=0, k =128,K=1,V,B=0,Y,m=128,p=0,N =768,U=768,h[]={0x59A66A95,256 ,192,1,6912,1,0,0},t,A=0,W=0,Z=63,X=23 ;o*J,_;main(c,v)l c;o**v;{l q=1;for(;;q< c ?(((J=v[q])[0]&&J[0]<48&&J++,((_= *J)<99|| _/2== '2'||(_-1)/3=='\"'||_==107||_/05*2==','||_ >0x074)?( fprintf(i,a,v[q]),r):_>0152?(_/4>27?(_&1?( O,Z=N,X=U): (W++,N=Z,U=X)):_&1?T(K):T(k)):_>103?(d(G, R ),j=1):_&1? d(S,x):D,q++),q--,main(c-q,v+q)):A==0?(A= 1,f||(f=N/4.),b=(((N-1)&017)<8),q=(((N+7)>>3)+b)*U,(J=malloc(q) )||(perror("malloc"),r),S-=(N/2)/f,x+=(U/2)/f):A==1?(B<U?(A=2,V = 0,Q=x-B/f,j ||(R=Q),W&&E('\n',e),E(46,i)):(W&&E('\n', e),E('\n',i ),h[1]=N,h[2]=U,h[4]=q,W||(fwrite(h,1,32, e),fwrite (J,1,q,e)),free(J),ext(0))):A==2?(V<N?(j? (H=V/f +S,M=Q):(G=V/f+S,H=M=0),Y=0,A=03):((m&0x80 ) ||(m=0x80,p++),b&&(J[p++]=0),A=1,B++)):((Y <k&&(P=H*H)+(z=M*M)<4.)?(M=2*H*M+R,H=P-z +G,Y++):(W&&E(I[0x0f*(Y&K)/K],e),Y&K?J [p]&=~m:(J[p]|=m),(m>>=1)||/*/ (m=128,u--),A==6?ext(1):B<u . e=3,l=2*c*/( m =0x80, p++),V++ ,A=0x2 ) )); }
Угу, оно компилируется до сих пор!
This is a Mandelbrot/Julia drawer. Normally it produces a monochrome Sun-format raster file.
К сожалению мне не удалось отобразить данный формат в современной ОС, поэтому использовался параметр -text для генерации ANSII варианта.
schnitzi, 1993
Obfuscated Intelligence Award
#include <stdio.h> #define iii\ ( I ) if ( ii(I,6\ ) )I [ strlen(I ) -1]=!1 int ii(ll,lll ) char*ll; { char *l="\"; !l ? 1.1 : l; l,printf(";int l1=1-/*+&|"); &+|-*/1,li=!1;while ( lll>l1 ) li|=! ( l[3*l1+++3 ] -ll[strlen ( ll)-1] ) ;return ( li ) ;}main ( ll,lll ) char*lll[];{char l1 [ 111][21],li1[111][21 ] ,il1[111],i1l [ 111 ] ;int lli,l11,l1l,li/* ( */,ll1,il,l;FILE*f;if(ll-2 ) {f=fopen ( lll[1],"r" ) ;lli=l=ll1=il=!1;while ( fscanf(f,"%s",l1[lli] ) +1){li=ii ( l1[lli],3 ) ;iii ( l1[lli] ) ;l1l=l11=!1;while ( l1l>-ll ) {iii ( lll[-l1l] ) ;strcasecmp ( lll[-l1l--],l1[lli] ) || ( l11=++il ) ;}l11||lli++;if ( li ) {if ( ll1<il ) {ll1=il;l1l=l=lli;while ( l1l-- ) strcpy ( li1[l1l],l1[l1l] ) ;}il=lli=!1;}}if ( !ll1 ) puts ( " Beats me." ) ;else if ( !l ) puts ( " Yes." ) ;else{*li1[l1l=!1]=toupper ( *li1[!1] ) ;while ( l>l1l ) printf ( " %s",li1[l1l++] ) ;puts ( "." ) ;}}else{sprintf ( il1,"cat %s;echo",lll[1] ) ;system ( il1 ) ;}printf ( "\n? " ) ;fgets ( il1, sizeof(il1),stdin ) ;sprintf ( i1l,"%s %s %s",lll[!1 ] ,lll[1],il1);system ( i1l); }
ставят под сомнение все ваши знания об AI.
Вот так это выглядит в работе:
This program answers questions about paragraphs of text posed to it in English. It is written in C. Mark Schnitzius is the author of this program. The Loch Ness monster has been captured. Elvis is alive. Hostler was a woman. The NASA moon landings were clearly faked.
I wanted to write a program that would read in a text file in
natural language (such as English) and answer questions about that
text file. I thought this might be a complicated task, and I was
right — it took me over 800 bytes. Of course, it doesn't always
work, but that's AI for you.
Horton, 1994
Mark Horton
AT&T Bell Labs
Rm 1H-117
Судя по сайту автора, с 1994го года многое поменялось и старина Марк стал Аннушкой и вообще плотно угорел по транс-тематике.
Best Utility
в какой-то мере правдивый, если вам надо рисовать графики в консоли с помощью ANSII-символов.
Код к сожалению с немного поехавшим форматированием, оригинал можно увидеть вот тут:
##define S(r, c) f[r][c] = 1; char f[96][160]; main(argc, argv) char **argv; { double x, y, atof(); int r , c , bi , bj , i ; for (i=10; i<=80 ; i ++) { S(i, 18); S(i, 152) ; } for (i=18; i<=152; i++) { S(10, i); S(80, i) ; } for (x=-20; x<=10; x += .05) { y =atof(argv[1]) * x * x * x + atof(argv [ 2 ])*x*x+atof(argv[3]) * x + atof(argv[4]) ; r = (500 - y)*.07+10 ; c =(x+20)*4.33333 + 20 ; if(r>=10 && r<=80 && c >= 20 && c<=150) S ( r, c); } for ( r =0; r < 24; r ++ ) for (c=0; c <80; c++) { bi = 4 *r;bj=2*c; i=(((f[bi][bj]<< 3 ) +(f[bi+1][bj]<<2)+(f[bi+2][bj]<<1)+(f[bi + 3 ][bj]<<0))*16+ (f[bi][bj+1]<<3)+( f [ bi+1][bj+1]<<2)+(f[bi+2][bj + 1 ]<<1)+(f[bi+3][bj+ 1 ] <<0)+1)*(c<79 ) ; putchar ( "\n ..,.;:j'::;';!|._:,;;;j/;;;jjjj.,-,r<jq/;I;/|I|,,rx///d///d///d.:\\;\ -=vq':<|':++;;>;==gg':SS///+:\\\\\\r<wq/<64//d+lL+by[pg/</6///+`::;`\\\\\ \\\"::;`\\YT;;;;`2>\\:=;;??]]:;;;>2>\\F;O;7?]7;;;;?2>b;;;;??]#'\\\\\\`\\\ \\\\''<5\"\"Vq;\\\\\\`=\\\\''55\"?ggILLLD\\bfF[[[P?#M|||||#+#T[FFP?PM'" [i]); } }
Результат работы выглядит как-то так:
CDUA, 1995
Carlos Duarte
Instituto Superior Tecnico
Largo da Igreja, 5 R/C DTo
Damaia
2720 Amadora
Portugal
#define r return char*u0="<RET> to begin... ",*u1="Already been here!",*u2="Found a wall! \ ",*u3="Walking... ",*u4="Finished. ",*u5="Going back..\ . ",*o="\033[23;1HDone!!\n",*x="\033[2J",*y="\033[1;1H",*z="\033[%d;%\ dH%c",*w="\033[1;1H%s",*v="\033[%d;%dH%c\033[%d;%dH%c\033[%d;%dH%c",b[1841 ];int c,d,e,f,g;typedef int(*h)();h i,j,k,l,m,n;int printf(),srand(),rand( ),time(),getchar();int main(int a){i=printf,j=srand,k=rand,l=time,m=getchar, n=main;if(!c)for(j(l(0)),g=a=1000,--d;++d<1840;b[c=d]=" #\n"[d%80==79?2:d/80 &&d%80&&d/80-22&&d%80-78]);if(!(c-1839))++c,i("%s%s%s",x,y,b);k:if(!(c-1840) &&(b[a+2]+b[a-2]+b[a+160]+b[a-160]-4*' ')){while(b[a+(f=(e=k()%4)?e-1?e-2?-1 :1:-80:80)*2]!='#');b[a]=b[a+f]=b[f+a+f]=' ';i(v,a/80+1,1+a%80,' ',(a+f)/80+ 1,1+(a+f)%80,' ',(f+a+f)/80+1,1+(f+a+f)%80,' ');n(f+a+f);goto k;}else if(!(g -a))c=1,a=162,i(w,u0),m();if(c-1){}else r b[a]!=' '?(i(w,b[a]=='.'?u1:u2),0) :(b[a]='.',i(w,u3),i(z,a/80+1,1+a%80,'.'),a==1676?(i(w,u4),i(o),1):n(a+1)||n (a+80)||n(a-80)||n(a-1)?1:(b[a]=' ',i(w,u5),i(z,a/80+1,1+a%80,' '),0));r 0;}
Код выше будучи скомпилированным, генерирует лабиринт 80x80 с помощью ANSII-символов:
А затем, по нажатию <Enter> еще и проходит его:
Jonth, 1996
Автор: Jon Thingvold
University of Oslo
Gaustadveien 10B
N 0372 Oslo
Norway
Best X11 Entry
#define O B F U S C A T E D #define I 8;}t(p){r(p?W:o);XClearWindow(V,m);}main(i,f)char**f;{M((T(h=f), #define K Y(o,XMapRaised(V,e);)x=3;x--;)for(y=3;y--;r(G))XMapRaised(V,R[D] #define N z(x+i,(z(H-x-i,x),x)))x<i||z(x-i,x)|z(H-x+i,x)Y(W,)l=k;l>20&&l>x #define XIMOfIC Z;XID(*w)()=XCreateWindow,m,e,o[2],W[2],G[2],R[2][O]);}GC*g #define E (++D)));}r(XID*z){XSetWindowBackgroundPixmap(V=d[D],m=R[D][x][y],z[ #define L ;XStoreName(V,e=w(V,RootWindow(V,s),0,0,152,152,2,0,1,0,0,0),"II"+D #define B 3][3];Display*V,*d[2];char**h,k=25,b[2500],H=50,D,s,x,y,i;T(){float #define S +k),z(k-P=w(V,e,H*x,H*y,H,H,1,0,1,0,2048,&c));}XEvent J;M(){XFlush( #define Y(z,y) ;for(z[D]=XCreatePixmapFromBitmapData(Q,x=0,H*H);x<H;x++)y for( #define A x][y]&&!b[x+k*y]++?t(D),t(!(D^=1)):D);M();}z(x,y){b[x/8+y*7]|=1<<x%I #define P x,y)-z(y,x+k)+z(y,k-x)*z(x+k,y=H-y),z(k-x,y),z(y,k-x),z(y,k+x)K[x][y] #define Q V,e,b,H,H,BlackPixel(V,s),WhitePixel(V,s),DefaultDepth(V,s)),memset(b #define C d[!D]);x=3;for(XNextEvent(V,&J);x--;)for(y=3;y--;J.xany.window==R[D][ #define F l;XSetWindowAttributes c;s=XDefaultScreen(V=d[D]=XOpenDisplay(*(h+=!! #define U *h)))L)Y(G,)i=c.event_mask=4;i--;x+i>H||N;l-=.5)z(x+k,y=sqrt(l*l-x*x) #include <math.h> #include <X11/Xlib.h>
Внутри которого скрываются самые настоящие «крестики-нолики», еще и в графическом исполнении(!):
В 1996м была еще одна удивительная работа, которую я не могу не описать.
Huffman, 1996
Ken Huffman
Applied Innovation Inc
5800 Innovation Dr.
Dublin, OH 43016
USA
<http://www.huffmancoding.com>
huffmancoding@gmail.com
Да, этот Ken Huffman — племянник создателя Huffman Coding, который использовали в своей работе большинство разработчиков.
Код, который я имел наглость немного поправить для сборки в новом Clang:
#define x char #define z else #define w gets_s #define r if #define u int #define s main #define v putchar #define y while #define t " A?B?K?L?CIF?MSP?E?H?O?R?DJG?NTQ?????U?V?????X???????Z????W??Y??" s ( ) { x* c , b[ 5 * 72 ]; u a, e , d [ 9 *9 *9 ] ; y (w ( b, sizeof(b)) ){ r ( 0 [ b] -7 * 5 ) { c = b ; y ( (* c - 6 * 7 )* * c )c = c+ 1 ; r (( -0 ) [ c ] && w ( b + 8 * 5* 3 , sizeof(b) ) && w (b +8 *5 * 6, sizeof(b)) ) { a = 0; y ( a [ b ] ) { a [ d ] = ! ! ( a[ b] - 4 *8 ) ; a = a + 1; } y (a < 8 * 5 * 3 ) d [ ( a ++ ) ] = 0 ; a = 0; y( b [ a + 8 *3 * 5 ] ) { d [ a ] = a [ d] + ! !( b[ a+ 40 * 3 ] -4 * 8) * 2 ; ++ a ; } a = 0 ; y ( a [ b + 6 * 40 ] ) {a [d ] += ! ! ( b[ a + 5 * 6 * 8 ] - 4 * 8 ) * 4; a = a + 1 ;} a= 0; y (a <3 *8 *5 ) { r ( a [ d ] ) { e = 1 ; y ( e[ a + d] ){ * ( d+ a+ e ) = a[ d +e - 1] +( d [ a + e ] << ( 3* e) ) ;e = e + 1 ;} a = a + e - 1 ; v( !! ( * ( d+ a) % ( 64 ) - 12 * 5 ) + ( e > 4 ) ?t [ e >2 ? 2 :a [ d ] ] :6 * 8 +( t [ d[ a ]/ 8 /8 ] -4 ) %( 10 ) ) ; r( ! (2 [a + d] + 3 [d + a ] ) ) v ( 4 * 8 ) ; } a = a + 1 ; } v (5 * 2 ) ; } z {c =b ; e = 0 ; y (* c ) { * c += - (* c > 8 * 12 ) * 32 ; a = 8 * 8 ; r (* c >= 48 &&* c<8 *8 -6) {*c =( * c + 1 ) %( 5 * 2 ) + 65 ;y( --a >0 &&* c- a[ t] ); d[ (e ++ )] =4 ;( * ( d + (e ++) ))= 07 ;}z y(a -- >1 &&* c- t[a ]); d[ ( e = e + 1) - 1] =a %8 ;y (a /= 8) d[ (e ++ ) ] = a% 8 ; ++ c ; * ( e ++ +d ) =0 ;} -- e ;r ( e >0 ) {a = 1 ; y ( a< 8 ) { c = b ;y ( c <e +b ) { v ( * ( c - b + d )& a? 6 *7 :8 * 4 ) ; c ++ ;} a= a + a ; v ( 2* 5) ; } v ( 5* 2 ) ; }} }} }
Теперь как это выглядит в работе:
This filter program is really not obfuscated code. It compiles cleanly
with an ANSI C compiler and comes with user documentation that even a
blind person could read.
The program is a bi-directional filter with the output of the program
suitable for its input. The output of this program, when used as input,
undoes the original program filtering.
This program accepts any alphanumeric text that has lines less than 100
characters. The user is encouraged to use the program's source as input
to the executable.
Эпилог
Вообще умение решать максимальное количество проблем минимальными средствами — признак профессионала в любом деле, далеко не только в ИТ.
If it ain’t broke, don’t fix it
абсолютно точно применимо и к программированию — по-настоящему крутые программы как видите спокойно собираются и работают до сих пор.