home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume15 / ioccc / part04 < prev    next >
Text File  |  1988-08-11  |  10KB  |  285 lines

  1. Subject:  v15i108:  International Obfuscated C Code Contest, Part04/07
  2. Newsgroups: comp.sources.unix
  3. Sender: sources
  4. Approved: rsalz@uunet.UU.NET
  5.  
  6. Submitted-by: Landon Curt Noll <chongo@uts.amdahl.com>
  7. Posting-number: Volume 15, Issue 108
  8. Archive-name: ioccc/part04
  9.  
  10. # This is a shell archive.  Remove anything before this line, then
  11. # unpack it by saving it in a file and typing "sh file".  (Files
  12. # unpacked will be owned by you and have default permissions.)
  13. #
  14. # This archive contains:
  15. # ./1985/Makefile ./1985/README ./1985/applin.c ./1985/applin.hint
  16. # ./1985/august.c ./1985/august.hint ./1985/lycklama.c
  17. # ./1985/lycklama.hint ./1985/rules ./1985/shapiro.c ./1985/shapiro.hint
  18. # ./1985/sicherman.c ./1985/sicherman.hint
  19.  
  20. echo x - ./1985/Makefile
  21. sed -e 's/^X//' > "./1985/Makefile" << '//E*O*F ./1985/Makefile//'
  22. X# %W% %G% %U%
  23. X#
  24. X# 1985 makefile
  25. X
  26. XSHELL=/bin/sh
  27. XWINNERS= applin august lycklama shapiro sicherman
  28. X
  29. Xall: ${WINNERS}
  30. X
  31. Xapplin: applin.c
  32. X    cc $? -o $@
  33. Xaugust: august.c
  34. X    cc $? -o $@
  35. Xlycklama: lycklama.c
  36. X    cc $? -o $@
  37. Xshaprio: shaprio.c
  38. X    cc $? -o $@
  39. Xscherman: sicherman.c
  40. X    cc $? -o $@
  41. X
  42. Xclean:
  43. X    rm -f core
  44. Xclobber: clean
  45. X    rm -f ${WINNERS}
  46. X
  47. Xinstall: all
  48. X    @echo are you kidding'??'
  49. //E*O*F ./1985/Makefile//
  50.  
  51. echo x - ./1985/README
  52. sed -e 's/^X//' > "./1985/README" << '//E*O*F ./1985/README//'
  53. XIn 1985, the second Obfuscated C Code Contest was held.  Hints against
  54. Xmachine dependent code were added to the rules to avoid another 1984
  55. Xstyle winner.  Rules and results were posted to net.lang.c and
  56. Xnet.unix-wizards.  Larry Bassel was invited to help in the judging.
  57. XAwards were given to 5 classes of programs since we were unable to
  58. Xselect only the best 4.
  59. //E*O*F ./1985/README//
  60.  
  61. echo x - ./1985/applin.c
  62. sed -e 's/^X//' > "./1985/applin.c" << '//E*O*F ./1985/applin.c//'
  63. 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);}
  64. //E*O*F ./1985/applin.c//
  65.  
  66. echo x - ./1985/applin.hint
  67. sed -e 's/^X//' > "./1985/applin.hint" << '//E*O*F ./1985/applin.hint//'
  68. XBest one liner: <hp-dcd!jack> Jack Applin [with help from Robert Heckendorn]
  69. X
  70. XOne liner programs are short but twisted.  This "Hello, World" version
  71. Xcertainly takes its time saying hello.
  72. //E*O*F ./1985/applin.hint//
  73.  
  74. echo x - ./1985/august.c
  75. sed -e 's/^X//' > "./1985/august.c" << '//E*O*F ./1985/august.c//'
  76. X#define p struct c
  77. X#define q struct b
  78. X#define h a->a
  79. X#define i a->b
  80. X#define e i->c
  81. X#define o a=(*b->a)(b->b,b->c)
  82. X#define s return a;}q*
  83. X#define n (d,b)p*b;{q*a;p*c;
  84. X#define z(t)(t*)malloc(sizeof(t))
  85. 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
  86. Xv n c=b;do o,b=i;while(!(h%d));i=c;i->a=v;i->b=d;e=b;s
  87. Xw n o;c=i;i=b;i->a=w;e=z(p);e->a=v;e->b=h;e->c=c;s
  88. 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,
  89. Xa->c->b=2,t(0,a);putchar(b?main(b/2),-b%2+'0':10);}
  90. //E*O*F ./1985/august.c//
  91.  
  92. echo x - ./1985/august.hint
  93. sed -e 's/^X//' > "./1985/august.hint" << '//E*O*F ./1985/august.hint//'
  94. XThe most obscure program<chalmers!augustss>: Lennart Augustsson
  95. X
  96. XAn interesting use of a recursive call to main.  Compile and execute
  97. Xwithout args.  What is the initial value of b, and does it alter the
  98. Xaction of the program?
  99. X
  100. XIf you let it, the program will continue to print a numerical sequence
  101. X(can you guess in what base it is printed?) until you run out of
  102. Xmemory or until they sell your computer, which ever comes first.
  103. //E*O*F ./1985/august.hint//
  104.  
  105. echo x - ./1985/lycklama.c
  106. sed -e 's/^X//' > "./1985/lycklama.c" << '//E*O*F ./1985/lycklama.c//'
  107. X#define o define
  108. X#o ___o write
  109. X#o ooo (unsigned)
  110. X#o o_o_ 1
  111. X#o _o_ char
  112. X#o _oo goto
  113. X#o _oo_ read
  114. X#o o_o for
  115. X#o o_ main
  116. X#o o__ if
  117. X#o oo_ 0
  118. X#o _o(_,__,___)(void)___o(_,__,ooo(___))
  119. X#o __o (o_o_<<((o_o_<<(o_o_<<o_o_))+(o_o_<<o_o_)))+(o_o_<<(o_o_<<(o_o_<<o_o_)))
  120. Xo_(){_o_ _=oo_,__,___,____[__o];_oo ______;_____:___=__o-o_o_; _______:
  121. X_o(o_o_,____,__=(_-o_o_<___?_-o_o_:___));o_o(;__;_o(o_o_,"\b",o_o_),__--);
  122. X_o(o_o_," ",o_o_);o__(--___)_oo _______;_o(o_o_,"\n",o_o_);______:o__(_=_oo_(
  123. Xoo_,____,__o))_oo _____;}
  124. //E*O*F ./1985/lycklama.c//
  125.  
  126. echo x - ./1985/lycklama.hint
  127. sed -e 's/^X//' > "./1985/lycklama.hint" << '//E*O*F ./1985/lycklama.hint//'
  128. XThe strangest appearing program: <ism780!ed> Ed Lycklama
  129. X
  130. XRun the program without any arguments.  Type in some very long lines
  131. Xand notice how it redisplays it.
  132. X
  133. XThe program itself looks like tty noise.  Notice that even `define' in
  134. X#define can be defined.
  135. //E*O*F ./1985/lycklama.hint//
  136.  
  137. echo x - ./1985/rules
  138. sed -e 's/^X//' > "./1985/rules" << '//E*O*F ./1985/rules//'
  139. XWARNING: The rules and mailing address for the contest change from year
  140. X         to year.  Be sure that you consult the current set of rules
  141. X     before submitting entries.
  142. X--------------------------------------------------------------------------------
  143. X
  144. XIt is time once again for the net wide Obfuscated C code contest!
  145. X
  146. XGOAL:  To write the most Obscure working C program under the rules below:
  147. X
  148. XRULES:    1) The source must be 512 bytes or less.
  149. X    2) Mail your entries to:      ...!ihnp4!nsc!chongo
  150. X       Postings to the net will NOT be used!
  151. X    3) Include at the top of the letter:
  152. X        a) Your name, and path from a major network node.
  153. X           If you want your entry to be anonymous, indicate this as well.
  154. X        b) A brief statement of what the program should do.
  155. X        c) The machine/opsys on which it runs.
  156. X    4) Enclose your source between the following lines:
  157. X---start of program---
  158. X<place obfuscated source here>
  159. X---end of program---
  160. X    5) The C program must be written in common C. 
  161. X       That is, K&R plus common extensions (say 4.2 or Sys V C)
  162. X    6) The program must be of original work.
  163. X    7) The program must be a complete program. (i.e., not just a fragment)
  164. X    8) Entries must be received by me on or before June 8, 1985.
  165. X
  166. XPOINTS:    Each entry will be judged for its non-clarity.  I will attempt to
  167. X    run each of them on a Vax 780/4.2BSD system.   Don't let the lack
  168. X    of such a system stop you!  Try to avoid operating system/machine
  169. X    specific code if you do not have such a system.  Extra points will
  170. X    be given for program that:
  171. X
  172. X    a) Able to pass lint without complaint
  173. X    b) Actually does something interesting  (not just exit)
  174. X    c) are portable (i.e., no special calls of local features)
  175. X       (long variable names will be allowed as needed)
  176. X
  177. XThe names of the winners will be posted to net.lang.c.  The winning
  178. Xsources will be posted to net.sources.
  179. X
  180. XIf you have any questions on the rules/points above, just ask via mail!
  181. X
  182. Xchongo <main(){int i;i+=i+++++i;exit(i);}> /\??/\
  183. //E*O*F ./1985/rules//
  184.  
  185. echo x - ./1985/shapiro.c
  186. sed -e 's/^X//' > "./1985/shapiro.c" << '//E*O*F ./1985/shapiro.c//'
  187. X#define P(X)j=write(1,X,1)
  188. X#define C 39
  189. 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,
  190. 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;
  191. 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++
  192. 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]=
  193. Xc|1<<s;M[*d++=e]=f|1<<(s+2)%4;}else e=d>b++?b[-1]:e;}P(" ");for(s=C;--s;P("_")
  194. X)P(" ");for(;P("\n"),R--;P("|"))for(e=C;e--;P("_ "+(*u++/8)%2))P("| "+(*u/4)%2
  195. X);}
  196. //E*O*F ./1985/shapiro.c//
  197.  
  198. echo x - ./1985/shapiro.hint
  199. sed -e 's/^X//' > "./1985/shapiro.hint" << '//E*O*F ./1985/shapiro.hint//'
  200. XGrand prize for most well-rounded in confusion: <otto!carl> Carl Shapiro
  201. X
  202. XAs submitted, this program was 3 lines (2 of defines and 1 of code).
  203. XTo make news & mail happy we split the last line into 7. Join them
  204. Xback without the newlines to get the original version.
  205. X
  206. XThis program was selected for the 1987 t-shirt collection.
  207. X
  208. XWe found this program is be simply aMAZEing!  Run this program without
  209. Xarguments and notice the output.
  210. //E*O*F ./1985/shapiro.hint//
  211.  
  212. echo x - ./1985/sicherman.c
  213. sed -e 's/^X//' > "./1985/sicherman.c" << '//E*O*F ./1985/sicherman.c//'
  214. X#define C_C_(_)~' '&_
  215. X#define _C_C(_)('\b'b'\b'>=C_C>'\t'b'\n')
  216. X#define C_C _|_
  217. X#define b *
  218. X#define C /b/
  219. X#define V _C_C(
  220. Xmain(C,V)
  221. Xchar **V;
  222. X/*    C program. (If you don't
  223. X *    understand it look it
  224. X */    up.) (In the C Manual)
  225. X{
  226. X    char _,__; 
  227. X    while (read(0,&__,1) & write((_=(_=C_C_(__),C)),
  228. X    _C_,1)) _=C-V+subr(&V);
  229. X}
  230. Xsubr(C)
  231. Xchar *C;
  232. X{
  233. X    C="Lint says "argument Manual isn't used."  What's that
  234. X    mean?"; while (write((read(C_C('"'-'/*"'/*"*/))?__:__-_+
  235. X    '\b'b'\b'|((_-52)%('\b'b'\b'+C_C_('\t'b'\n'))+1),1),&_,1));
  236. X}
  237. //E*O*F ./1985/sicherman.c//
  238.  
  239. echo x - ./1985/sicherman.hint
  240. sed -e 's/^X//' > "./1985/sicherman.hint" << '//E*O*F ./1985/sicherman.hint//'
  241. XThe worst abuse of the C preprocessor: <sunybcs!colonel> Col. G. L. Sicherman
  242. X
  243. XThis program abuses the C preprocessor so much that some /lib/cpp's fail to
  244. Xstrip out all of the comments on the first pass!  If you were able to
  245. Xunderstand Decot's entry in 1984, you will have a head start on this
  246. Xone.
  247. X
  248. XBe sure to run this program through lint!  If your lint works
  249. Xcorrectly, it should warn you that the argument `Manual' isn't used.
  250. XLike the program says, what's that mean?
  251. X
  252. XRun the program without arguments and enter the letters 'a' thru 'm'
  253. Xon a line.  Now enter the letters 'n' thru 'z'.  But to borrow a quote
  254. Xfrom Richard Stallman: If you think you understand what this code
  255. Xdoes, then you don't, so read it again!  Explain why:
  256. X
  257. X    sicherman < sicherman.c | sicherman | diff - sicherman.c
  258. X
  259. Xresults in diff reporting a difference on some machines.
  260. //E*O*F ./1985/sicherman.hint//
  261.  
  262. echo Possible errors detected by \'wc\' [hopefully none]:
  263. temp=/tmp/shar$$
  264. trap "rm -f $temp; exit" 0 1 2 3 15
  265. cat > $temp <<\!!!
  266.  27  62  370  Makefile
  267.  6  62  362  README
  268.  1  2  129  applin.c
  269.  4  28  188  applin.hint
  270.  14  45  513  august.c
  271.  9  74  428  august.hint
  272.  17  48  509  lycklama.c
  273.  7  41  256  lycklama.hint
  274.  44  322  1958  rules
  275.  9  18  518  shapiro.c
  276.  10  74  430  shapiro.hint
  277.  23  64  511  sicherman.c
  278.  19  150  850  sicherman.hint
  279.  190  990  7022  total
  280. !!!
  281. 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 -
  282. exit 0
  283.  
  284.