rsalz@bbn.com (Rich Salz) (08/03/88)
Submitted-by: Landon Curt Noll <chongo@uts.amdahl.com> Posting-number: Volume 15, Issue 108 Archive-name: ioccc/part04 # This is a shell archive. Remove anything before this line, then # unpack it by saving it in a file and typing "sh file". (Files # unpacked will be owned by you and have default permissions.) # # This archive contains: # # ./1985/Makefile ./1985/README ./1985/applin.c ./1985/applin.hint # ./1985/august.c ./1985/august.hint ./1985/lycklama.c # ./1985/lycklama.hint ./1985/rules ./1985/shapiro.c ./1985/shapiro.hint # ./1985/sicherman.c ./1985/sicherman.hint echo x - ./1985/Makefile sed -e 's/^X//' > "./1985/Makefile" << '//E*O*F ./1985/Makefile//' X# %W% %G% %U% X# X# 1985 makefile X XSHELL=/bin/sh XWINNERS= applin august lycklama shapiro sicherman X Xall: ${WINNERS} X Xapplin: applin.c X cc $? -o $@ Xaugust: august.c X cc $? -o $@ Xlycklama: lycklama.c X cc $? -o $@ Xshaprio: shaprio.c X cc $? -o $@ Xscherman: sicherman.c X cc $? -o $@ X Xclean: X rm -f core Xclobber: clean X rm -f ${WINNERS} X Xinstall: all X @echo are you kidding'??' //E*O*F ./1985/Makefile// echo x - ./1985/README sed -e 's/^X//' > "./1985/README" << '//E*O*F ./1985/README//' XIn 1985, the second Obfuscated C Code Contest was held. Hints against Xmachine dependent code were added to the rules to avoid another 1984 Xstyle winner. Rules and results were posted to net.lang.c and Xnet.unix-wizards. Larry Bassel was invited to help in the judging. XAwards were given to 5 classes of programs since we were unable to Xselect only the best 4. //E*O*F ./1985/README// echo x - ./1985/applin.c sed -e 's/^X//' > "./1985/applin.c" << '//E*O*F ./1985/applin.c//' Xmain(v,c)char**c;{for(v[c++]="Hello, world!\n)";(!!c)[*c]&&(v--||--c&&execlp(*c,*c,c[!!c]+!!c,!c));**c=!c)write(!!*c,*c,!!**c);} //E*O*F ./1985/applin.c// echo x - ./1985/applin.hint sed -e 's/^X//' > "./1985/applin.hint" << '//E*O*F ./1985/applin.hint//' XBest one liner: <hp-dcd!jack> Jack Applin [with help from Robert Heckendorn] X XOne liner programs are short but twisted. This "Hello, World" version Xcertainly takes its time saying hello. //E*O*F ./1985/applin.hint// echo x - ./1985/august.c sed -e 's/^X//' > "./1985/august.c" << '//E*O*F ./1985/august.c//' X#define p struct c X#define q struct b X#define h a->a X#define i a->b X#define e i->c X#define o a=(*b->a)(b->b,b->c) X#define s return a;}q* X#define n (d,b)p*b;{q*a;p*c; X#define z(t)(t*)malloc(sizeof(t)) Xq{int a;p{q*(*a)();int b;p*c;}*b;};q*u n a=z(q);h=d;i=z(p);i->a=u;i->b=d+1;s Xv n c=b;do o,b=i;while(!(h%d));i=c;i->a=v;i->b=d;e=b;s Xw n o;c=i;i=b;i->a=w;e=z(p);e->a=v;e->b=h;e->c=c;s Xt n for(;;)o,main(-h),b=i;}main(b){p*a;if(b>0)a=z(p),h=w,a->c=z(p),a->c->a=u, Xa->c->b=2,t(0,a);putchar(b?main(b/2),-b%2+'0':10);} //E*O*F ./1985/august.c// echo x - ./1985/august.hint sed -e 's/^X//' > "./1985/august.hint" << '//E*O*F ./1985/august.hint//' XThe most obscure program<chalmers!augustss>: Lennart Augustsson X XAn interesting use of a recursive call to main. Compile and execute Xwithout args. What is the initial value of b, and does it alter the Xaction of the program? X XIf you let it, the program will continue to print a numerical sequence X(can you guess in what base it is printed?) until you run out of Xmemory or until they sell your computer, which ever comes first. //E*O*F ./1985/august.hint// echo x - ./1985/lycklama.c sed -e 's/^X//' > "./1985/lycklama.c" << '//E*O*F ./1985/lycklama.c//' X#define o define X#o ___o write X#o ooo (unsigned) X#o o_o_ 1 X#o _o_ char X#o _oo goto X#o _oo_ read X#o o_o for X#o o_ main X#o o__ if X#o oo_ 0 X#o _o(_,__,___)(void)___o(_,__,ooo(___)) X#o __o (o_o_<<((o_o_<<(o_o_<<o_o_))+(o_o_<<o_o_)))+(o_o_<<(o_o_<<(o_o_<<o_o_))) Xo_(){_o_ _=oo_,__,___,____[__o];_oo ______;_____:___=__o-o_o_; _______: X_o(o_o_,____,__=(_-o_o_<___?_-o_o_:___));o_o(;__;_o(o_o_,"\b",o_o_),__--); X_o(o_o_," ",o_o_);o__(--___)_oo _______;_o(o_o_,"\n",o_o_);______:o__(_=_oo_( Xoo_,____,__o))_oo _____;} //E*O*F ./1985/lycklama.c// echo x - ./1985/lycklama.hint sed -e 's/^X//' > "./1985/lycklama.hint" << '//E*O*F ./1985/lycklama.hint//' XThe strangest appearing program: <ism780!ed> Ed Lycklama X XRun the program without any arguments. Type in some very long lines Xand notice how it redisplays it. X XThe program itself looks like tty noise. Notice that even `define' in X#define can be defined. //E*O*F ./1985/lycklama.hint// echo x - ./1985/rules sed -e 's/^X//' > "./1985/rules" << '//E*O*F ./1985/rules//' XWARNING: The rules and mailing address for the contest change from year X to year. Be sure that you consult the current set of rules X before submitting entries. X-------------------------------------------------------------------------------- X XIt is time once again for the net wide Obfuscated C code contest! X XGOAL: To write the most Obscure working C program under the rules below: X XRULES: 1) The source must be 512 bytes or less. X 2) Mail your entries to: ...!ihnp4!nsc!chongo X Postings to the net will NOT be used! X 3) Include at the top of the letter: X a) Your name, and path from a major network node. X If you want your entry to be anonymous, indicate this as well. X b) A brief statement of what the program should do. X c) The machine/opsys on which it runs. X 4) Enclose your source between the following lines: X---start of program--- X<place obfuscated source here> X---end of program--- X 5) The C program must be written in common C. X That is, K&R plus common extensions (say 4.2 or Sys V C) X 6) The program must be of original work. X 7) The program must be a complete program. (i.e., not just a fragment) X 8) Entries must be received by me on or before June 8, 1985. X XPOINTS: Each entry will be judged for its non-clarity. I will attempt to X run each of them on a Vax 780/4.2BSD system. Don't let the lack X of such a system stop you! Try to avoid operating system/machine X specific code if you do not have such a system. Extra points will X be given for program that: X X a) Able to pass lint without complaint X b) Actually does something interesting (not just exit) X c) are portable (i.e., no special calls of local features) X (long variable names will be allowed as needed) X XThe names of the winners will be posted to net.lang.c. The winning Xsources will be posted to net.sources. X XIf you have any questions on the rules/points above, just ask via mail! X Xchongo <main(){int i;i+=i+++++i;exit(i);}> /\??/\ //E*O*F ./1985/rules// echo x - ./1985/shapiro.c sed -e 's/^X//' > "./1985/shapiro.c" << '//E*O*F ./1985/shapiro.c//' X#define P(X)j=write(1,X,1) X#define C 39 Xint M[5000]={2},*u=M,N[5000],R=22,a[4],l[]={0,-1,C-1,-1},m[]={1,-C,-1,C},*b=N, X*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; Xs<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++ X]=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]= Xc|1<<s;M[*d++=e]=f|1<<(s+2)%4;}else e=d>b++?b[-1]:e;}P(" ");for(s=C;--s;P("_") X)P(" ");for(;P("\n"),R--;P("|"))for(e=C;e--;P("_ "+(*u++/8)%2))P("| "+(*u/4)%2 X);} //E*O*F ./1985/shapiro.c// echo x - ./1985/shapiro.hint sed -e 's/^X//' > "./1985/shapiro.hint" << '//E*O*F ./1985/shapiro.hint//' XGrand prize for most well-rounded in confusion: <otto!carl> Carl Shapiro X XAs submitted, this program was 3 lines (2 of defines and 1 of code). XTo make news & mail happy we split the last line into 7. Join them Xback without the newlines to get the original version. X XThis program was selected for the 1987 t-shirt collection. X XWe found this program is be simply aMAZEing! Run this program without Xarguments and notice the output. //E*O*F ./1985/shapiro.hint// echo x - ./1985/sicherman.c sed -e 's/^X//' > "./1985/sicherman.c" << '//E*O*F ./1985/sicherman.c//' X#define C_C_(_)~' '&_ X#define _C_C(_)('\b'b'\b'>=C_C>'\t'b'\n') X#define C_C _|_ X#define b * X#define C /b/ X#define V _C_C( Xmain(C,V) Xchar **V; X/* C program. (If you don't X * understand it look it X */ up.) (In the C Manual) X{ X char _,__; X while (read(0,&__,1) & write((_=(_=C_C_(__),C)), X _C_,1)) _=C-V+subr(&V); X} Xsubr(C) Xchar *C; X{ X C="Lint says "argument Manual isn't used." What's that X mean?"; while (write((read(C_C('"'-'/*"'/*"*/))?__:__-_+ X '\b'b'\b'|((_-52)%('\b'b'\b'+C_C_('\t'b'\n'))+1),1),&_,1)); X} //E*O*F ./1985/sicherman.c// echo x - ./1985/sicherman.hint sed -e 's/^X//' > "./1985/sicherman.hint" << '//E*O*F ./1985/sicherman.hint//' XThe worst abuse of the C preprocessor: <sunybcs!colonel> Col. G. L. Sicherman X XThis program abuses the C preprocessor so much that some /lib/cpp's fail to Xstrip out all of the comments on the first pass! If you were able to Xunderstand Decot's entry in 1984, you will have a head start on this Xone. X XBe sure to run this program through lint! If your lint works Xcorrectly, it should warn you that the argument `Manual' isn't used. XLike the program says, what's that mean? X XRun the program without arguments and enter the letters 'a' thru 'm' Xon a line. Now enter the letters 'n' thru 'z'. But to borrow a quote Xfrom Richard Stallman: If you think you understand what this code Xdoes, then you don't, so read it again! Explain why: X X sicherman < sicherman.c | sicherman | diff - sicherman.c X Xresults in diff reporting a difference on some machines. //E*O*F ./1985/sicherman.hint// echo Possible errors detected by \'wc\' [hopefully none]: temp=/tmp/shar$$ trap "rm -f $temp; exit" 0 1 2 3 15 cat > $temp <<\!!! 27 62 370 Makefile 6 62 362 README 1 2 129 applin.c 4 28 188 applin.hint 14 45 513 august.c 9 74 428 august.hint 17 48 509 lycklama.c 7 41 256 lycklama.hint 44 322 1958 rules 9 18 518 shapiro.c 10 74 430 shapiro.hint 23 64 511 sicherman.c 19 150 850 sicherman.hint 190 990 7022 total !!! wc ./1985/Makefile ./1985/README ./1985/applin.c ./1985/applin.hint ./1985/august.c ./1985/august.hint ./1985/lycklama.c ./1985/lycklama.hint ./1985/rules ./1985/shapiro.c ./1985/shapiro.hint ./1985/sicherman.c ./1985/sicherman.hint | sed 's=[^ ]*/==' | diff -b $temp - exit 0 -- Please send comp.sources.unix-related mail to rsalz@uunet.uu.net.