From 475949b0392412eb76e9fbbc2a1b0937858b6499 Mon Sep 17 00:00:00 2001 From: Landon Curt Noll Date: Wed, 21 Sep 2022 02:14:28 -0700 Subject: [PATCH] Update & reformat 1986 in 1984 style --- 1986/1986.tar.bz2 | Bin 8546 -> 24585 bytes 1986/Makefile | 282 +++++++++++- 1986/applin/Makefile | 598 ++++++++++++++++++++++++- 1986/applin/hint.html | 21 - 1986/applin/{hint.text => hint.txt} | 4 + 1986/applin/index.html | 186 ++++++++ 1986/applin/orig.Makefile | 25 ++ 1986/august/Makefile | 598 ++++++++++++++++++++++++- 1986/august/hint.html | 23 - 1986/august/{hint.text => hint.txt} | 4 + 1986/august/index.html | 189 ++++++++ 1986/august/orig.Makefile | 25 ++ 1986/bright/Makefile | 604 ++++++++++++++++++++++++- 1986/bright/bright.c | 4 +- 1986/bright/bright.orig.c | 47 ++ 1986/bright/hint.html | 22 - 1986/bright/{hint.text => hint.txt} | 8 + 1986/bright/index.html | 189 ++++++++ 1986/bright/orig.Makefile | 25 ++ 1986/hague/Makefile | 599 ++++++++++++++++++++++++- 1986/hague/hint.html | 25 -- 1986/hague/{hint.text => hint.txt} | 4 + 1986/hague/index.html | 190 ++++++++ 1986/hague/orig.Makefile | 25 ++ 1986/holloway/Makefile | 600 ++++++++++++++++++++++++- 1986/holloway/hint.html | 19 - 1986/holloway/{hint.text => hint.txt} | 8 + 1986/holloway/index.html | 190 ++++++++ 1986/holloway/orig.Makefile | 25 ++ 1986/index.html | 186 ++++++++ 1986/marshall/Makefile | 601 ++++++++++++++++++++++++- 1986/marshall/hint.html | 23 - 1986/marshall/{hint.text => hint.txt} | 8 + 1986/marshall/index.html | 191 ++++++++ 1986/marshall/orig.Makefile | 25 ++ 1986/orig.Makefile | 72 +++ 1986/pawka/Makefile | 598 ++++++++++++++++++++++++- 1986/pawka/hint.html | 18 - 1986/pawka/{hint.text => hint.txt} | 4 + 1986/pawka/index.html | 184 ++++++++ 1986/pawka/orig.Makefile | 25 ++ 1986/rules.html | 267 +++++++++++ 1986/stein/Makefile | 609 +++++++++++++++++++++++++- 1986/stein/hint.html | 25 -- 1986/stein/{hint.text => hint.txt} | 8 + 1986/stein/index.html | 192 ++++++++ 1986/stein/orig.Makefile | 27 ++ 1986/stein/stein.c | 2 +- 1986/stein/stein.orig.c | 3 + 1986/wall/Makefile | 600 ++++++++++++++++++++++++- 1986/wall/hint.html | 25 -- 1986/wall/{hint.text => hint.txt} | 8 + 1986/wall/index.html | 195 +++++++++ 1986/wall/orig.Makefile | 25 ++ years-spoiler.html | 93 ++-- years.html | 93 ++-- 56 files changed, 8199 insertions(+), 447 deletions(-) delete mode 100644 1986/applin/hint.html rename 1986/applin/{hint.text => hint.txt} (95%) create mode 100644 1986/applin/index.html create mode 100644 1986/applin/orig.Makefile delete mode 100644 1986/august/hint.html rename 1986/august/{hint.text => hint.txt} (96%) create mode 100644 1986/august/index.html create mode 100644 1986/august/orig.Makefile create mode 100644 1986/bright/bright.orig.c delete mode 100644 1986/bright/hint.html rename 1986/bright/{hint.text => hint.txt} (82%) create mode 100644 1986/bright/index.html create mode 100644 1986/bright/orig.Makefile delete mode 100644 1986/hague/hint.html rename 1986/hague/{hint.text => hint.txt} (96%) create mode 100644 1986/hague/index.html create mode 100644 1986/hague/orig.Makefile delete mode 100644 1986/holloway/hint.html rename 1986/holloway/{hint.text => hint.txt} (78%) create mode 100644 1986/holloway/index.html create mode 100644 1986/holloway/orig.Makefile create mode 100644 1986/index.html delete mode 100644 1986/marshall/hint.html rename 1986/marshall/{hint.text => hint.txt} (79%) create mode 100644 1986/marshall/index.html create mode 100644 1986/marshall/orig.Makefile create mode 100644 1986/orig.Makefile delete mode 100644 1986/pawka/hint.html rename 1986/pawka/{hint.text => hint.txt} (95%) create mode 100644 1986/pawka/index.html create mode 100644 1986/pawka/orig.Makefile create mode 100644 1986/rules.html delete mode 100644 1986/stein/hint.html rename 1986/stein/{hint.text => hint.txt} (84%) create mode 100644 1986/stein/index.html create mode 100644 1986/stein/orig.Makefile create mode 100644 1986/stein/stein.orig.c delete mode 100644 1986/wall/hint.html rename 1986/wall/{hint.text => hint.txt} (83%) create mode 100644 1986/wall/index.html create mode 100644 1986/wall/orig.Makefile diff --git a/1986/1986.tar.bz2 b/1986/1986.tar.bz2 index 26c84f25a463e1fed2c47e790377b25adae46335..f34ea25d25be31871e6b756e279f8e5a904e8e51 100644 GIT binary patch literal 24585 zcmYJ42T)VZ_xJGu0Yy{!+XZv#?ya6LH?jyVIDOS`<78Wk9AkWoTpe0s>w~r4C3kwJDUr$etfKzko%pdD4 z9F=@O99T2AL|F(aEKZ+T99a0WPtCEgc-Y^5%ZV+Oe)#uP=IMtII5HowZ=d@5mYd}? z3)ibt<}98ptkgHBZmF^S?_id{ES{&bPn+IiVFA5mQ9sS{dUWG03k$0^i_(9e0?Gn@ z{H;0buX_9LnM_UxmSo4wzwZdVqRPs!bHwo0Gyp$|vl>)LI-X7dWGi(aQuI^rGp%9twjX2 z-I^6r`6`bT_$hWa=FF3;A`aVD&e0^rlSiw;mU{|fo39AFKm3o?GwCq`4cfRf&Jo{c zyNFk~Pwdy7$(AnmpV(70FbpH}~&BJNmagL`)N!<<#7s+x{@|skLzh{>D>*r2?gUPqJUu$=2Xq zU1n+53YMZo`M1w}agBP`A@iT{=zi_RFKM)I(~z#;QW0#vG{BkUQR@msCOK1C| zBKPWSs{~a|5o2E|-8rCXtj~&u*S7@wdi_80PoB!e1Xo7+3dY6eq+Y$vZq6Fc-R=7G zzl%{n!i-eMiDC~z_f#_XPz76Aejq zrr3VS{fc#1y~zXsIW^^Th?Aspnl3fy)tFU3Rm8=$UMcj_SLwW1sStaOQ}i>3{@e@A zkU5Ox5#c0Mdkq7jw`d@KqmsLZZ%v)If7cnh&OHU>6b=1DP*nMq;@CF+Hu-)oNVHsm z^4epf;;tXZTHC5;MFPO!!-C{R*jbnb`>6q@W$1hMnG7nb+K{PpEdGRxiHUe%LlP&UZPY)Uf7F_Vs={P^*c zjd}Esx*(_ia+w>YFE6}ShpDf6+8w*HAJ=*Bd|lx`lakhj4#=Y&p)%fUe^LgqQO1+e z#`(%pG1ji&U}Xf`5U=MhxfK8jchYXsM8>%p@pLP|P{)b$0K$>{(JDP8?U;wE3GtSC zftbf_&~AmaSBkZgciE?*;RehlM5ahVUG(R=k67W zmp{(7yi|Sp__Sx>wN0r7tjRKV_mH{=na4GPTY-#e@CSu>>K>9@7<|K?eprJD48efo zHIc*VJQ0V*BOsnqXHfr<{2qM>fc)-HK>O3b`=W4Y>i|f-DsC1hxXk``7GcMEGjsA^ zdq>->!=Wvfo(i+oD|9$bE1a;{~LA}5*lREtwy5GPlFAZCqOqgWb7Kz%T zPOetp+VCfY`yqyLKND_JM?jTwneCyRGPPm7}+=ImV*I6=f z=6;AkAMyyMo@W9`=$i+5_Hhns5=a_|RJRRW0{}S!{sb$Y0B0`F z$nb!=fz-X_a`^?Ec>tZpv>*@c?kaY7P#MHi4V5Z{!l@g(187^{-BloiqzP$KhclKi z^a&8pI@zV4{OnoZ$9gRu2JVe7oX`tO$1kH1ajsw)PfWnN-E*=OI=GUu#x%YmfCii~ z2s4=w#G)d$NQiJ}00hk(-r?W`*RXu3)m7Ix$~_r-NpJJK+Xt0y@aJr3k>Ho##-G$w z(k2|mhP`hb`nxU93nn)CBPjMO^(SoO8MXA>6P#3-OJhE|VWi|9vSgw@njw@Y_K9KG685yruO}j+ zdyFTQ9BcvLPnf-lUhj|$e0&KKM0~WTd9D~HBKWsa7AMH5FrSP#NjXj%ca2u`w1Yfm z{2KgPpDX-s_w+Nve7zU$>0{VPDFyvgr}|drW52RRH6%PAau>=89{M7oak;go+3o&s z`;^Mh_ZlF>-6c^EVBU4h?+5l9=##s}XJ|I>=7a9os6;}#4$Pa+ObuSUb@#L>OMY}X zpD0Oz#b-0Om3z+0koUAobL0W)#%_SfwdYgjhe_9rjjq-;tnO^{;x4Rh^QL>vG$b70 zsyeWiT3~+lkkLPTKZNhRbQDS|vIK40*;yqwEa%uBnGMOXuEF<@F)b?ll~*QG4etIv z39=9)I{0@u(n-W)e@+~3`<)gQ+czx?B z_}pK(r}8+-GR-ox=HUd8(XED1vX#d$pJu={Cp9v3l8_B*({2Ql!Ij3vX3|?H>mpVz zx-me!SSuG%?Y~@!8y$6*1#oa)D}DOBqG)r>i+*3NH)nX+ztxoo*AWs?L6t=n>wpbW z+7}M<5J1pWNO;hG$U}{|8agD^#tZ$Z?U(P}EpgA~$90X_uhSo=4-F5!p%=cw7AkbP604&a%;zlez?SI~x!f={~kGZ*4( zBKy+g8uISbjcv6%gu_hHVQVzL!>&9+z`JVMdGF-hmSG)(>oC3aOua--dHq(gIEq5r zYT)Zh3T(3lY9@Mk`~~Y*tL5>{2ImQ}Sm^s%=!8i2O-|hPE;d?kS8nxkk<#t6Bor66 zcwhfk{5T939C?0oUDWrY>&v?qg;e!F*JLxs9v40rSZo^*CThQyUPU>nhRvUVC;e23 z!v@kD8d(&{&^ysaw`O%%$6JBjF9~<;)!|AY!Aw`Rq*;`ND>k_26zgC1J5k8L>^w2h zr;xRVU&noGB`0{qvdR2`#YrGeaFY00yI~80OUUxi_yil)8blpHLTv?c{d7YFf8HlY z?a$>yw2o~pdPp&q5#*pc-#OgCirVk@8~Vx~w}MbHyJmwUWBnQZ#xps2)Af0DA!9+xR>PZsBa>Arw&nxgo+$O)8>F?nGD#ILfaD(15FKBfs|3FIzUJS-ws=(}IK$8mS%q zG^)G^;>UnCdEElm--E*D6-R!4c74GgJ~hisI;v{cis$CYY?MvMpFT|*1RtUY+Ho`$ z0!S%GAh2mcFJGQ%jl@VZa&!jM?eaQdPo+ma6Ff|!JeLMqt8(Ng*NjI7Ml)a{9UQuo zwAd0=>>LczXfV*y1$hqx_iXuW*~g>E5`GB#P-Z~0aVbPKt`eonGy#r{=!7A_7Zq#h z^bKqILuyOz@m1AmHE~^Dp{;~7k!)79vh~24Vx0*6S|dnR261z@8hOyL-bVvTA8c-G zItJ#&)#A6MQXB@g!h2979Xn>@DNzW{X#=bzgm-k+myGrf@mRp-&4cu5z$Xn~pok9$ zo-)BeMy+SU)mgzUD(<S`4@`&IKc zA4Ks+F}|*Zy*ZET*u%zBFP!cypgunJYUjQicJ*}? z)RgwkK2KfMh^JG95N1*p=55xfsbcTYyp)WqWEdi1m~;7WE-ghvTOebEA?3gbfY?!6 zJEqcMLkP|u{}J#9ZN+fE67{m9A~OOn&#IC9coO(?%`n;BPfBnRtTFXw4ws&YeZ6QO zJ9+?_%2|dPcsgBR)g6VZI_7RmQWtT*QqoOE0DGH$JKUFwuc7jM3I~%V}-X zKm~X&(?v++u)Vyd^wP=wYhE6R&90^I3W}qPphVvZ#X8!EQ173T5NwVa*2dGJHi@Gr zr8Mns7L72EGV=-agXdRi5}IH=#cC?p$Y~?;dzFc8p94bW5o|Vp!1y4obq&6X)Zc*j z2@Y@0q%@ShuK|%(BKN?QR9eydn_Wue5pOrCVMmO$3#kL)`qKW7k=F~M&3YbOd+I+a z1_Kvaw-;PF3jmVxdRvEQ4mS^7IJ)Q$93bvb+0vnU}bg zAXi%rdhE#P+(NA&T}0I@2Tth8@Ym4eyrOgaj_CJkoe`c|UDfF?975?nJ^Y#9_N5~W z!NT&wTO`7?zf@0(Cw51FP-A|#yxMDO(_I6>TCCzMnBhe%6EPd~%-KX4nssUts^g`4 z)D&hcg;9oDi$qGlN3iARpDno>gx0R`m!I6+;49Q$Bl1GEZy3lae~=Mhbq>7u1p+#I zbsF$w)+n+mh4fGICY;gqZNU?vrG z)ldnIakJT09UCgJ>Qn}&l?*^DZTyEy+tg|a>t=SVufG{NXWa1|8O~taQt_=;qAYC_ z3pGXR`*&#F8i)bFnQ@<9A7zj{uHaWHt;8XNJ$0eFBH+1ZWqmR-)^4Rs!jH(IyQzvJ z0&442FzIy&VHqq!)m@zgfeZ-aLene0x&?N9p^+5H04{t=)Hi5*)TmwC_)wnY5`V zUP?Rt6(IWkj^Nq*tFQTeyDsUyviD*mWDTcOZDRH3cB)lrah`8zVe{@D9tf#vES}nn z_6ZK6`=|yq(;A1zN6L}=cJ1a|7SBI5p0760@ z9!@Y9lhIL4US2xDMFumhCPx!d8aU*fN5E&>`YfNT)u@v_O8p6W;eOI_0U(ol%J|&A zNlkkyWSp1=>tW=N2#o=yOQlr9s^yJ%7(S#bpiqce8O-Q z0mPcu_H>6BOA!RlTGV&lNIfJFAOHg7E*jYav%~Im2pi|E7^ssAx>La&^EK8^&wp6( z)OUUPZXJ+9_IJ;Lm^6YAs+Qlv{p10oL_u2X>Kh+B23niA$0f_QVO*kW6lf_R z)mfd!i{tS4i7qxhqTvraQyo!o$~XqWUyi{?>|cIl4&EitHnbP5f16r=nL?}z z7C+{(^5R|gt(@QcJigvE!|D9XEk-1&xM zO`!JaJZ1UP?z;ED;9ax=hZx6;MGDBKVR`kkyJ&8?ns(93(cFlBG-hR$&v|B{^n`an z_B5?ol#xj!_i<$5FJ;_5wHBF}aMnH5qt&m?^wEmSkddCf?%C&qSi!y50qt-r>Yp;tAtzQ>_1TFF`Uet8;U19WQJglylnLs^>0x8+fgldbcSx!)AAu_fG47Vnf6P zK4EM;{k?9a9a*EkmboA8CgBSysL$N$hDY`{rH5pSa& z95qy?H#{$UoTp_RpK;bZY|3n3`q0TEA^($o|E91LGZ}+Y*EQ=^47;)N>3@fT2^z%fWRebvi z%g{}$Z{X>jvWW)Py91Kvt!6Hr$lt9sdF@(|GjQW2=n1}|)hyeyGsLLSSGW3^6SUuJ zce{e4&M>_2oOXp zkD{oy3D!?bzW8vT;_6Ep?EU2Z{dfPFt|^-0|HLLl?mkb$rMeur{??dDHg8=KO1|ww zx;rM6o%kyh&&nwjemNB){4sy#q@=`l+o&XG*PwMuRl?c*g`>7Afw&*_ zt-f4kPgCbRzV~W`>hf!+79cOi?GGoCt2Br7Y67)dis(Vzx`7ZXrjMMW&RSlLR z36?dRS&M_j3veHN`R1|#H#j>#xMB@TaJlAh#qvbzOmO;INSTIT`Vi^w(K7 z_#_CMxa*@UVm7mIYz(~ag-&Yg%Er7*^`EML<277*ZF95v?K=5BQcrv}5Fk0<^&PLV zBtz*jLv3ySdFVVy)i7?MsaN?s0OQ!z^rr(&YAK2{+kBUv;cx57HYsmLw!*DN zV4D-G6#WtLxf>q3gUZjZmmUeNb;>*_|H8g6dtu?|czRA2{iEJ=E#(iLaWHsO~ZMSZ^~LA!47mwZ-b^Em8D%s%cSj^w?4JKV|eXWA6) zcgfa##Mf;%G!}+1ozL#*Nd)rm5NcbN_&2v`+&Li4D&u{w(sZ-??IE#UIHE3k!FB zu71ux_oD*hElY+1;zlzj3rn?I&6>TYe;*{0*oInesA(*(z#{&6;KFTeWq+3jKx&qW z3pWe%Xt8>Yp7GZiPY<2ktH2gD>6gZz)3ba`&$Q#CVjwY-eAZI>T|X&K6sh}rSB}Tbw z^C2r|o(IwoCXf`luioPU$X_DI2a?Z47l`G7%ry%*dBpV+o=37$o1bl3vA&D|&%BEk z&>5IM;tGoaRzZH8JWL*$iJ1JgR#>^A*I$cK_($IrAau5F8hLiU!+`{{G`B9n6&O6y#@{QPTw{m_y)<>HQnq zOPNjK__I+HP=)Wue;wE_$=yBsYCban|NbLBS}1YKB;WTW9(L6|$GrBSA@8S=tLakD z1#V@deV@2Pmq*B!-{b@=Vg~nTpMahDk|X=m`24pq{m5{>On1Fp#TZ$10Vn@CKV+0W zv7&DXnZ3&nM>s4TEAPb(5?eBoN&DfKP`NYbM1a zgdPdac*@(b$lI}7Ii_xieY!VaXIswx^uv$ALSvZ6GtHSg=kMI~JEEyi|60FW&gKy3 z*4wOMi6?9a-SKHZ8k=-;eKFS{$)Zs(E+^7=V167^6fVQR!Wt*ycKUXF9NHpVCM>Lh z?G?TwO8{VZCnKb5tM0_#YN;Cv&D6;gT?W~ofm}Q%_iagZc$BAW|MHQ6wjX$X#J?sb zTbmIVVr_CXckDYdmFJ|nX_nG=I2@Aj^swQp8u>Wf#xL_dsH?>1AC`aj;}(0C0;1&>$j?)_;MFw5C>0^M=KCOkhkO)42aCEQ!qyPm zIEWeIOKTt7Zdd>9U9BMPqHImeZB@f0gx>YS3OXRZW?NQ9zR=M(e}(?kxn_j=6;NHa_fRlmhVH6n4g8BB()x_L>k+J2Z^69T^W^T;R(}=x$U3) zkTp-}&uz{apBtw|TRW~@sN=wM$OEMLB|^?#IIGJMk#bt)?(iCY%Z8g4?p|BD!2N2b zLlGYUQ&H@S&_5!s&g!VydJGqTZqpI#R)a>PAj68R=O7Ox42S6#Ey@O*sXUQBx^i@==riWctig&Bgb+S$?#)o1eD{ZugxV*>THVI-DbgK0HN**^OsYk*nj1stC;Ab{%Gn6HX4mxK z)OVbF%Oay29=JOQ*8I3Wtn&a*Rygm8-f?*lrmQ@4WiRs5O@X`PJ!NP&o78pgB-T`` zimNB)!M=S@HgH{lnnOZD7VwZtg6=pEFVhM7JsObwnR7y;&K@g=;Hk6wZqO zxHTtse{PMoKNVv*bwT$Di1tP9lP-!gRgY6tv^i``cX%tYcGjlq$y>S10(LgglwkA= zl}FR`D2Ik8rIu&>xN0q;LdUBFGTeuYA2zy2aYd)ZPZzu2w5@#}KmDFkYl0FuUHd#I zRr(}giU>CwEq8aqJ+G07PCj{bBh9!Gki;fd?>nXRNfB&-Qq9$0 zc_S*b^f@s|ofaMdak4+_?nXS1$Ir|W-{OrRs+oV^qr|_Q!*l;`@V+H^tLNqGie2x{ zKX&rxm4CQPywd-n-$=c9T>N(Ibv5jFU#I-&O<`YIpVv2DYJ1kUY;m;+gx-ky_2i{> z({O#v%!};z#qKu*6n40h0#3iLwGc3|dCpIDsL%6GP&lgc=OVqZ{rmDZ)svsv?vwyJ_l)k-iNkD~j#YB~bJxT0u#^vPnK{-$mP}kS!%EF=#9!VLxlj zwa0}a5fZ24bld851VD^e;@ro11UlHazW@#ic_`!#r|c8%Q8h}cA9lR39?AfP?gv_0 zRR4(`xN(LzLR><+B3Ux}`na-Ah`nTp1poB&BSP82kKTIAn{mnE{jED9XhKEyckgyS zhjA*f)6iG$q~sH(UZ-%WLNC_J2Y<!EH!C1BG+^IzUMzOTt-3PV&?ITV% zcAq95E;WQc(QNCS%RBzZC+It){#PaveCDsqzBcQvcOPJoXV=62Tjk!0R*B$kL215w z%JV=&?s{;B@uYL*<1fb_Z|nP)wR%r{dO2D!JbB|)BmY_1w~_&^7X^McgDh}O&-2!< zj~#L}7r8v9Kkk3LN(&DTIexZ9_U@XcgGT^_I3)Nz;sE@!K0yKnsm>n&GU6(5Y|h|+ z##_?W)JQ-&WZog8O)k39qo^hn9g0n zl#gl>e5XN`lyxj>y&QXH7JzJnL8@WY2}6SGxeZ(k2tN%(cB_%~H!w_`fdC;fJDvy0 zk4;Pikky*VCMbzetwE@Uq3GZv`7x0E0+xD`596&?N2EFn0jYy(J_JGyDgzmGU~Mhk(^-UxCcvqKFo+3$9zb`P1<8*HVof5}aWlAZR{)YJGawz- za5;P8jL~^N>xT0UUX~J;4yBgTHb2VQ^*wdNQX|`-i^;UGj5NcsU3#v*)_*#0^#Kw< zhNxTg0}yNYwAJUy%c}|J?gBQ|jo)Bh2tlk7JesXOs!9nmb016V4Jgn$GL9N$|6OYapS{iHa zH@I$5V-9AU2yJE#E)GI@{12(>KFWO4%gG|YbAOHB_ ziZ5@s$2v=m1=NPL0z2?W#Ygfh)Afku^{oxhYYo{Ct#ibGz53WCFxuekqq+P2N9D#s zmn?NZB}-#XG)wUE$A@g9Swb9UJz2nTkc0SK$XQi1ab3bm8v{<)PSV3}205(b4(Je` zzXzOj0HGJ$aX(bs^+>)Amalohw9^12?>@wL9Q%@|Nps*K3UgU4&K+x{KMRDE`j9Ae zkc~HnU^0h*(uL7*MhiHsUelza6;FcU7qWNqri}O~ma-kWex_Z^6TlznxaI)L$P#=i zkot48crV%2$mA$PSLQ$A@KcjlbJw7EkD?P)?$nBf?(Dy|bsoME&;R_ovtI6-XOBXA z<-pW8Gjy?>Bzfeia4xDR;sUCv9^QU;=5HV2gd!;tTnfCVfUiR2S zl^n|cJRa2TgZr}y)xw#(1xmZ)pnLRQ0CET{xC4(x2Qpgz$K`a%)Tc5!1cx-Yhy22u z<>WQIOsMynEQ8+ z#$I=;>yMGN`YFwUb8XL=_zwmlxPr^kKnw{P;oB6nru^wyL5>kCh*T8TWDIO>3p?g{ z51`V)4J$&*!ACSx)|u!~oVPR6gw)!+ zar$jRAvncQ4FY5pLQ)1&@vFFSM`0YUP?H|#Fn$sk1fMNbfRgh3O($`Mu;Q#ho-H{3 zt5*K=niL{=Y8O!gL*@3kVezF*Kh_JlqNTr@&GgFVBW4biLco|auI4pE{Nu}`OkYAxk0Bbs3NIb02Z@L53}ArU053Wz_DC1bBc`#8MG#Z1S#n<|gIih;OF>0oJt#7dM3)wJ}E&WkBI2-{TyvM+O zRVTH=@M#1Sd^YsgJ9SNo^ZG#E;ll-=zA8EEqN^osc{0TZ!LZO_T}2?cZEt~+d)Bo2CaXGW^pxO&K(kjE&{(=qGdD{ zL>bg_SgPpc*>4@k;U_nDPYR}4f~5qA{c(W^_p~t zX&}gC8mzN~!pbvA#Cz^MwO;pJGfyr^BV^uX7!Tig{px5SNULY!4Zkgoc@TP6L!47VMBQ;{YcIY%XE!P7`_8>|rJC}?pKK`N>Im=&X5Lj8jXhH= zYi3gFD8CROto+pJUwPkv2;#I5P}&{Nxl3*l#z84<(wE?uqF3mdpctKqYEep92MJ_w z=SbpA@tyVuCY@HlP+bxfkBC?AqJY1$fV^)<|Kl0$-zp_<759)jT_n8xYBHK;_6XCs zMiAwYX-ud9`kX7MZ4V;7OIT*UYNMog=x86vuBF$?zN6h$P5SR9t)+kj0ub2;er;a= zn4>Jp;7uwuVk3KO590fekq@ITFZ zgKFb0!F`Y+Y(}=794<6fmodn2?F$%9vbn21mELhWtqY)uw2xs6+Q8?(JIzn(Bn5}WojhWA>US%!mn}8)UjklifO0?mRe0 z$uGT1_P2q#Goz<$>(I0Rw*c>$QSn+1YkzEAd$<3$J|P20D`=N8s!1OJ(0!TLP`Qm@ zO2nKiSovB{1m~zai4dv`pffFYR6&g-iJ%w21*n1wD%fI@nY6nk;(ya<(gtJvQ^Il{ z%q^Gtz!6U-fDlI9D3k!1favA&Y7iJu1HvqIV@0`cAI2u^0W#PNWErD)vMMXHMazPLLEp%jE_YLOWtc9c8k zj`D7jat?9<VnOeVh zGJ`-I29&jy@?qzBG;vkS{g_!7nchhVBWXm_ z$iKqw+gbocRB-yM@7hwj2QBhiyTj_$;E?S7^`yNaatd0Rqv1)5Cbp=mueSDo6tbIUyqrTB-3 zVtyO8<}54g?PT|J+w9pEe8@WT=Uw*yT$8eIXgrA~wLE;N+s$EUDkSg`*g$X;IbRkQe^zSBC}Oet_r39N0Ck9i-Vv?f2#y?KMz=Zt>XjDsz@rN zbros{E^U);^6k;xX9Y6ra%&$oF88$=E!2#dTOVjs240*z?6%B$Dv$|7)TczOFt6<>#Z@MMr(U1A8ewwrt5FB>%*Rf?5A}eS^wRFea32-44 zRUz!=P+21>bw&M;H1@poM}a>8g7Xh#n7k4#*8HE}g=SK#27N`nx3;cMKw&w1i%Wp0 z;Cq$iEQS=f6K>G^HxV zfIxQf>&nLA7EjqF&4lC)h!AelLJ;5Vp-9oRHaFC4m?(_OiT3cgQ*7X5>7ROOg%I)x zA#79cN(Inu7XoX`eQd*?9Xtg%{!7O_-%tH-70n@R6HJ^_Nu9140@dC1p+OqNv_EAO zd~Q>)u~teF62@Kdn8uO81}LlrvIQKYiaB{i$XCXfYnB-=4&2-+^CGgjf~h;zDUs*g zvf_E~$jB)L%G}!4L42NP!%Hpy@z)JDSlLF-E+UvtXV!Qx4QYb^juj!7z$z8k*?f}3 zmqbPFUwU0Rb8&RV5`TS3J@WII%`qM8wLW{o*_zwDhc=tdp~jJ7`Cj)LR~hF0nW<=q zSH%T7f;WBLIzK*Xns)v`SbgYYwnkbtgPGv*JIE$ZX@-i$4W%Z|2rG`Tf1##&N_R8P zhO70aG&=(>YcJyR(4tCT1JE8}&Z<(P%Gg4oY0 zZ_)-#rmPg%NY_+KRM4u{zCS7`mUa-iL6x$*bqYjwsd5FJq?z5mLDOJT*W2{K4k{^q z=5F=uv-@^e2k`jD6*ZA6URH>Ji)*|l#N3~d8eBOoLgris67G_;El@`C+wf;zYJ3ZM zbs|G>$zqJzeRy$|wP7AU@`HRw&X018Bqp)jR!|0`miU~%*Y=5wLEJD&{_CK;jhoXq zK_siUV;#57PvJ*PN=^z1>}C!M3f}}DDPS?m#yLr3%)SEjpsV+HO5q^Z705?ZxG88f zU}&oxS-e-Gov&^0>E_YnYUH_SU=4fG>m$y1o^V&i>o&u5{r=_S&wik*1Arobb;Rv+ zIX4jB9C{pum?&M76u7KcN?ZmFaOA z$F<;3%oDiHz8NB}4x+_!l1XMw>22{%|5}Qj9jaTxyUQ!*H!rUwNP8IZ96;)frM=LX zhl#BCAbc)!H&P(dcR1s#Mr7_`3R8K?;M{`8{O>vc%In!1k)rkGC5h%($99~kEwX2_|W0)2tDz+goCLbKYos!-SU11Y)VfGh{@N z5u9+ob4ElRQj@}{g!Z~KtCwz2N%kdAENTomYqRE#b#bnlFVhstnwd7NoO0|;>~~4) z(4g^*2yUq{bM4rMf*X0%5_>4EQ6y!ORt>GLM8VUH;JYIVnt{L<&wBhdV!a=_yL;r* z1XnQ$8XyA=$u0=enBC`I&zpgk0aa{aYjdT7td!j}3VXgwK&A7$svo5F*Ho<#!XwI; z_D;^IaFgb(;wJxBGzpMsHV_k~s#m#i5C;-^K*J)ouYhAQru`5g5c9wGqcjiDVs z2D7giwM#xPO#wbN`tIhdA%gswV%Hg25)xpa>Yqq{Y(BXnNoZX1^oOdCwB%rMD%^x` zMzaq!%+jE=SH{m*FHT+5Kd@K~3q{(M*l8J2x~4;1E{kUU6_0ik`-GEt>5`rw*D7eA zOdL5Kk9Y*(V%^@9(7uBbj}aOV)A(xJ_yY2u^2!7c&$PgA0p-S~lxKmEu0I5iDeNxg zSXoa>bpqwdvj;!UG7&zU=kTE0@>Xjvxs`&S+04HMPv z8SCXa0bcB~GEcFd6pD2@jn{mIh*5FL-n|e59pKp8#Lc1ad{QeGn5MMV38sl~g@HH8 z=KHZcQ`oafV8KI7OpR+-$g9GZfLzBH>YuYCN|+fp&wCldkXf&>pl4v|%wP)C?65=g zAN41^`oqL$35fy zeRI#Yt!=v(%XOoqoj4-f{yaf}xyAKI-Q>KC?AuD28&RmeycVOL7na^i83G=&u`6Zp z@Ai#x>$nmvbuaz#oqDp$JU*8e2Ju4Tx`5niko9H349K1WZZZ&AN1Zj=sS;Ab_gVsqg_cv$9lf0?9 zH4uGW_MPzo`{etk#KQC0l_a`vQrY=^;B6Kf!Yr@wS`-qTAQbc+5?_ylZ*qc!TKOjC zy+uSqDlb)P6fbBn2JWA~%9E8T^N{C{pnCA%LwpwkJ{k@L(>Y9q)Igi6iu=5`4-Xwm zp!ptazR|=~ja3hV%;|oi12)Tpxqw24E46eODRov}ngaliw*h}C)pj7oDio>7s@_&< z!3F4@5}jUISgVq!=hYy*wxqfCS`k%&nn?5NoX8S*jil+6gq98!yU*=DSqW&_Qaj$Q z1*Xvl)1cTlhA4KVLEMjtGo9NR#rR@3Arjxa=;?l~+z&%SmD?knZs^;QX|+rMh3(v0 znHMPZ8P51Ep!t}bL0TG+?2PCf_2(!ivc3QCVt*Y|Hl@89iZi}n$O)dIroU#@g z#jj^6F9uE2-#2SA(D;%8QO;K$r}fZ=N1hqLZG!2K;hEvz2Q3zx{Tbmzk6{pK z8;8Rka)r^Go|Vl;D->Ps7Ey$#ZinuRu%3|trjvcUBi1;aUtWctX67*-tnvh-PFw2JEtiyx5A|i2H^Gpu zxUzdv(`2>I20;pKfrFl5i1zG;EF2DRNE(SV2|TkLensD0Jc#_E{u}#d0U>0}(fo0^ z33jGB{OjqE5qYHZZW9T9~a`oUu+*7y} zy+cPWy72dd7Qwj`^Qs3j(It7iMoKeXuB?wX%_gdwU!|+>I7W_gm!>|2VTg{1`yK(a z!`CzI))KO+PdEwQ%gbE7#yRtvOv(L$r`N!=1Cjpc**n;X+G~i4T;uMaZ?p=vWC$Mb zcDePMOgZ)w&b*(&9Cye<(AP(`yfv(=KHc50`hHBhf4*f`S`;kKQQ+(V5w7SmY!U^t zG5%qhy)*G+AJ{{tc4ZNC0Ecz&z5QWwmWcOIC@suLE_;x+n7wqUzCjTJ)q60alNgSm zZPyL?zD7Z3fT~IWSho0G+*z~mlPVxFDK+NS5fuZ4Y+aec-jz&G8G>uF^uEvD)NIq@$5ZT1lEbBqkq_A}De^d&$hq@zQU&-~KZF?FFCA zvms+8aM)9bybQ=D*H{0Beqe4##`USrH0$(-36+fgDI_S1$cgL)?*M_fhEMy+*;~8S z>wR1?EZl59J~-O7z2JN<^5uIhD65Ac`zMH6>chP?AqHQJDRsKQlO*Tj@bv1Llp0;? zQCUC*#gyLIbtrHPD4Ii!=$LH_`%!a;cK)UU7NIyZDTO6eMiLAk&AHT?1S{t43V!si zU)@|;xcgY)VOYJv5f$Q->G)%(;G_sdp!Vr+0y^<_yq1dbsxS9lN-Dbg{s|9ey5Kp^ zQ|$y1ane=}BVt%maRs?$+G+5F@BjgU(v_!(7qF}kq-*A)tjM$_UoYx8moVTKt{?y1;z0trv!NS0x7H7v!v_@;~kv%zI3)e-GTyj(0B~aK-51%4xY-L(vj>d+PNLVE3?I zHHwy^gLE6m5d~X&deZel+tUK%S7+xq1$BFTD*EYU_J*QlCxvZe*ZlTv_FxKyF$76# zoNr(cH{9mDez%=(Rf0GfG$GYJtXTxusXej5Y2vR#k&dvWC99@9($(-01tpqyTHIG5 zlQKADUz7DCUCDjO$+Jf1?h+E6=hM=Kq~zA8{V`Dv?V;*x*4mPzOVV;gM`+?KE`lmd`wZh;ew z;G!49MxQKeXSVb>J)_-tJ^9kKc?g!e6fJ_9Oe(Gr(u(*+(m4I@F_1G>8iddI^o&np6&)~Mp!Xc`8MIY_5;|rKq{op+L(gFZ$ z!a*J~kVGt1 zvKJh_aMsl3A1aFg>ZG2!mzhR4YKh!U^qWlJa1&!(PZ&4JK^RDpeZ~+ei#9)e#)?Iuz~vi4?<`&MuHkNYv?%7#NXD5tKboJu}Fe zCvwnEdZ4Bm^~uMxm;mb5R`&*jFhCiylwtW^epUpwFT%>@VWpI-Df1JEQM|86NkO6~ zfqF7L-?1)ieF~;wz@@VKxh|UrcX? zo-X9q83(NB-Kwg9qk&r+7TrJYc;Nuu94Q8gqR+e3WK?MFiAun@5gOYupqxB+9D%4cDf^RG=Q0wZuF+O0X!oiL4U)v`EeA?@^+@YDcB zUX`+d$D`!oXlKnH_oBL}MVv$w;PDZfAjJ^+=g1aR>{8Q(1edcJB`$lm8wgRc&8mfa zDf`R%NDY%#J3V!Hs|Sa1QZ~ln4<^ox@-Ts}A-GjHVQ<5O&46k``N*Ypa-_)D^jykw zf6<1g$)p7|+To4Nm& zn^5`Nh=pYDXH=Ackm0lHi^<1@>NJTAFe<~zqo#ZKSSN!-9~{Rf6tIUS15!48`8r5+ z`0ZVK!dT>{Lv?0#sF|pcls(+>TaUQLv{Sb2d0_a7aOceiq%+)(%kmu`?Y>Tc@!$nm z5C$7lfCvu!w8xGJVl&(oSZ^ZE5LBX){7PR%(2oPmURqsvskfUTg@mFS2~eUHrSEH7 zBd?p+TH-U>PY#!$Y<8!?+|qgp0v!Mc-Y&$rH40V9uvr)a_RF!~n=a&>{pYlb-Cw3+ zxbTa{7jL&ay@dRoA)XcQcI!=(&cVu!oi&YZm}SNKk_F~~nYY%flX6~qv6o|ePt{*| z5#uUleIuRqWH^mCK&zw~l`;E&JdZ!PK5@8hPSNzq&do7MwaqJF3-To^9<;1bCZ1+p z!-dR1*)h7ovpc0MCZNqXG+Fna2-T^yc_y=$vW zw(i}S?k11c6S={7d5&NR!n&J^p_sigJA2{?v7Y=OEbOoCY*mR|@&oh@`)Y14eFDCS zoV%`?vyQOK-ynqy+5^uNgU1v*+#E%Cfn<}sK zrX8XQJ&_~@Oa(X@x%V1^S|_@X)zj{HHST`_wCrLdM91n@(d;(PB)Q)TNRaH-%&ijM z8s;=?fx%Et-p@NaO7>FDR|8tc=ykFvAqwrs{%b+`O;UDNBkT4*-yc94Vx7>j;1(V` zZS`3Ix^gXleNcO~3K1ro$lM$cFe145BYr8IS!G-AlhMfsEz7~J2i#qcAF)z}wyiBi zGmT+AivOK4^*eE4>@rC9*OAQLit6SYc&)-PPh~3fb>&twVDph>24#ZpLgpMLaL^~Z z4LiLZ=GFe4_)KBi&}V!6fov<3@yHt!{+SJvxj-cne|An(ojE#WImKDt4f#Hl7of@A zpHpOZM;Gyjo`<3#86MIa5>ll|nLc#i;!i!<>-=t`<(Og*T=E?!O-Cdk4tVk{Tpv+) zZ*52kRo*z`m*vrql{XQ;^X_&fXDzEtLpe^R%|-DwW|ZZNBzw2fw$Rq8d5eLXl_Fb4 zOs3l1jMFD~9_Bh3-Z99O^QE4w294SxL5yjQSnM}zu!VbBl9*G9BCsg)sc?%o5)(9R z711|054C|(XBe3pO3~UPmCH2Zs2ojY$>wE{AJ2D7r~#&T6c?yLsgwI+b0ts5iSFn5 zlrLE=P;b>qPvw-fu?0aS&L4UYL?y^a2mu^2lRbyRPDi&l(7odsdBa-}yPDl(UvyO)$#cgwO7E(F?4qLyn6!+A19dpw%{y zP4+amVwA2?`kGZm$FU$EJ5gL2^?_@I)Eri0Jj^#qT5-TDpe*Vne(+xG4B~Pbb6) zY3>!6mK;kY86e&n4x&Hrmv(In+ftRB7S+D5Gik?%Gwql%b&tvj%Nxz9ki(oIOILYp zq~_65y+6qBuf=Po0F0Ynk?D@$#JA3uc8rR0_ORo7xiiP=WG%pN0u0iCQ=H8)pX?5p z`T)z0h7CI%zhlGB)iS9)-Sg8-j$_)cOFkkg&`0>-LPi$8EN=>Zys&X+KQ-S_SG0%Q z?P_D(a|t55S{CVl@p+>^+>@TuA>B_d$zWq$Y8ap7?2?N`QLCz|Y=dbkN)@ifOSlhR z`r4JK+1TdM;GEK5jnU0%87M^~E6U^_+=Caq=zDulhm%+8rlU5^K?jC>E!)pjRH)#j ze%gbgQc|{-`z1IR%WreaRPozeJBhU=2JQ!@9{1Ms#l(|aQo9`F4x_b2_<`QFjp^k%@NGDyY;6q%W6B09!(kKg}u%#a4L*eY(B?OYi zE|JLS*L){|&*8D%(|~`vlo#12?O%;_cGBoh2nCeee*l8zClZ) z<es$z?t9~w7*RNkG{khHTXy&;!)5QEM%N(5&Ul?pk%dj37 zn6XZK4ZUEO+yRAf?;~t+zpHnKA*ky^_GrnK zZrX`aE;&?vl>+azm6cwnWExt;i{A1xT?9jK!ey3zWy@P1IVAD@l!VRsM$Gs|DOtd zX;pG=eB6^B?4E>b6NX40AA9|F;wC-4E4~87{)ihF1g12O^z2Tsa2O~}{h)8B8QN8& zhfweF6_sJ-dG0k}%gpOl^Ljj>GnBh*RFD8iZ0aS{ZODhGG`b0I;<++f!R=9N--Tw= z85CV8#jQ01(65#6%vcj=4vBL_UAk6_GO;qS@(dHtyu$=3q6LOY4qMWv)` zyBA7~Ncjv%yj&v9H%f6jY*@^IWa7nA75E7WdL?plN{&Nc;2t%4_tpZuykt3k_(*!8 zLaVuK2e`-XFrG4&+(gtGoib`;uc;#Zq&|Le>asjd_w&l$>)D-Kwui4|7&@f3@R77P z#u_K;qPFa1@1+v^Kl=37ee%_%IhnKw{A;ZG#~Y_LkW?R`Il+l&n!V)Dj&Pgj>upSP zdgjC;2GZbNs}%8cgME2KaPZ?#igP;?z*+Ky5@~_j??LH$@1()8nWE@YL@B4VfN01L zmx|4>cCl3`9j%pcpLOY&U9!E*mH$eOX%vuP<;g0_r#}zt(s)#Qwfp@q$RIQjkdcP3 zL*{)%=&CQ-a=P@QhRU#I`Rl_l$#rGeTdVQU2=j0L;Jn_9Oc5le9=_u@mj+Dxi8~!z zdADD`L4E3ox)6lJn4qWdia7=knb3^=#+{(>>H11gOC>^${MK)kf{qQHu2c)Rs^Oj9 z^%rLAd3k+Yk1j*{5g*Mi$@35=y%84GlKYuS2CCnBL>88(TcsNEE_=g}?`VO^IU~al z&qKeRK!X3fIRNdQ{)ciwPe_?_7OVO^`A?A!6**-NB)cmch8`Cw)#w7_TeImy|5G9| zh}4!b`DPyi3~1GDK%%7mn}m?lw{Z)G-SMFs+WD}Z>5VI#_K66@F)=8-zz5RZakt9G zZ2(HW=~AvsmSqxz;R;mH;D9dnso9(&5Zfe&f@!9klif5{c7>tuNQ@akdWR+SQ%yP* zoE(G*O5k#`$H$ix`CTxzI|1Hvg&L>(T8pR?rB8+i7rOv`B-dMAa@U|GQZN2)!Cs}% zv6udG3;p-RnY^x+S!xW|MQAY%)&F3{lAc4U+{T#QzIBIwPFj|u^7=sO&j)(MC`W0({V-Fcn-zQz?UTqeHqBw5!W7)U6k)+R@H-{}ux2n#V^c zl-)muIL~sh#d&d-^mx(!zdHXVoS_Bbn#*A|J3f}KHHuOtOrm2)YHnxxfL^cTpz9v2u7{?T@~O?$M* zhGXeJ(fL6Wfq)6*;3luB(_Ld$3;3*IEgk)F8?qPCgZ5uf`IN?%ITRYykz_d6o!>61 zkx#)9Jd;ZH$|Ad8Xn=O;OV1SB?E4NrrH8ihOQKig(Hb^BCIOu4q?S1qOjE1hL0VRGcP#j7z?ZYha+Lr1ghS*efX7P?@PlFPYUmw)V{ zq3)H(5g&K9>~GfjMad%ufB*Zlrd)EgdxEMvZuZ(VGHfmDrrPeqwS(-((m#g(j1z?t z9r-97B~q#KDrafXs!P0A)<%%|T6qXSCS#K)h|X+CvyDE~E#ox(?@g-4<{@nPG3ha> zs~h&~?EOFV(37-WN90a!yMT3NE%^Xh6rQg1TDvym8q%I~cVB`sMeo`{x}!2Y?-Y7} zC8A$XtA({}6r6kBTbgbapNXC7@e<9&!H!OTR)CtiNTgZ*2>gT1onDnHVc-&GY4#;n zbtM+<=$mzrLqGbVI`x=t*@(iK?Pi7pXq6mJXSC~Bh6nTn4N)vl&v%o9P5m1q!-h>hY;##KepA3|GhS00I@o83+;_eqUTOWSm zPketIw{c+xAwo4;Kcg zfcbehmwS@aZruyBaZ5v#r>}KG5iYZ+BL|Fj+8`fqQqKaGiXf(9EwHW3^KJ3wv4Yv! zu)U*M@9bxOuhC1eQ}gcI9eGLV4c*6arRO*R=BntYgbT4^xMb4X#!$1);@;{TxVSa# zZ8Y#9gzE%2jP>TWiCn)jrS{paSAx#2nE&Z^Zp|cNed+q*>-L4XrtW7j7EE(+AT59yXV>Hf$x8+Q5k~RLOzOVdh7^Xt(4g^f>#2#u%v05dPqw^+ukA-KQ!WTR z^1`wr!MRb+mtHlz-j4w|GvJ@pA%$55>xA(kxytw^`qVkZ5&YSWv-9!RWgYfEr;j2e`TTulIsoNIgRzT z8=r4IkVm8s!2S#m=o|#}0Y+Y;wlVp?{Codd)W4uC9bT%d?l&hRPaj`Hw)GCCvN)NK zv?$Zy#z0RH3mP{$QYp%!;_oN(CV5JHQ*`{ZTT4g_7h&D}mMk+dg`b$vSr&Ws+>=YO zuU-_LGbR7|pB%|oKg#1{o~wUulY8_jS*gF^Qjct>^ZyrP`>S(H-R0N;15gq9kSh;Y zWdmKhS-8|-rUj;5mdVCr2DOni*WPEzU4(6 z{7~By^3^Z>U&TTu_so#ij)dRc8C9)gPo91Ie0aS3u~5N5IaQa8kW2tuw&q)x0Kv*| zI1|va$RLG>n7O=1#!X3yuZ2d2Muwc6P5ifiw^y;}XZn=VBT~4_9&k7JtI5CrYxPqm z4vM+KfqQv=zgcmgg|>vlX@BnV%%wst;|Y7qVXh Ue>VSY8l+oDtDL!UBjG>)2jJoS+yDRo literal 8546 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 diff --git a/1986/Makefile b/1986/Makefile index 81055fe8b..e0371b795 100644 --- a/1986/Makefile +++ b/1986/Makefile @@ -1,9 +1,45 @@ #!/usr/bin/env make # -# 1986 makefile +# 1986 Makefile + +################################################################################ # -# This work by Landon Curt Noll, Simon Cooper, and Leonid A. Broukhis -# is licensed under: +# An Historical Makefile NOTE: +# +# The orig.Makefile, if it exits, is the original Makefile before this IOCCC +# year directory was reworked so that entries are in separate directories. +# This also applies to any orig.ansi.mk and orig.common.mk files. +# +# Several Makefiles were modified / formed in 2022, and as such it may have +# elements that are not historically compatible with way entries were built. +# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile. +# +# Regarding individual entries: +# +# IOCCC winning entry code may not work on your system. Even with standards, +# conditions and build environments change, especially when it comes to more +# extreme code such you might find in an IOCCC winner. Moreover, what was +# allowed and liked in one IOCCC contest may no longer be liked/allowed in +# later IOCCC years. +# +# Corrections on winning author and fixing typos in remarks are VERY WELCOME. +# +# GitHub pull requests are welcome: +# +# If you have a patch that might make running an entry work in modern Unix-like +# environments, please create a GitHub pull request for the IOCCC judgess to +# consider. +# +# Suggestions and corrections regarding Makefiles, winning author information, +# fixing typos in remarks, and code patches are welcome via opening a GitHub +# issue or better yet, by creating a GitHub pull request for the IOCCC judges +# to consider. To form a GitHub issue or GitHub pull, please visit: +# +# https://github.com/ioccc-src/winner +# +################################################################################ + +# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under: # # Creative Commons Attribution-ShareAlike 3.0 Unported License. # @@ -15,38 +51,78 @@ ################ # SHELL= /bin/bash -CP= cp -CPP= cpp -GUNZIP= gunzip -LD= ld MAKE= make -RM= rm -SED= sed -TAR= tar -TRUE= true - -# ANSI compiler -# -# Set CC to the name of your ANSI compiler. -# -CC= cc ############### # IOCCC winners ############### # -WINNERS= marshall hague applin bright stein holloway august pawka wall +WINNERS= applin august bright hague holloway marshall pawka stein wall + +YEAR= 1986 ################### # build all entries ################### # all: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ echo "(cd $$i && $(MAKE) $@)"; \ (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' + +.PHONY: all alt data everything clean clobber install \ + love haste waste maker easter_egg sandwich \ + supernova deep_magic magic charon pluto + +# alternative executable +# +alt: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo + @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ + done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' + +# data files +# +data: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo + @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ + done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' + +# both all and alt +# +everything: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo + @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ + done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' ############### @@ -54,19 +130,189 @@ all: ############### # clean: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ echo "(cd $$i && $(MAKE) $@)"; \ (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' clobber: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ echo "(cd $$i && $(MAKE) $@)"; \ (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' install: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ echo "(cd $$i && $(MAKE) $@)"; \ (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' + +indent.c: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo + @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ + done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' + + +################## +# 133t hacker rulz +################## +# +love: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo + @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ + done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' + +haste: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo + @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ + done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' + +waste: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo + @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ + done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' + +maker: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo + @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ + done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' + +easter_egg: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo + @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ + done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' + +sandwich: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo + @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ + done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' + + +# The IOCCC resident astronomer states +# +supernova: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo + @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ + done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' + +deep_magic: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo + @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ + done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' + +magic: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo + @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ + done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' + +charon: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo + @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ + done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' + +pluto: + @echo '=-=-= ${YEAR} begin make $@ =-=-=' + @echo + @for i in ${WINNERS} ; do \ + echo "=-= start ${YEAR}/$$i =-="; \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + echo "=-= end ${YEAR}/$$i =-="; \ + echo; \ + done + @echo '=-=-= ${YEAR} complete make $@ =-=-=' diff --git a/1986/applin/Makefile b/1986/applin/Makefile index 00dd75078..275a81352 100644 --- a/1986/applin/Makefile +++ b/1986/applin/Makefile @@ -1,25 +1,591 @@ -# %W% %G% %U% +#!/usr/bin/env make # -# 1986 makefile +# IOCCC 1986 winning entry - applin + +################################################################################ # -# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. -# All Rights Reserved. Permission for personal, educational or non-profit -# use is granted provided this this copyright and notice are included in its -# entirety and remains unaltered. All other uses must receive prior permission -# from Landon Curt Noll and Larry Bassel. +# An Historical Makefile NOTE: +# +# The orig.Makefile, if it exits, is the original Makefile before this IOCCC +# year directory was reworked so that entries are in separate directories. +# This also applies to any orig.ansi.mk and orig.common.mk files. +# +# Several Makefiles were modified / formed in 2022, and as such it may have +# elements that are not historically compatible with way entries were built. +# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile. +# +# Regarding individual entries: +# +# IOCCC winning entry code may not work on your system. Even with standards, +# conditions and build environments change, especially when it comes to more +# extreme code such you might find in an IOCCC winner. Moreover, what was +# allowed and liked in one IOCCC contest may no longer be liked/allowed in +# later IOCCC years. +# +# Corrections on winning author and fixing typos in remarks are VERY WELCOME. +# +# GitHub pull requests are welcome: +# +# If you have a patch that might make running an entry work in modern Unix-like +# environments, please create a GitHub pull request for the IOCCC judgess to +# consider. +# +# Suggestions and corrections regarding Makefiles, winning author information, +# fixing typos in remarks, and code patches are welcome via opening a GitHub +# issue or better yet, by creating a GitHub pull request for the IOCCC judges +# to consider. To form a GitHub issue or GitHub pull, please visit: +# +# https://github.com/ioccc-src/winner +# +################################################################################ + +# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under: +# +# Creative Commons Attribution-ShareAlike 3.0 Unported License. +# +# See: http://creativecommons.org/licenses/by-sa/3.0/ -SHELL= /bin/sh -WINNERS= applin +############################# +# shell used by this Makefile +############################# +# +SHELL= /bin/bash -all: ${WINNERS} +####################### +# common tool locations +####################### +# +A2P= a2p +AR= ar +ASA= asa +AT= at +ATQ= atq +ATRM= atrm +AWK= awk +BANNER= banner +BASE64= base64 +BASENAME= basename +BATCH= batch +BC= bc +BINHEX= binhex +BISON= bison +BUNZIP2= bunzip2 +BZCAT= bzcat +BZCMP= bzcmp +BZDIFF= bzdiff +BZEGREP= bzegrep +BZFGREP= bzfgrep +BZGREP= bzgrep +BZIP2= bzip2 +BZLESS= bzless +BZMORE= bzmore +C2PH= c2ph +C89= c89 +C99= c99 +CAL= cal +CALC= calc +CAT= cat +CD= cd +CHFLAGS= chflags +CHGRP= chgrp +CHMOD= chmod +CKSUM= cksum +CLANG= clang +CLANG_PLUSPLUS= clang++ +CLEAR= clear +CMP= cmp +COL= col +COLLDEF= colldef +COLRM= colrm +COLUMN= column +COMPRESS= compress +CP= cp +CPIO= cpio +CPP= cpp +CRC32= crc32 +CSH= csh +CSPLIT= csplit +CURL= curl +CUT= cut +C_PLUSPLUS= c++ +C_PLUSPLUS_FILT= c++filt +DATE= date +DC= dc +DD= dd +DF= df +DIFF3= diff3 +DIFF= diff +DIG= dig +DIRNAME= dirname +ED= ed +EGREP= egrep +ENV= env +EQN= eqn +ETAGS= etags +EXPECT= expect +EXPR= expr +FALSE= false +FGREP= fgrep +FILE= file +FIND2PERL= find2perl +FIND= find +FLEX= flex +FLEX_PLUSPLUS= flex++ +FMT= fmt +FOLD= fold +FS_USAGE= fs_usage +FUNZIP= funzip +FUSER= fuser +GCC= gcc +GDIFFMK= gdiffmk +GENCAT= gencat +GENSTRINGS= genstrings +GETOPT= getopt +GETOPTS= getopts +GNUMAKE= gnumake +GREP= grep +GROFF= groff +GROFFER= groffer +GROG= grog +GROPS= grops +GROTTY= grotty +GUNZIP= gunzip +GVIM= gvim +GZCAT= gzcat +GZEXE= gzexe +GZIP_PROG= gzip +G_PLUSPLUS= g++ +H2PH= h2ph +H2XS= h2xs +HASH= hash +HEAD= head +HOSTNAME_PROG= hostname +ICONV= iconv +ID= id +INDENT= indent +INFO= info +JOT= jot +KILL= kill +KSH= ksh +LAST= last +LD= ld +LESSECHO= lessecho +LEX= len +LINK= link +LN= ln +LS= ls +M4= m4 +MAKE= make +MAN= man +MKDIR= mkdir +MKFIFo= mkfifo +MKTEMP= mktemp +MV= mv +NANO= nano +NASM= nasm +NEQN= neqn +NICE= nice +NL= nl +NM= nm +NOHUP= nohup +NROFF= nroff +NSLOOKUP= nslookup +OD= od +OPENSSL= openssl +PASTE= paste +PATCH= patch +PATHCHK= pathchk +PAX= pax +PERL= perl +PICO= pico +PR= pr +PRINTENV= printenv +PS= ps +PTAR= ptar +PTARDIFF= ptardiff +PTARGREP= ptargrep +PWD= pwd +PYDOC= pydoc +PYTHON= python +PYTHONW= pythonw +READLINK= readlink +RENICE= renice +RESET= reset +REV= rev +RI= ri +RM= rm +RMDIR= rmdir +RSYNC= rsync +RUBY= ruby +RVIM= rvim +SAY= say +SCP= scp +SCREEN= screen +SCRIPT= script +SDIFF= sdiff +SED= sed +SEQ= seq +SFTP= sftp +SH= sh +SHA1= sha1 +SHA= sha +SHAR= shar +SHASUM5_18= shasum5.18 +SHASUM= shasum +SIZE= size +SLEEP= sleep +SORT= sort +SSH= ssh +STAT= stat +STRIP= strip +STTY= stty +SUM= sum +SYNC= sync +TABS= tabs +TAIL= tail +TAR= tar +TEE= tee +TEST= test +TFTP= tftp +TIDY= tidy +TIME= time +TOP= top +TOUCH= touch +TPUT= tout +TPUT= tput +TR= tr +TROFF= troff +TRUE= true +TSET= tset +TSORT= tsort +UL= ul +UNAME= uname +UNCOMPRESS= uncompress +UNEXPAND= unexpand +UNIFDEF= unifdef +UNIFDEFALL= unifdefall +UNIQ= uniq +UNITS= units +UNLINK= unlink +UNZIP= unzip +UNZIPSFX= unzipsfx +UPTIME= uptime +UUDECODE= uudecode +UUENCODE= uuencode +UUIDGEN= uuidgen +VI= vi +VIEW= view +VIM= vim +VIMDIFF= vimdiff +W= w +WAIT4PATH= wait4path +WAIT= wait +WC= wc +WGET= wget +WHAT= what +WHATIS= whatis +WHICH= which +WHO= who +WHOAMI= whoami +WHOIS= whois +WRTIE= write +XAR= xar +XARGS= xargs +XATTR= xattr +XXD= xxd +YACC= yacc +YES= yes +ZCAT= zcat +ZCMP= zcmp +ZDIFF= zdiff +ZEGREP= zegrep +ZFGREP= zfgrep +ZFORCE= zforce +ZGREP= zgrep +ZIP= zip +ZIPCLOAK= zipcloak +ZIPGREp= zipgrep +ZIPINFo= zipinfo +ZIPNOTE= zipnote +ZIPSPLIT= zipsplit +ZLESS= zless +ZMORE= zmore +ZNEW= znew +ZPRINT= zprint +ZSH= zsh -applin: applin.c - cc $? -o $@ +# Set X11_LIBDIR to the directory where the X11 library resides +# +#X11_LIBDIR= /usr/X11R6/lib +#X11_LIBDIR= /usr/X11/lib +X11_LIBDIR= /opt/X11/lib + +# Set X11_INCLUDEDIR to the directory where the X11 include files reside +# +#X11_INCDIR= /usr/X11R6/include +#X11_INCDIR= /usr/X11/include +X11_INCDIR= /opt/X11/include + +# Compiler warnings +# +#CWARN= +#CWARN= -Wall +#CWARN= -Wall -Wextra +#CWARN= -Wall -Wextra ${CSILENCE} +CWARN= -Wall -Wextra -pedantic ${CSILENCE} +#CWARN= -Wall -Wextra -Weverything +#CWARN= -Wall -Wextra -Weverything -pedantic +#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE} + +# Silence warnings that ${CWARN} would normally complain about +# +CSILENCE= -Wno-error -Wno-implicit-function-declaration +#CSILENCE= -Wno-implicit-int + +# compiler standard +# +#CSTD= +#CSTD= -ansi +CSTD= -std=gnu89 + +# compiler bit architecture +# +# Some entries require 32-bitness: +# ARCH= -m32 +# +# Some entries require 64-bitness: +# ARCH= -m64 +# +# By default we assume nothing: +# +ARCH= + +# defines that are needed to compile +# +CDEFINE= +#CDEFINE= -DIOCCC=26 + +# include files that are needed to compile +# +CINCLUDE= +#CINCLUDE= -include stdlib.h +#CINCLUDE= -include stdio.h +#CINCLUDE= -include stdlib.h -include stdio.h +#CINCLUDE= -I ${X11_INCDIR} +#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2 + +# optimization +# +# Most compiles will safely use -O2. Some can use only -O1 or -O. +# A few compilers have broken optimizers or this entry make break +# under those buggy optimizers and thus you may not want anything. +# Reasonable compilers will allow for -O3. +# +#OPT= +#OPT= -O +#OPT= -O1 +#OPT= -O2 +OPT= -O3 + +# default flags for ANSI C compilation +# +CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT} + +# Libraries needed to build +# +LIBS= +#LIBS= -lm +#LIBS= -L ${X11_LIBDIR} -lX11 +#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL + +# ANSI compiler +# +# Set CC to the name of your ANSI compiler. +# +# Some entries seem to need gcc. If you have gcc, set +# both CC and MAY_NEED_GCC to gcc. +# +# If you do not have gcc, set CC to the name of your ANSI compiler, and +# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just : +# to disable such programs. +# +CC= cc +#CC=clang +MAY_NEED_GCC= gcc + + +############################## +# Special flags for this entry +############################## +# +ENTRY= applin +PROG= ${ENTRY} +# +OBJ= ${PROG}.o +DATA= +TARGET= ${PROG} +# +ALT_OBJ= +ALT_TARGET= + + +################# +# build the entry +################# +# +all: ${DATA} ${TARGET} + @${TRUE} + +.PHONY: alt data everything clean clobber nuke dist_clean \ + install build love haste waste make easter_egg \ + supernova deep_magic magic charon pluto + +${PROG}: ${PROG}.c + ${CC} ${CFLAGS} $< -o $@ ${LIBS} + +# alternative executable +# +alt: ${DATA} ${ALT_TARGET} + @${TRUE} + +# data files +# +data: ${DATA} + @${TRUE} + + +############### +# utility rules +############### +# +everything: all alt clean: - rm -f core + ${RM} -f ${OBJ} ${ALT_OBJ} + @-if [ -f indent.c ]; then \ + ${ECHO} ${RM} -f indent.c; \ + ${RM} -f indent.c; \ + fi + clobber: clean - rm -f ${WINNERS} a.out -install: all - @echo are you kidding'??' + ${RM} -f ${TARGET} ${ALT_TARGET} + @-if [ -e sandwich ]; then \ + ${RM} -f sandwich; \ + echo 'ate sandwich'; \ + fi + +nuke: clobber + @${TRUE} + +dist_clean: nuke + @${TRUE} + +install: + @echo "Dr. Spock says that is not logical!" + @${TRUE} + +# you may be able to misunderstand the source by reading indent.c +# +indent.c: ${PROG}.c + @if which "${GINDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${GINDENT} < $< > $@"; \ + ${GINDENT} < $< > $@; \ + elif which "${INDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${INDENT} < $< > $@"; \ + ${INDENT} < $< > $@; \ + else \ + ${ECHO} "no intent tool found, ident $< yourself, sorry"; \ + ${ECHO} "exit 1"; \ + exit 1; \ + fi + + +################## +# 133t hacker rulz +################## +# +love: + @echo 'not war?' + @${TRUE} + +haste: + $(MAKE) waste + @${TRUE} + +waste: + @echo 'haste' + @${TRUE} + +make: + @echo 'Participate in a maker faire' + @${TRUE} + +easter_egg: + @echo you expected to often misunderstand this $${RANDOM} magic + @echo chongo '' "/\\oo/\\" + @echo Eggy + +fabricate fashion form frame manufacture produce: make + @${TRUE} + +sandwich: + @if [ `id -u` -eq 0 ]; then \ + echo 'Okay.'; \ + echo $${RANDOM}`date +%s`$${RANDOM} > $@; \ + else \ + echo 'What? Make it yourself.'; \ + exit 1; \ + fi + +# Understand the history of the Homebrew Computer Club +# as well as the West Coast Computer Faire and +# you might be confused different. :-) +# +supernova: nuke + @-if [ -r .code_anal ]; then \ + ${RM} -f .code_anal_v6; \ + else \ + echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \ + fi + @echo A $@ helps ${MAKE} the elements that help form planets + @${TRUE} + +deep_magic: + @-if [ -r .code_anal ]; then \ + ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + fi + @${TRUE} + +magic: deep_magic + @-if [ -r .code_anal ]; then \ + ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "If you don't eat yer meat, you can't have any pudding!"; \ + echo "How can you have any pudding if you don't eat yer meat?!"; \ + fi + @${TRUE} + +# The IOCCC resident astronomer states +# +charon: supernova + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore IAU, $@ is a planet + +pluto: supernova + ${MAKE} charon + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore, $@ is a planet + @echo get used to having lots of planets because a $< can ${MAKE} a lot of them diff --git a/1986/applin/hint.html b/1986/applin/hint.html deleted file mode 100644 index e7cd86fef..000000000 --- a/1986/applin/hint.html +++ /dev/null @@ -1,21 +0,0 @@ -

Most adaptable program

- -

Jack Applin
-Hewlett-Packard
-Ft. Collins
-Colorado
-USA

- -

Judges' comments:

- -

Compile and/or execute as directed by the documentation.

- -

The judges were so amused by this little program that we created an -award just for it. This program is portable to the C and Fortran 77 -compilers as well as executable by the bourne shell!

- -

Copyright © 1986, Landon Curt Noll & Larry Bassel. -All Rights Reserved. Permission for personal, educational or non-profit use is -granted provided this this copyright and notice are included in its entirety -and remains unaltered. All other uses must receive prior permission in writing -from both Landon Curt Noll and Larry Bassel.

diff --git a/1986/applin/hint.text b/1986/applin/hint.txt similarity index 95% rename from 1986/applin/hint.text rename to 1986/applin/hint.txt index ff9913ead..e305d1030 100644 --- a/1986/applin/hint.text +++ b/1986/applin/hint.txt @@ -6,6 +6,10 @@ Ft. Collins Colorado USA +## To build: + + make all + ## Judges' comments: Compile and/or execute as directed by the documentation. diff --git a/1986/applin/index.html b/1986/applin/index.html new file mode 100644 index 000000000..9c0a75110 --- /dev/null +++ b/1986/applin/index.html @@ -0,0 +1,186 @@ + + + + + + + hint + + + + +

Most adaptable program

+

Jack Applin
+Hewlett-Packard
+Ft. Collins
+Colorado
+USA

+

To build:

+
    make all
+

Judges’ comments:

+

Compile and/or execute as directed by the documentation.

+

The judges were so amused by this little program that we created an +award just for it. This program is portable to the C and Fortran 77 +compilers as well as executable by the bourne shell!

+

Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights +Reserved. Permission for personal, educational or non-profit use is +granted provided this this copyright and notice are included in its +entirety and remains unaltered. All other uses must receive prior +permission in writing from both Landon Curt Noll and Larry Bassel.

+ + diff --git a/1986/applin/orig.Makefile b/1986/applin/orig.Makefile new file mode 100644 index 000000000..00dd75078 --- /dev/null +++ b/1986/applin/orig.Makefile @@ -0,0 +1,25 @@ +# %W% %G% %U% +# +# 1986 makefile +# +# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. +# All Rights Reserved. Permission for personal, educational or non-profit +# use is granted provided this this copyright and notice are included in its +# entirety and remains unaltered. All other uses must receive prior permission +# from Landon Curt Noll and Larry Bassel. + + +SHELL= /bin/sh +WINNERS= applin + +all: ${WINNERS} + +applin: applin.c + cc $? -o $@ + +clean: + rm -f core +clobber: clean + rm -f ${WINNERS} a.out +install: all + @echo are you kidding'??' diff --git a/1986/august/Makefile b/1986/august/Makefile index 31d45683b..15e1673f9 100644 --- a/1986/august/Makefile +++ b/1986/august/Makefile @@ -1,25 +1,591 @@ -# %W% %G% %U% +#!/usr/bin/env make # -# 1986 makefile +# IOCCC 1986 winning entry - august + +################################################################################ # -# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. -# All Rights Reserved. Permission for personal, educational or non-profit -# use is granted provided this this copyright and notice are included in its -# entirety and remains unaltered. All other uses must receive prior permission -# from Landon Curt Noll and Larry Bassel. +# An Historical Makefile NOTE: +# +# The orig.Makefile, if it exits, is the original Makefile before this IOCCC +# year directory was reworked so that entries are in separate directories. +# This also applies to any orig.ansi.mk and orig.common.mk files. +# +# Several Makefiles were modified / formed in 2022, and as such it may have +# elements that are not historically compatible with way entries were built. +# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile. +# +# Regarding individual entries: +# +# IOCCC winning entry code may not work on your system. Even with standards, +# conditions and build environments change, especially when it comes to more +# extreme code such you might find in an IOCCC winner. Moreover, what was +# allowed and liked in one IOCCC contest may no longer be liked/allowed in +# later IOCCC years. +# +# Corrections on winning author and fixing typos in remarks are VERY WELCOME. +# +# GitHub pull requests are welcome: +# +# If you have a patch that might make running an entry work in modern Unix-like +# environments, please create a GitHub pull request for the IOCCC judgess to +# consider. +# +# Suggestions and corrections regarding Makefiles, winning author information, +# fixing typos in remarks, and code patches are welcome via opening a GitHub +# issue or better yet, by creating a GitHub pull request for the IOCCC judges +# to consider. To form a GitHub issue or GitHub pull, please visit: +# +# https://github.com/ioccc-src/winner +# +################################################################################ + +# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under: +# +# Creative Commons Attribution-ShareAlike 3.0 Unported License. +# +# See: http://creativecommons.org/licenses/by-sa/3.0/ -SHELL= /bin/sh -WINNERS= august +############################# +# shell used by this Makefile +############################# +# +SHELL= /bin/bash -all: ${WINNERS} +####################### +# common tool locations +####################### +# +A2P= a2p +AR= ar +ASA= asa +AT= at +ATQ= atq +ATRM= atrm +AWK= awk +BANNER= banner +BASE64= base64 +BASENAME= basename +BATCH= batch +BC= bc +BINHEX= binhex +BISON= bison +BUNZIP2= bunzip2 +BZCAT= bzcat +BZCMP= bzcmp +BZDIFF= bzdiff +BZEGREP= bzegrep +BZFGREP= bzfgrep +BZGREP= bzgrep +BZIP2= bzip2 +BZLESS= bzless +BZMORE= bzmore +C2PH= c2ph +C89= c89 +C99= c99 +CAL= cal +CALC= calc +CAT= cat +CD= cd +CHFLAGS= chflags +CHGRP= chgrp +CHMOD= chmod +CKSUM= cksum +CLANG= clang +CLANG_PLUSPLUS= clang++ +CLEAR= clear +CMP= cmp +COL= col +COLLDEF= colldef +COLRM= colrm +COLUMN= column +COMPRESS= compress +CP= cp +CPIO= cpio +CPP= cpp +CRC32= crc32 +CSH= csh +CSPLIT= csplit +CURL= curl +CUT= cut +C_PLUSPLUS= c++ +C_PLUSPLUS_FILT= c++filt +DATE= date +DC= dc +DD= dd +DF= df +DIFF3= diff3 +DIFF= diff +DIG= dig +DIRNAME= dirname +ED= ed +EGREP= egrep +ENV= env +EQN= eqn +ETAGS= etags +EXPECT= expect +EXPR= expr +FALSE= false +FGREP= fgrep +FILE= file +FIND2PERL= find2perl +FIND= find +FLEX= flex +FLEX_PLUSPLUS= flex++ +FMT= fmt +FOLD= fold +FS_USAGE= fs_usage +FUNZIP= funzip +FUSER= fuser +GCC= gcc +GDIFFMK= gdiffmk +GENCAT= gencat +GENSTRINGS= genstrings +GETOPT= getopt +GETOPTS= getopts +GNUMAKE= gnumake +GREP= grep +GROFF= groff +GROFFER= groffer +GROG= grog +GROPS= grops +GROTTY= grotty +GUNZIP= gunzip +GVIM= gvim +GZCAT= gzcat +GZEXE= gzexe +GZIP_PROG= gzip +G_PLUSPLUS= g++ +H2PH= h2ph +H2XS= h2xs +HASH= hash +HEAD= head +HOSTNAME_PROG= hostname +ICONV= iconv +ID= id +INDENT= indent +INFO= info +JOT= jot +KILL= kill +KSH= ksh +LAST= last +LD= ld +LESSECHO= lessecho +LEX= len +LINK= link +LN= ln +LS= ls +M4= m4 +MAKE= make +MAN= man +MKDIR= mkdir +MKFIFo= mkfifo +MKTEMP= mktemp +MV= mv +NANO= nano +NASM= nasm +NEQN= neqn +NICE= nice +NL= nl +NM= nm +NOHUP= nohup +NROFF= nroff +NSLOOKUP= nslookup +OD= od +OPENSSL= openssl +PASTE= paste +PATCH= patch +PATHCHK= pathchk +PAX= pax +PERL= perl +PICO= pico +PR= pr +PRINTENV= printenv +PS= ps +PTAR= ptar +PTARDIFF= ptardiff +PTARGREP= ptargrep +PWD= pwd +PYDOC= pydoc +PYTHON= python +PYTHONW= pythonw +READLINK= readlink +RENICE= renice +RESET= reset +REV= rev +RI= ri +RM= rm +RMDIR= rmdir +RSYNC= rsync +RUBY= ruby +RVIM= rvim +SAY= say +SCP= scp +SCREEN= screen +SCRIPT= script +SDIFF= sdiff +SED= sed +SEQ= seq +SFTP= sftp +SH= sh +SHA1= sha1 +SHA= sha +SHAR= shar +SHASUM5_18= shasum5.18 +SHASUM= shasum +SIZE= size +SLEEP= sleep +SORT= sort +SSH= ssh +STAT= stat +STRIP= strip +STTY= stty +SUM= sum +SYNC= sync +TABS= tabs +TAIL= tail +TAR= tar +TEE= tee +TEST= test +TFTP= tftp +TIDY= tidy +TIME= time +TOP= top +TOUCH= touch +TPUT= tout +TPUT= tput +TR= tr +TROFF= troff +TRUE= true +TSET= tset +TSORT= tsort +UL= ul +UNAME= uname +UNCOMPRESS= uncompress +UNEXPAND= unexpand +UNIFDEF= unifdef +UNIFDEFALL= unifdefall +UNIQ= uniq +UNITS= units +UNLINK= unlink +UNZIP= unzip +UNZIPSFX= unzipsfx +UPTIME= uptime +UUDECODE= uudecode +UUENCODE= uuencode +UUIDGEN= uuidgen +VI= vi +VIEW= view +VIM= vim +VIMDIFF= vimdiff +W= w +WAIT4PATH= wait4path +WAIT= wait +WC= wc +WGET= wget +WHAT= what +WHATIS= whatis +WHICH= which +WHO= who +WHOAMI= whoami +WHOIS= whois +WRTIE= write +XAR= xar +XARGS= xargs +XATTR= xattr +XXD= xxd +YACC= yacc +YES= yes +ZCAT= zcat +ZCMP= zcmp +ZDIFF= zdiff +ZEGREP= zegrep +ZFGREP= zfgrep +ZFORCE= zforce +ZGREP= zgrep +ZIP= zip +ZIPCLOAK= zipcloak +ZIPGREp= zipgrep +ZIPINFo= zipinfo +ZIPNOTE= zipnote +ZIPSPLIT= zipsplit +ZLESS= zless +ZMORE= zmore +ZNEW= znew +ZPRINT= zprint +ZSH= zsh -august: august.c - cc $? -o $@ +# Set X11_LIBDIR to the directory where the X11 library resides +# +#X11_LIBDIR= /usr/X11R6/lib +#X11_LIBDIR= /usr/X11/lib +X11_LIBDIR= /opt/X11/lib + +# Set X11_INCLUDEDIR to the directory where the X11 include files reside +# +#X11_INCDIR= /usr/X11R6/include +#X11_INCDIR= /usr/X11/include +X11_INCDIR= /opt/X11/include + +# Compiler warnings +# +#CWARN= +#CWARN= -Wall +#CWARN= -Wall -Wextra +#CWARN= -Wall -Wextra ${CSILENCE} +CWARN= -Wall -Wextra -pedantic ${CSILENCE} +#CWARN= -Wall -Wextra -Weverything +#CWARN= -Wall -Wextra -Weverything -pedantic +#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE} + +# Silence warnings that ${CWARN} would normally complain about +# +CSILENCE= -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int -Wno-return-type +#CSILENCE= -Wno-implicit-int + +# compiler standard +# +#CSTD= +#CSTD= -ansi +CSTD= -std=gnu89 + +# compiler bit architecture +# +# Some entries require 32-bitness: +# ARCH= -m32 +# +# Some entries require 64-bitness: +# ARCH= -m64 +# +# By default we assume nothing: +# +ARCH= + +# defines that are needed to compile +# +CDEFINE= +#CDEFINE= -DIOCCC=26 + +# include files that are needed to compile +# +CINCLUDE= +#CINCLUDE= -include stdlib.h +#CINCLUDE= -include stdio.h +#CINCLUDE= -include stdlib.h -include stdio.h +#CINCLUDE= -I ${X11_INCDIR} +#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2 + +# optimization +# +# Most compiles will safely use -O2. Some can use only -O1 or -O. +# A few compilers have broken optimizers or this entry make break +# under those buggy optimizers and thus you may not want anything. +# Reasonable compilers will allow for -O3. +# +#OPT= +#OPT= -O +#OPT= -O1 +#OPT= -O2 +OPT= -O3 + +# default flags for ANSI C compilation +# +CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT} + +# Libraries needed to build +# +LIBS= +#LIBS= -lm +#LIBS= -L ${X11_LIBDIR} -lX11 +#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL + +# ANSI compiler +# +# Set CC to the name of your ANSI compiler. +# +# Some entries seem to need gcc. If you have gcc, set +# both CC and MAY_NEED_GCC to gcc. +# +# If you do not have gcc, set CC to the name of your ANSI compiler, and +# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just : +# to disable such programs. +# +CC= cc +#CC=clang +MAY_NEED_GCC= gcc + + +############################## +# Special flags for this entry +############################## +# +ENTRY= august +PROG= ${ENTRY} +# +OBJ= ${PROG}.o +DATA= +TARGET= ${PROG} +# +ALT_OBJ= +ALT_TARGET= + + +################# +# build the entry +################# +# +all: ${DATA} ${TARGET} + @${TRUE} + +.PHONY: alt data everything clean clobber nuke dist_clean \ + install build love haste waste make easter_egg \ + supernova deep_magic magic charon pluto + +${PROG}: ${PROG}.c + ${CC} ${CFLAGS} $< -o $@ ${LIBS} + +# alternative executable +# +alt: ${DATA} ${ALT_TARGET} + @${TRUE} + +# data files +# +data: ${DATA} + @${TRUE} + + +############### +# utility rules +############### +# +everything: all alt clean: - rm -f core + ${RM} -f ${OBJ} ${ALT_OBJ} + @-if [ -f indent.c ]; then \ + ${ECHO} ${RM} -f indent.c; \ + ${RM} -f indent.c; \ + fi + clobber: clean - rm -f ${WINNERS} a.out -install: all - @echo are you kidding'??' + ${RM} -f ${TARGET} ${ALT_TARGET} + @-if [ -e sandwich ]; then \ + ${RM} -f sandwich; \ + echo 'ate sandwich'; \ + fi + +nuke: clobber + @${TRUE} + +dist_clean: nuke + @${TRUE} + +install: + @echo "Dr. Spock says that is not logical!" + @${TRUE} + +# you may be able to misunderstand the source by reading indent.c +# +indent.c: ${PROG}.c + @if which "${GINDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${GINDENT} < $< > $@"; \ + ${GINDENT} < $< > $@; \ + elif which "${INDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${INDENT} < $< > $@"; \ + ${INDENT} < $< > $@; \ + else \ + ${ECHO} "no intent tool found, ident $< yourself, sorry"; \ + ${ECHO} "exit 1"; \ + exit 1; \ + fi + + +################## +# 133t hacker rulz +################## +# +love: + @echo 'not war?' + @${TRUE} + +haste: + $(MAKE) waste + @${TRUE} + +waste: + @echo 'haste' + @${TRUE} + +make: + @echo 'Participate in a maker faire' + @${TRUE} + +easter_egg: + @echo you expected to often misunderstand this $${RANDOM} magic + @echo chongo '' "/\\oo/\\" + @echo Eggy + +fabricate fashion form frame manufacture produce: make + @${TRUE} + +sandwich: + @if [ `id -u` -eq 0 ]; then \ + echo 'Okay.'; \ + echo $${RANDOM}`date +%s`$${RANDOM} > $@; \ + else \ + echo 'What? Make it yourself.'; \ + exit 1; \ + fi + +# Understand the history of the Homebrew Computer Club +# as well as the West Coast Computer Faire and +# you might be confused different. :-) +# +supernova: nuke + @-if [ -r .code_anal ]; then \ + ${RM} -f .code_anal_v6; \ + else \ + echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \ + fi + @echo A $@ helps ${MAKE} the elements that help form planets + @${TRUE} + +deep_magic: + @-if [ -r .code_anal ]; then \ + ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + fi + @${TRUE} + +magic: deep_magic + @-if [ -r .code_anal ]; then \ + ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "If you don't eat yer meat, you can't have any pudding!"; \ + echo "How can you have any pudding if you don't eat yer meat?!"; \ + fi + @${TRUE} + +# The IOCCC resident astronomer states +# +charon: supernova + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore IAU, $@ is a planet + +pluto: supernova + ${MAKE} charon + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore, $@ is a planet + @echo get used to having lots of planets because a $< can ${MAKE} a lot of them diff --git a/1986/august/hint.html b/1986/august/hint.html deleted file mode 100644 index b87cbde13..000000000 --- a/1986/august/hint.html +++ /dev/null @@ -1,23 +0,0 @@ -

Best complex task done in a complex way

- -

Lennart Augustsson
-Dept. of Comp. Sci.
-Chalmers University of Technology,
-412 96 Gothenburg
-Sweden

- -

Judges' comments:

- -

This program computes a specific mathematical value. Simply compile -and give it an infinite amount of stack space and cpu time. Otherwise -just be satisfied with the approximation displayed just before the core -dump.

- -

This program will pass lint on your system assuming your lint is brave -enough to try and parse it correctly.

- -

Copyright © 1986, Landon Curt Noll & Larry Bassel. -All Rights Reserved. Permission for personal, educational or non-profit use is -granted provided this this copyright and notice are included in its entirety -and remains unaltered. All other uses must receive prior permission in writing -from both Landon Curt Noll and Larry Bassel.

diff --git a/1986/august/hint.text b/1986/august/hint.txt similarity index 96% rename from 1986/august/hint.text rename to 1986/august/hint.txt index d74780046..0089ff1fb 100644 --- a/1986/august/hint.text +++ b/1986/august/hint.txt @@ -6,6 +6,10 @@ Chalmers University of Technology, 412 96 Gothenburg Sweden +## To build: + + make all + ## Judges' comments: This program computes a specific mathematical value. Simply compile diff --git a/1986/august/index.html b/1986/august/index.html new file mode 100644 index 000000000..e14786d73 --- /dev/null +++ b/1986/august/index.html @@ -0,0 +1,189 @@ + + + + + + + hint + + + + +

Best complex task done +in a complex way

+

Lennart Augustsson
+Dept. of Comp. Sci.
+Chalmers University of Technology,
+412 96 Gothenburg
+Sweden

+

To build:

+
    make all
+

Judges’ comments:

+

This program computes a specific mathematical value. Simply compile +and give it an infinite amount of stack space and cpu time. Otherwise +just be satisfied with the approximation displayed just before the core +dump.

+

This program will pass lint on your system assuming your lint is +brave enough to try and parse it correctly.

+

Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights +Reserved. Permission for personal, educational or non-profit use is +granted provided this this copyright and notice are included in its +entirety and remains unaltered. All other uses must receive prior +permission in writing from both Landon Curt Noll and Larry Bassel.

+ + diff --git a/1986/august/orig.Makefile b/1986/august/orig.Makefile new file mode 100644 index 000000000..31d45683b --- /dev/null +++ b/1986/august/orig.Makefile @@ -0,0 +1,25 @@ +# %W% %G% %U% +# +# 1986 makefile +# +# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. +# All Rights Reserved. Permission for personal, educational or non-profit +# use is granted provided this this copyright and notice are included in its +# entirety and remains unaltered. All other uses must receive prior permission +# from Landon Curt Noll and Larry Bassel. + + +SHELL= /bin/sh +WINNERS= august + +all: ${WINNERS} + +august: august.c + cc $? -o $@ + +clean: + rm -f core +clobber: clean + rm -f ${WINNERS} a.out +install: all + @echo are you kidding'??' diff --git a/1986/bright/Makefile b/1986/bright/Makefile index 702b66c73..ae5c3febd 100644 --- a/1986/bright/Makefile +++ b/1986/bright/Makefile @@ -1,25 +1,597 @@ -# %W% %G% %U% +#!/usr/bin/env make # -# 1986 makefile +# IOCCC 1986 winning entry - bright + +################################################################################ # -# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. -# All Rights Reserved. Permission for personal, educational or non-profit -# use is granted provided this this copyright and notice are included in its -# entirety and remains unaltered. All other uses must receive prior permission -# from Landon Curt Noll and Larry Bassel. +# An Historical Makefile NOTE: +# +# The orig.Makefile, if it exits, is the original Makefile before this IOCCC +# year directory was reworked so that entries are in separate directories. +# This also applies to any orig.ansi.mk and orig.common.mk files. +# +# Several Makefiles were modified / formed in 2022, and as such it may have +# elements that are not historically compatible with way entries were built. +# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile. +# +# Regarding individual entries: +# +# IOCCC winning entry code may not work on your system. Even with standards, +# conditions and build environments change, especially when it comes to more +# extreme code such you might find in an IOCCC winner. Moreover, what was +# allowed and liked in one IOCCC contest may no longer be liked/allowed in +# later IOCCC years. +# +# Corrections on winning author and fixing typos in remarks are VERY WELCOME. +# +# GitHub pull requests are welcome: +# +# If you have a patch that might make running an entry work in modern Unix-like +# environments, please create a GitHub pull request for the IOCCC judgess to +# consider. +# +# Suggestions and corrections regarding Makefiles, winning author information, +# fixing typos in remarks, and code patches are welcome via opening a GitHub +# issue or better yet, by creating a GitHub pull request for the IOCCC judges +# to consider. To form a GitHub issue or GitHub pull, please visit: +# +# https://github.com/ioccc-src/winner +# +################################################################################ + +# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under: +# +# Creative Commons Attribution-ShareAlike 3.0 Unported License. +# +# See: http://creativecommons.org/licenses/by-sa/3.0/ -SHELL= /bin/sh -WINNERS= bright +############################# +# shell used by this Makefile +############################# +# +SHELL= /bin/bash -all: ${WINNERS} +####################### +# common tool locations +####################### +# +A2P= a2p +AR= ar +ASA= asa +AT= at +ATQ= atq +ATRM= atrm +AWK= awk +BANNER= banner +BASE64= base64 +BASENAME= basename +BATCH= batch +BC= bc +BINHEX= binhex +BISON= bison +BUNZIP2= bunzip2 +BZCAT= bzcat +BZCMP= bzcmp +BZDIFF= bzdiff +BZEGREP= bzegrep +BZFGREP= bzfgrep +BZGREP= bzgrep +BZIP2= bzip2 +BZLESS= bzless +BZMORE= bzmore +C2PH= c2ph +C89= c89 +C99= c99 +CAL= cal +CALC= calc +CAT= cat +CD= cd +CHFLAGS= chflags +CHGRP= chgrp +CHMOD= chmod +CKSUM= cksum +CLANG= clang +CLANG_PLUSPLUS= clang++ +CLEAR= clear +CMP= cmp +COL= col +COLLDEF= colldef +COLRM= colrm +COLUMN= column +COMPRESS= compress +CP= cp +CPIO= cpio +CPP= cpp +CRC32= crc32 +CSH= csh +CSPLIT= csplit +CURL= curl +CUT= cut +C_PLUSPLUS= c++ +C_PLUSPLUS_FILT= c++filt +DATE= date +DC= dc +DD= dd +DF= df +DIFF3= diff3 +DIFF= diff +DIG= dig +DIRNAME= dirname +ED= ed +EGREP= egrep +ENV= env +EQN= eqn +ETAGS= etags +EXPECT= expect +EXPR= expr +FALSE= false +FGREP= fgrep +FILE= file +FIND2PERL= find2perl +FIND= find +FLEX= flex +FLEX_PLUSPLUS= flex++ +FMT= fmt +FOLD= fold +FS_USAGE= fs_usage +FUNZIP= funzip +FUSER= fuser +GCC= gcc +GDIFFMK= gdiffmk +GENCAT= gencat +GENSTRINGS= genstrings +GETOPT= getopt +GETOPTS= getopts +GNUMAKE= gnumake +GREP= grep +GROFF= groff +GROFFER= groffer +GROG= grog +GROPS= grops +GROTTY= grotty +GUNZIP= gunzip +GVIM= gvim +GZCAT= gzcat +GZEXE= gzexe +GZIP_PROG= gzip +G_PLUSPLUS= g++ +H2PH= h2ph +H2XS= h2xs +HASH= hash +HEAD= head +HOSTNAME_PROG= hostname +ICONV= iconv +ID= id +INDENT= indent +INFO= info +JOT= jot +KILL= kill +KSH= ksh +LAST= last +LD= ld +LESSECHO= lessecho +LEX= len +LINK= link +LN= ln +LS= ls +M4= m4 +MAKE= make +MAN= man +MKDIR= mkdir +MKFIFo= mkfifo +MKTEMP= mktemp +MV= mv +NANO= nano +NASM= nasm +NEQN= neqn +NICE= nice +NL= nl +NM= nm +NOHUP= nohup +NROFF= nroff +NSLOOKUP= nslookup +OD= od +OPENSSL= openssl +PASTE= paste +PATCH= patch +PATHCHK= pathchk +PAX= pax +PERL= perl +PICO= pico +PR= pr +PRINTENV= printenv +PS= ps +PTAR= ptar +PTARDIFF= ptardiff +PTARGREP= ptargrep +PWD= pwd +PYDOC= pydoc +PYTHON= python +PYTHONW= pythonw +READLINK= readlink +RENICE= renice +RESET= reset +REV= rev +RI= ri +RM= rm +RMDIR= rmdir +RSYNC= rsync +RUBY= ruby +RVIM= rvim +SAY= say +SCP= scp +SCREEN= screen +SCRIPT= script +SDIFF= sdiff +SED= sed +SEQ= seq +SFTP= sftp +SH= sh +SHA1= sha1 +SHA= sha +SHAR= shar +SHASUM5_18= shasum5.18 +SHASUM= shasum +SIZE= size +SLEEP= sleep +SORT= sort +SSH= ssh +STAT= stat +STRIP= strip +STTY= stty +SUM= sum +SYNC= sync +TABS= tabs +TAIL= tail +TAR= tar +TEE= tee +TEST= test +TFTP= tftp +TIDY= tidy +TIME= time +TOP= top +TOUCH= touch +TPUT= tout +TPUT= tput +TR= tr +TROFF= troff +TRUE= true +TSET= tset +TSORT= tsort +UL= ul +UNAME= uname +UNCOMPRESS= uncompress +UNEXPAND= unexpand +UNIFDEF= unifdef +UNIFDEFALL= unifdefall +UNIQ= uniq +UNITS= units +UNLINK= unlink +UNZIP= unzip +UNZIPSFX= unzipsfx +UPTIME= uptime +UUDECODE= uudecode +UUENCODE= uuencode +UUIDGEN= uuidgen +VI= vi +VIEW= view +VIM= vim +VIMDIFF= vimdiff +W= w +WAIT4PATH= wait4path +WAIT= wait +WC= wc +WGET= wget +WHAT= what +WHATIS= whatis +WHICH= which +WHO= who +WHOAMI= whoami +WHOIS= whois +WRTIE= write +XAR= xar +XARGS= xargs +XATTR= xattr +XXD= xxd +YACC= yacc +YES= yes +ZCAT= zcat +ZCMP= zcmp +ZDIFF= zdiff +ZEGREP= zegrep +ZFGREP= zfgrep +ZFORCE= zforce +ZGREP= zgrep +ZIP= zip +ZIPCLOAK= zipcloak +ZIPGREp= zipgrep +ZIPINFo= zipinfo +ZIPNOTE= zipnote +ZIPSPLIT= zipsplit +ZLESS= zless +ZMORE= zmore +ZNEW= znew +ZPRINT= zprint +ZSH= zsh -bright: bright.c - cc $? -o $@ +# Set X11_LIBDIR to the directory where the X11 library resides +# +#X11_LIBDIR= /usr/X11R6/lib +#X11_LIBDIR= /usr/X11/lib +X11_LIBDIR= /opt/X11/lib + +# Set X11_INCLUDEDIR to the directory where the X11 include files reside +# +#X11_INCDIR= /usr/X11R6/include +#X11_INCDIR= /usr/X11/include +X11_INCDIR= /opt/X11/include + +# Compiler warnings +# +#CWARN= +#CWARN= -Wall +#CWARN= -Wall -Wextra +CWARN= -Wall -Wextra ${CSILENCE} +#CWARN= -Wall -Wextra -pedantic ${CSILENCE} +#CWARN= -Wall -Wextra -Weverything +#CWARN= -Wall -Wextra -Weverything -pedantic +#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE} + +# Silence warnings that ${CWARN} would normally complain about +# +CSILENCE= -Wno-error -Wno-implicit-function-declaration -Wno-format-security \ + -Wno-implicit-int -Wno-unknown-escape-sequence -Wno-unused-value \ + -Wno-sign-compare +#CSILENCE= -Wno-implicit-int + +# compiler standard +# +#CSTD= +#CSTD= -ansi +CSTD= -std=gnu89 + +# compiler bit architecture +# +# Some entries require 32-bitness: +# ARCH= -m32 +# +# Some entries require 64-bitness: +# ARCH= -m64 +# +# By default we assume nothing: +# +ARCH= + +# defines that are needed to compile +# +CDEFINE= +#CDEFINE= -DIOCCC=26 + +# include files that are needed to compile +# +CINCLUDE= +#CINCLUDE= -include stdlib.h +#CINCLUDE= -include stdio.h +#CINCLUDE= -include stdlib.h -include stdio.h +#CINCLUDE= -I ${X11_INCDIR} +#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2 + +# optimization +# +# Most compiles will safely use -O2. Some can use only -O1 or -O. +# A few compilers have broken optimizers or this entry make break +# under those buggy optimizers and thus you may not want anything. +# Reasonable compilers will allow for -O3. +# +#OPT= +#OPT= -O +#OPT= -O1 +#OPT= -O2 +OPT= -O3 + +# default flags for ANSI C compilation +# +CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT} + +# Libraries needed to build +# +LIBS= +#LIBS= -lm +#LIBS= -L ${X11_LIBDIR} -lX11 +#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL + +# ANSI compiler +# +# Set CC to the name of your ANSI compiler. +# +# Some entries seem to need gcc. If you have gcc, set +# both CC and MAY_NEED_GCC to gcc. +# +# If you do not have gcc, set CC to the name of your ANSI compiler, and +# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just : +# to disable such programs. +# +CC= cc +#CC=clang +MAY_NEED_GCC= gcc + + +############################## +# Special flags for this entry +############################## +# +ENTRY= bright +PROG= ${ENTRY} +# +OBJ= ${PROG}.o +DATA= +TARGET= ${PROG} +# +ALT_OBJ= ${PROG}.orig.o +ALT_TARGET= ${PROG}.orig + + +################# +# build the entry +################# +# +all: ${DATA} ${TARGET} + @${TRUE} + +.PHONY: alt data everything clean clobber nuke dist_clean \ + install build love haste waste make easter_egg \ + supernova deep_magic magic charon pluto + +${PROG}: ${PROG}.c + ${CC} ${CFLAGS} $< -o $@ ${LIBS} + +# alternative executable +# +alt: ${DATA} ${ALT_TARGET} + @${TRUE} + +${PROG}.orig: ${PROG}.orig.c + @echo "NOTE: The original source may not compile using modern compilers." + ${CC} ${CFLAGS} $< -o $@ ${LIBS} + +# data files +# +data: ${DATA} + @${TRUE} + + +############### +# utility rules +############### +# +everything: all alt clean: - rm -f core + ${RM} -f ${OBJ} ${ALT_OBJ} + @-if [ -f indent.c ]; then \ + ${ECHO} ${RM} -f indent.c; \ + ${RM} -f indent.c; \ + fi + clobber: clean - rm -f ${WINNERS} a.out -install: all - @echo are you kidding'??' + ${RM} -f ${TARGET} ${ALT_TARGET} + @-if [ -e sandwich ]; then \ + ${RM} -f sandwich; \ + echo 'ate sandwich'; \ + fi + +nuke: clobber + @${TRUE} + +dist_clean: nuke + @${TRUE} + +install: + @echo "Dr. Spock says that is not logical!" + @${TRUE} + +# you may be able to misunderstand the source by reading indent.c +# +indent.c: ${PROG}.c + @if which "${GINDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${GINDENT} < $< > $@"; \ + ${GINDENT} < $< > $@; \ + elif which "${INDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${INDENT} < $< > $@"; \ + ${INDENT} < $< > $@; \ + else \ + ${ECHO} "no intent tool found, ident $< yourself, sorry"; \ + ${ECHO} "exit 1"; \ + exit 1; \ + fi + + +################## +# 133t hacker rulz +################## +# +love: + @echo 'not war?' + @${TRUE} + +haste: + $(MAKE) waste + @${TRUE} + +waste: + @echo 'haste' + @${TRUE} + +make: + @echo 'Participate in a maker faire' + @${TRUE} + +easter_egg: + @echo you expected to often misunderstand this $${RANDOM} magic + @echo chongo '' "/\\oo/\\" + @echo Eggy + +fabricate fashion form frame manufacture produce: make + @${TRUE} + +sandwich: + @if [ `id -u` -eq 0 ]; then \ + echo 'Okay.'; \ + echo $${RANDOM}`date +%s`$${RANDOM} > $@; \ + else \ + echo 'What? Make it yourself.'; \ + exit 1; \ + fi + +# Understand the history of the Homebrew Computer Club +# as well as the West Coast Computer Faire and +# you might be confused different. :-) +# +supernova: nuke + @-if [ -r .code_anal ]; then \ + ${RM} -f .code_anal_v6; \ + else \ + echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \ + fi + @echo A $@ helps ${MAKE} the elements that help form planets + @${TRUE} + +deep_magic: + @-if [ -r .code_anal ]; then \ + ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + fi + @${TRUE} + +magic: deep_magic + @-if [ -r .code_anal ]; then \ + ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "If you don't eat yer meat, you can't have any pudding!"; \ + echo "How can you have any pudding if you don't eat yer meat?!"; \ + fi + @${TRUE} + +# The IOCCC resident astronomer states +# +charon: supernova + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore IAU, $@ is a planet + +pluto: supernova + ${MAKE} charon + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore, $@ is a planet + @echo get used to having lots of planets because a $< can ${MAKE} a lot of them diff --git a/1986/bright/bright.c b/1986/bright/bright.c index 8c0481856..5673eb280 100644 --- a/1986/bright/bright.c +++ b/1986/bright/bright.c @@ -1,7 +1,7 @@ #include #define O1O printf #define OlO putchar -#define O10 exit +#define O10 aexit #define Ol0 strlen #define QLQ fopen #define OlQ fgetc @@ -12,6 +12,8 @@ typedef char lOL; lOL*QI[] = {"Use:\012\011dump file\012","Unable to open file '\x25s'\012", "\012"," ",""}; +int aexit(int x) { exit(x); return x; } + main(I,Il) lOL*Il[]; { FILE *L; diff --git a/1986/bright/bright.orig.c b/1986/bright/bright.orig.c new file mode 100644 index 000000000..8c0481856 --- /dev/null +++ b/1986/bright/bright.orig.c @@ -0,0 +1,47 @@ +#include +#define O1O printf +#define OlO putchar +#define O10 exit +#define Ol0 strlen +#define QLQ fopen +#define OlQ fgetc +#define O1Q abs +#define QO0 for +typedef char lOL; + +lOL*QI[] = {"Use:\012\011dump file\012","Unable to open file '\x25s'\012", + "\012"," ",""}; + +main(I,Il) +lOL*Il[]; +{ FILE *L; + unsigned lO; + int Q,OL[' '^'0'],llO = EOF, + + O=1,l=0,lll=O+O+O+l,OQ=056; + lOL*llL="%2x "; + (I != 1<<1&&(O1O(QI[0]),O10(1011-1010))), + ((L = QLQ(Il[O],"r"))==0&&(O1O(QI[O],Il[O]),O10(O))); + lO = I-(O<=' '&&l<='\~'; +} diff --git a/1986/bright/hint.html b/1986/bright/hint.html deleted file mode 100644 index 99f81b119..000000000 --- a/1986/bright/hint.html +++ /dev/null @@ -1,22 +0,0 @@ -

Most useful obfuscation

- -

Walter Bright

- -

Judges' comments:

- -

Compile this program and give filenames as arguments. For example try:

- -
bright bright.c
-bright bright
-
- -

Mr. Bright exploits the c pre-processor, similar variables and -excessive shifting to obfuscate an otherwise useful binary display -program. This gives you a small example of what it is like to -maintain the Bourne shell! :-}

- -

Copyright © 1986, Landon Curt Noll & Larry Bassel. -All Rights Reserved. Permission for personal, educational or non-profit use is -granted provided this this copyright and notice are included in its entirety -and remains unaltered. All other uses must receive prior permission in writing -from both Landon Curt Noll and Larry Bassel.

diff --git a/1986/bright/hint.text b/1986/bright/hint.txt similarity index 82% rename from 1986/bright/hint.text rename to 1986/bright/hint.txt index b387080de..e36b9c870 100644 --- a/1986/bright/hint.text +++ b/1986/bright/hint.txt @@ -2,6 +2,12 @@ Walter Bright +## To build: + + make all + +NOTE: The original entry may be built with "make alt". + ## Judges' comments: Compile this program and give filenames as arguments. For example try: @@ -14,6 +20,8 @@ excessive shifting to obfuscate an otherwise useful binary display program. This gives you a small example of what it is like to maintain the Bourne shell! :-} +NOTE: To compile with modern compilers, you make need to: make alt. + Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights Reserved. Permission for personal, educational or non-profit use is granted provided this this copyright and notice are included in its entirety diff --git a/1986/bright/index.html b/1986/bright/index.html new file mode 100644 index 000000000..b6c31af5c --- /dev/null +++ b/1986/bright/index.html @@ -0,0 +1,189 @@ + + + + + + + hint + + + + +

Most useful obfuscation

+

Walter Bright

+

To build:

+
    make all
+

NOTE: The original entry may be built with “make alt”.

+

Judges’ comments:

+

Compile this program and give filenames as arguments. For example +try:

+
bright bright.c
+bright bright
+

Mr. Bright exploits the c pre-processor, similar variables and +excessive shifting to obfuscate an otherwise useful binary display +program. This gives you a small example of what it is like to maintain +the Bourne shell! :-}

+

NOTE: To compile with modern compilers, you make need to: make +alt.

+

Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights +Reserved. Permission for personal, educational or non-profit use is +granted provided this this copyright and notice are included in its +entirety and remains unaltered. All other uses must receive prior +permission in writing from both Landon Curt Noll and Larry Bassel.

+ + diff --git a/1986/bright/orig.Makefile b/1986/bright/orig.Makefile new file mode 100644 index 000000000..702b66c73 --- /dev/null +++ b/1986/bright/orig.Makefile @@ -0,0 +1,25 @@ +# %W% %G% %U% +# +# 1986 makefile +# +# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. +# All Rights Reserved. Permission for personal, educational or non-profit +# use is granted provided this this copyright and notice are included in its +# entirety and remains unaltered. All other uses must receive prior permission +# from Landon Curt Noll and Larry Bassel. + + +SHELL= /bin/sh +WINNERS= bright + +all: ${WINNERS} + +bright: bright.c + cc $? -o $@ + +clean: + rm -f core +clobber: clean + rm -f ${WINNERS} a.out +install: all + @echo are you kidding'??' diff --git a/1986/hague/Makefile b/1986/hague/Makefile index b4ff6518f..6e41ac087 100644 --- a/1986/hague/Makefile +++ b/1986/hague/Makefile @@ -1,25 +1,592 @@ -# %W% %G% %U% +#!/usr/bin/env make # -# 1986 makefile +# IOCCC 1986 winning entry - hague + +################################################################################ # -# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. -# All Rights Reserved. Permission for personal, educational or non-profit -# use is granted provided this this copyright and notice are included in its -# entirety and remains unaltered. All other uses must receive prior permission -# from Landon Curt Noll and Larry Bassel. +# An Historical Makefile NOTE: +# +# The orig.Makefile, if it exits, is the original Makefile before this IOCCC +# year directory was reworked so that entries are in separate directories. +# This also applies to any orig.ansi.mk and orig.common.mk files. +# +# Several Makefiles were modified / formed in 2022, and as such it may have +# elements that are not historically compatible with way entries were built. +# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile. +# +# Regarding individual entries: +# +# IOCCC winning entry code may not work on your system. Even with standards, +# conditions and build environments change, especially when it comes to more +# extreme code such you might find in an IOCCC winner. Moreover, what was +# allowed and liked in one IOCCC contest may no longer be liked/allowed in +# later IOCCC years. +# +# Corrections on winning author and fixing typos in remarks are VERY WELCOME. +# +# GitHub pull requests are welcome: +# +# If you have a patch that might make running an entry work in modern Unix-like +# environments, please create a GitHub pull request for the IOCCC judgess to +# consider. +# +# Suggestions and corrections regarding Makefiles, winning author information, +# fixing typos in remarks, and code patches are welcome via opening a GitHub +# issue or better yet, by creating a GitHub pull request for the IOCCC judges +# to consider. To form a GitHub issue or GitHub pull, please visit: +# +# https://github.com/ioccc-src/winner +# +################################################################################ + +# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under: +# +# Creative Commons Attribution-ShareAlike 3.0 Unported License. +# +# See: http://creativecommons.org/licenses/by-sa/3.0/ -SHELL= /bin/sh -WINNERS= hague +############################# +# shell used by this Makefile +############################# +# +SHELL= /bin/bash -all: ${WINNERS} +####################### +# common tool locations +####################### +# +A2P= a2p +AR= ar +ASA= asa +AT= at +ATQ= atq +ATRM= atrm +AWK= awk +BANNER= banner +BASE64= base64 +BASENAME= basename +BATCH= batch +BC= bc +BINHEX= binhex +BISON= bison +BUNZIP2= bunzip2 +BZCAT= bzcat +BZCMP= bzcmp +BZDIFF= bzdiff +BZEGREP= bzegrep +BZFGREP= bzfgrep +BZGREP= bzgrep +BZIP2= bzip2 +BZLESS= bzless +BZMORE= bzmore +C2PH= c2ph +C89= c89 +C99= c99 +CAL= cal +CALC= calc +CAT= cat +CD= cd +CHFLAGS= chflags +CHGRP= chgrp +CHMOD= chmod +CKSUM= cksum +CLANG= clang +CLANG_PLUSPLUS= clang++ +CLEAR= clear +CMP= cmp +COL= col +COLLDEF= colldef +COLRM= colrm +COLUMN= column +COMPRESS= compress +CP= cp +CPIO= cpio +CPP= cpp +CRC32= crc32 +CSH= csh +CSPLIT= csplit +CURL= curl +CUT= cut +C_PLUSPLUS= c++ +C_PLUSPLUS_FILT= c++filt +DATE= date +DC= dc +DD= dd +DF= df +DIFF3= diff3 +DIFF= diff +DIG= dig +DIRNAME= dirname +ED= ed +EGREP= egrep +ENV= env +EQN= eqn +ETAGS= etags +EXPECT= expect +EXPR= expr +FALSE= false +FGREP= fgrep +FILE= file +FIND2PERL= find2perl +FIND= find +FLEX= flex +FLEX_PLUSPLUS= flex++ +FMT= fmt +FOLD= fold +FS_USAGE= fs_usage +FUNZIP= funzip +FUSER= fuser +GCC= gcc +GDIFFMK= gdiffmk +GENCAT= gencat +GENSTRINGS= genstrings +GETOPT= getopt +GETOPTS= getopts +GNUMAKE= gnumake +GREP= grep +GROFF= groff +GROFFER= groffer +GROG= grog +GROPS= grops +GROTTY= grotty +GUNZIP= gunzip +GVIM= gvim +GZCAT= gzcat +GZEXE= gzexe +GZIP_PROG= gzip +G_PLUSPLUS= g++ +H2PH= h2ph +H2XS= h2xs +HASH= hash +HEAD= head +HOSTNAME_PROG= hostname +ICONV= iconv +ID= id +INDENT= indent +INFO= info +JOT= jot +KILL= kill +KSH= ksh +LAST= last +LD= ld +LESSECHO= lessecho +LEX= len +LINK= link +LN= ln +LS= ls +M4= m4 +MAKE= make +MAN= man +MKDIR= mkdir +MKFIFo= mkfifo +MKTEMP= mktemp +MV= mv +NANO= nano +NASM= nasm +NEQN= neqn +NICE= nice +NL= nl +NM= nm +NOHUP= nohup +NROFF= nroff +NSLOOKUP= nslookup +OD= od +OPENSSL= openssl +PASTE= paste +PATCH= patch +PATHCHK= pathchk +PAX= pax +PERL= perl +PICO= pico +PR= pr +PRINTENV= printenv +PS= ps +PTAR= ptar +PTARDIFF= ptardiff +PTARGREP= ptargrep +PWD= pwd +PYDOC= pydoc +PYTHON= python +PYTHONW= pythonw +READLINK= readlink +RENICE= renice +RESET= reset +REV= rev +RI= ri +RM= rm +RMDIR= rmdir +RSYNC= rsync +RUBY= ruby +RVIM= rvim +SAY= say +SCP= scp +SCREEN= screen +SCRIPT= script +SDIFF= sdiff +SED= sed +SEQ= seq +SFTP= sftp +SH= sh +SHA1= sha1 +SHA= sha +SHAR= shar +SHASUM5_18= shasum5.18 +SHASUM= shasum +SIZE= size +SLEEP= sleep +SORT= sort +SSH= ssh +STAT= stat +STRIP= strip +STTY= stty +SUM= sum +SYNC= sync +TABS= tabs +TAIL= tail +TAR= tar +TEE= tee +TEST= test +TFTP= tftp +TIDY= tidy +TIME= time +TOP= top +TOUCH= touch +TPUT= tout +TPUT= tput +TR= tr +TROFF= troff +TRUE= true +TSET= tset +TSORT= tsort +UL= ul +UNAME= uname +UNCOMPRESS= uncompress +UNEXPAND= unexpand +UNIFDEF= unifdef +UNIFDEFALL= unifdefall +UNIQ= uniq +UNITS= units +UNLINK= unlink +UNZIP= unzip +UNZIPSFX= unzipsfx +UPTIME= uptime +UUDECODE= uudecode +UUENCODE= uuencode +UUIDGEN= uuidgen +VI= vi +VIEW= view +VIM= vim +VIMDIFF= vimdiff +W= w +WAIT4PATH= wait4path +WAIT= wait +WC= wc +WGET= wget +WHAT= what +WHATIS= whatis +WHICH= which +WHO= who +WHOAMI= whoami +WHOIS= whois +WRTIE= write +XAR= xar +XARGS= xargs +XATTR= xattr +XXD= xxd +YACC= yacc +YES= yes +ZCAT= zcat +ZCMP= zcmp +ZDIFF= zdiff +ZEGREP= zegrep +ZFGREP= zfgrep +ZFORCE= zforce +ZGREP= zgrep +ZIP= zip +ZIPCLOAK= zipcloak +ZIPGREp= zipgrep +ZIPINFo= zipinfo +ZIPNOTE= zipnote +ZIPSPLIT= zipsplit +ZLESS= zless +ZMORE= zmore +ZNEW= znew +ZPRINT= zprint +ZSH= zsh -hague: hague.c - cc $? -o $@ +# Set X11_LIBDIR to the directory where the X11 library resides +# +#X11_LIBDIR= /usr/X11R6/lib +#X11_LIBDIR= /usr/X11/lib +X11_LIBDIR= /opt/X11/lib + +# Set X11_INCLUDEDIR to the directory where the X11 include files reside +# +#X11_INCDIR= /usr/X11R6/include +#X11_INCDIR= /usr/X11/include +X11_INCDIR= /opt/X11/include + +# Compiler warnings +# +#CWARN= +#CWARN= -Wall +#CWARN= -Wall -Wextra +CWARN= -Wall -Wextra ${CSILENCE} +#CWARN= -Wall -Wextra -pedantic ${CSILENCE} +#CWARN= -Wall -Wextra -Weverything +#CWARN= -Wall -Wextra -Weverything -pedantic +#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE} + +# Silence warnings that ${CWARN} would normally complain about +# +CSILENCE= -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int \ + -Wno-incompatible-library-redeclaration -Wno-return-type +#CSILENCE= -Wno-implicit-int + +# compiler standard +# +#CSTD= +#CSTD= -ansi +CSTD= -std=gnu89 + +# compiler bit architecture +# +# Some entries require 32-bitness: +# ARCH= -m32 +# +# Some entries require 64-bitness: +# ARCH= -m64 +# +# By default we assume nothing: +# +ARCH= + +# defines that are needed to compile +# +CDEFINE= +#CDEFINE= -DIOCCC=26 + +# include files that are needed to compile +# +CINCLUDE= +#CINCLUDE= -include stdlib.h +#CINCLUDE= -include stdio.h +#CINCLUDE= -include stdlib.h -include stdio.h +#CINCLUDE= -I ${X11_INCDIR} +#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2 + +# optimization +# +# Most compiles will safely use -O2. Some can use only -O1 or -O. +# A few compilers have broken optimizers or this entry make break +# under those buggy optimizers and thus you may not want anything. +# Reasonable compilers will allow for -O3. +# +#OPT= +#OPT= -O +#OPT= -O1 +#OPT= -O2 +OPT= -O3 + +# default flags for ANSI C compilation +# +CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT} + +# Libraries needed to build +# +LIBS= +#LIBS= -lm +#LIBS= -L ${X11_LIBDIR} -lX11 +#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL + +# ANSI compiler +# +# Set CC to the name of your ANSI compiler. +# +# Some entries seem to need gcc. If you have gcc, set +# both CC and MAY_NEED_GCC to gcc. +# +# If you do not have gcc, set CC to the name of your ANSI compiler, and +# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just : +# to disable such programs. +# +CC= cc +#CC=clang +MAY_NEED_GCC= gcc + + +############################## +# Special flags for this entry +############################## +# +ENTRY= hague +PROG= ${ENTRY} +# +OBJ= ${PROG}.o +DATA= +TARGET= ${PROG} +# +ALT_OBJ= +ALT_TARGET= + + +################# +# build the entry +################# +# +all: ${DATA} ${TARGET} + @${TRUE} + +.PHONY: alt data everything clean clobber nuke dist_clean \ + install build love haste waste make easter_egg \ + supernova deep_magic magic charon pluto + +${PROG}: ${PROG}.c + ${CC} ${CFLAGS} $< -o $@ ${LIBS} + +# alternative executable +# +alt: ${DATA} ${ALT_TARGET} + @${TRUE} + +# data files +# +data: ${DATA} + @${TRUE} + + +############### +# utility rules +############### +# +everything: all alt clean: - rm -f core + ${RM} -f ${OBJ} ${ALT_OBJ} + @-if [ -f indent.c ]; then \ + ${ECHO} ${RM} -f indent.c; \ + ${RM} -f indent.c; \ + fi + clobber: clean - rm -f ${WINNERS} a.out -install: all - @echo are you kidding'??' + ${RM} -f ${TARGET} ${ALT_TARGET} + @-if [ -e sandwich ]; then \ + ${RM} -f sandwich; \ + echo 'ate sandwich'; \ + fi + +nuke: clobber + @${TRUE} + +dist_clean: nuke + @${TRUE} + +install: + @echo "Dr. Spock says that is not logical!" + @${TRUE} + +# you may be able to misunderstand the source by reading indent.c +# +indent.c: ${PROG}.c + @if which "${GINDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${GINDENT} < $< > $@"; \ + ${GINDENT} < $< > $@; \ + elif which "${INDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${INDENT} < $< > $@"; \ + ${INDENT} < $< > $@; \ + else \ + ${ECHO} "no intent tool found, ident $< yourself, sorry"; \ + ${ECHO} "exit 1"; \ + exit 1; \ + fi + + +################## +# 133t hacker rulz +################## +# +love: + @echo 'not war?' + @${TRUE} + +haste: + $(MAKE) waste + @${TRUE} + +waste: + @echo 'haste' + @${TRUE} + +make: + @echo 'Participate in a maker faire' + @${TRUE} + +easter_egg: + @echo you expected to often misunderstand this $${RANDOM} magic + @echo chongo '' "/\\oo/\\" + @echo Eggy + +fabricate fashion form frame manufacture produce: make + @${TRUE} + +sandwich: + @if [ `id -u` -eq 0 ]; then \ + echo 'Okay.'; \ + echo $${RANDOM}`date +%s`$${RANDOM} > $@; \ + else \ + echo 'What? Make it yourself.'; \ + exit 1; \ + fi + +# Understand the history of the Homebrew Computer Club +# as well as the West Coast Computer Faire and +# you might be confused different. :-) +# +supernova: nuke + @-if [ -r .code_anal ]; then \ + ${RM} -f .code_anal_v6; \ + else \ + echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \ + fi + @echo A $@ helps ${MAKE} the elements that help form planets + @${TRUE} + +deep_magic: + @-if [ -r .code_anal ]; then \ + ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + fi + @${TRUE} + +magic: deep_magic + @-if [ -r .code_anal ]; then \ + ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "If you don't eat yer meat, you can't have any pudding!"; \ + echo "How can you have any pudding if you don't eat yer meat?!"; \ + fi + @${TRUE} + +# The IOCCC resident astronomer states +# +charon: supernova + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore IAU, $@ is a planet + +pluto: supernova + ${MAKE} charon + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore, $@ is a planet + @echo get used to having lots of planets because a $< can ${MAKE} a lot of them diff --git a/1986/hague/hint.html b/1986/hague/hint.html deleted file mode 100644 index 6b1a7532a..000000000 --- a/1986/hague/hint.html +++ /dev/null @@ -1,25 +0,0 @@ -

Worst abuse of the C preprocessor

- -

Jim Hague
-https://lunch.org.uk
-mailto:jim.hague@acm.org
-UK

- -

Judges' comments:

- -

Compile this program and feed ascii text into standard input. This -program is known to pass lint on some systems and abort lint on -others.

- -

This program was selected for the 1987 t-shirt collection.

- -

Think morse code when you ponder this program. Note how use of -similar variables can be obfuscating! The author notes that this -program implements the international morse standard. Now for extra -credit, what morse message does the program spell out?

- -

Copyright © 1986, Landon Curt Noll & Larry Bassel. -All Rights Reserved. Permission for personal, educational or non-profit use is -granted provided this this copyright and notice are included in its entirety -and remains unaltered. All other uses must receive prior permission in writing -from both Landon Curt Noll and Larry Bassel.

diff --git a/1986/hague/hint.text b/1986/hague/hint.txt similarity index 96% rename from 1986/hague/hint.text rename to 1986/hague/hint.txt index 050805d2a..4b55a4898 100644 --- a/1986/hague/hint.text +++ b/1986/hague/hint.txt @@ -5,6 +5,10 @@ University of Kent at Canterbury Canterbury, Kent UK +## To build: + + make all + ## Judges' comments: Compile this program and feed ascii text into standard input. This diff --git a/1986/hague/index.html b/1986/hague/index.html new file mode 100644 index 000000000..e4e8279e5 --- /dev/null +++ b/1986/hague/index.html @@ -0,0 +1,190 @@ + + + + + + + hint + + + + +

Worst abuse of the C +preprocessor

+

Jim Hague
+University of Kent at Canterbury
+Canterbury, Kent
+UK

+

To build:

+
    make all
+

Judges’ comments:

+

Compile this program and feed ascii text into standard input. This +program is known to pass lint on some systems and abort lint on +others.

+

This program was selected for the 1987 t-shirt collection.

+

Think morse code when you ponder this program. Note how use of +similar variables can be obfuscating! The author notes that this program +implements the international morse standard. Now for extra credit, what +morse message does the program spell out?

+

Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights +Reserved. Permission for personal, educational or non-profit use is +granted provided this this copyright and notice are included in its +entirety and remains unaltered. All other uses must receive prior +permission in writing from both Landon Curt Noll and Larry Bassel.

+ + diff --git a/1986/hague/orig.Makefile b/1986/hague/orig.Makefile new file mode 100644 index 000000000..b4ff6518f --- /dev/null +++ b/1986/hague/orig.Makefile @@ -0,0 +1,25 @@ +# %W% %G% %U% +# +# 1986 makefile +# +# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. +# All Rights Reserved. Permission for personal, educational or non-profit +# use is granted provided this this copyright and notice are included in its +# entirety and remains unaltered. All other uses must receive prior permission +# from Landon Curt Noll and Larry Bassel. + + +SHELL= /bin/sh +WINNERS= hague + +all: ${WINNERS} + +hague: hague.c + cc $? -o $@ + +clean: + rm -f core +clobber: clean + rm -f ${WINNERS} a.out +install: all + @echo are you kidding'??' diff --git a/1986/holloway/Makefile b/1986/holloway/Makefile index ab6ecf887..8fdb6cadd 100644 --- a/1986/holloway/Makefile +++ b/1986/holloway/Makefile @@ -1,25 +1,593 @@ -# %W% %G% %U% +#!/usr/bin/env make # -# 1986 makefile +# IOCCC 1986 winning entry - holloway + +################################################################################ # -# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. -# All Rights Reserved. Permission for personal, educational or non-profit -# use is granted provided this this copyright and notice are included in its -# entirety and remains unaltered. All other uses must receive prior permission -# from Landon Curt Noll and Larry Bassel. +# An Historical Makefile NOTE: +# +# The orig.Makefile, if it exits, is the original Makefile before this IOCCC +# year directory was reworked so that entries are in separate directories. +# This also applies to any orig.ansi.mk and orig.common.mk files. +# +# Several Makefiles were modified / formed in 2022, and as such it may have +# elements that are not historically compatible with way entries were built. +# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile. +# +# Regarding individual entries: +# +# IOCCC winning entry code may not work on your system. Even with standards, +# conditions and build environments change, especially when it comes to more +# extreme code such you might find in an IOCCC winner. Moreover, what was +# allowed and liked in one IOCCC contest may no longer be liked/allowed in +# later IOCCC years. +# +# Corrections on winning author and fixing typos in remarks are VERY WELCOME. +# +# GitHub pull requests are welcome: +# +# If you have a patch that might make running an entry work in modern Unix-like +# environments, please create a GitHub pull request for the IOCCC judgess to +# consider. +# +# Suggestions and corrections regarding Makefiles, winning author information, +# fixing typos in remarks, and code patches are welcome via opening a GitHub +# issue or better yet, by creating a GitHub pull request for the IOCCC judges +# to consider. To form a GitHub issue or GitHub pull, please visit: +# +# https://github.com/ioccc-src/winner +# +################################################################################ + +# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under: +# +# Creative Commons Attribution-ShareAlike 3.0 Unported License. +# +# See: http://creativecommons.org/licenses/by-sa/3.0/ -SHELL= /bin/sh -WINNERS= holloway +############################# +# shell used by this Makefile +############################# +# +SHELL= /bin/bash -all: ${WINNERS} +####################### +# common tool locations +####################### +# +A2P= a2p +AR= ar +ASA= asa +AT= at +ATQ= atq +ATRM= atrm +AWK= awk +BANNER= banner +BASE64= base64 +BASENAME= basename +BATCH= batch +BC= bc +BINHEX= binhex +BISON= bison +BUNZIP2= bunzip2 +BZCAT= bzcat +BZCMP= bzcmp +BZDIFF= bzdiff +BZEGREP= bzegrep +BZFGREP= bzfgrep +BZGREP= bzgrep +BZIP2= bzip2 +BZLESS= bzless +BZMORE= bzmore +C2PH= c2ph +C89= c89 +C99= c99 +CAL= cal +CALC= calc +CAT= cat +CD= cd +CHFLAGS= chflags +CHGRP= chgrp +CHMOD= chmod +CKSUM= cksum +CLANG= clang +CLANG_PLUSPLUS= clang++ +CLEAR= clear +CMP= cmp +COL= col +COLLDEF= colldef +COLRM= colrm +COLUMN= column +COMPRESS= compress +CP= cp +CPIO= cpio +CPP= cpp +CRC32= crc32 +CSH= csh +CSPLIT= csplit +CURL= curl +CUT= cut +C_PLUSPLUS= c++ +C_PLUSPLUS_FILT= c++filt +DATE= date +DC= dc +DD= dd +DF= df +DIFF3= diff3 +DIFF= diff +DIG= dig +DIRNAME= dirname +ED= ed +EGREP= egrep +ENV= env +EQN= eqn +ETAGS= etags +EXPECT= expect +EXPR= expr +FALSE= false +FGREP= fgrep +FILE= file +FIND2PERL= find2perl +FIND= find +FLEX= flex +FLEX_PLUSPLUS= flex++ +FMT= fmt +FOLD= fold +FS_USAGE= fs_usage +FUNZIP= funzip +FUSER= fuser +GCC= gcc +GDIFFMK= gdiffmk +GENCAT= gencat +GENSTRINGS= genstrings +GETOPT= getopt +GETOPTS= getopts +GNUMAKE= gnumake +GREP= grep +GROFF= groff +GROFFER= groffer +GROG= grog +GROPS= grops +GROTTY= grotty +GUNZIP= gunzip +GVIM= gvim +GZCAT= gzcat +GZEXE= gzexe +GZIP_PROG= gzip +G_PLUSPLUS= g++ +H2PH= h2ph +H2XS= h2xs +HASH= hash +HEAD= head +HOSTNAME_PROG= hostname +ICONV= iconv +ID= id +INDENT= indent +INFO= info +JOT= jot +KILL= kill +KSH= ksh +LAST= last +LD= ld +LESSECHO= lessecho +LEX= len +LINK= link +LN= ln +LS= ls +M4= m4 +MAKE= make +MAN= man +MKDIR= mkdir +MKFIFo= mkfifo +MKTEMP= mktemp +MV= mv +NANO= nano +NASM= nasm +NEQN= neqn +NICE= nice +NL= nl +NM= nm +NOHUP= nohup +NROFF= nroff +NSLOOKUP= nslookup +OD= od +OPENSSL= openssl +PASTE= paste +PATCH= patch +PATHCHK= pathchk +PAX= pax +PERL= perl +PICO= pico +PR= pr +PRINTENV= printenv +PS= ps +PTAR= ptar +PTARDIFF= ptardiff +PTARGREP= ptargrep +PWD= pwd +PYDOC= pydoc +PYTHON= python +PYTHONW= pythonw +READLINK= readlink +RENICE= renice +RESET= reset +REV= rev +RI= ri +RM= rm +RMDIR= rmdir +RSYNC= rsync +RUBY= ruby +RVIM= rvim +SAY= say +SCP= scp +SCREEN= screen +SCRIPT= script +SDIFF= sdiff +SED= sed +SEQ= seq +SFTP= sftp +SH= sh +SHA1= sha1 +SHA= sha +SHAR= shar +SHASUM5_18= shasum5.18 +SHASUM= shasum +SIZE= size +SLEEP= sleep +SORT= sort +SSH= ssh +STAT= stat +STRIP= strip +STTY= stty +SUM= sum +SYNC= sync +TABS= tabs +TAIL= tail +TAR= tar +TEE= tee +TEST= test +TFTP= tftp +TIDY= tidy +TIME= time +TOP= top +TOUCH= touch +TPUT= tout +TPUT= tput +TR= tr +TROFF= troff +TRUE= true +TSET= tset +TSORT= tsort +UL= ul +UNAME= uname +UNCOMPRESS= uncompress +UNEXPAND= unexpand +UNIFDEF= unifdef +UNIFDEFALL= unifdefall +UNIQ= uniq +UNITS= units +UNLINK= unlink +UNZIP= unzip +UNZIPSFX= unzipsfx +UPTIME= uptime +UUDECODE= uudecode +UUENCODE= uuencode +UUIDGEN= uuidgen +VI= vi +VIEW= view +VIM= vim +VIMDIFF= vimdiff +W= w +WAIT4PATH= wait4path +WAIT= wait +WC= wc +WGET= wget +WHAT= what +WHATIS= whatis +WHICH= which +WHO= who +WHOAMI= whoami +WHOIS= whois +WRTIE= write +XAR= xar +XARGS= xargs +XATTR= xattr +XXD= xxd +YACC= yacc +YES= yes +ZCAT= zcat +ZCMP= zcmp +ZDIFF= zdiff +ZEGREP= zegrep +ZFGREP= zfgrep +ZFORCE= zforce +ZGREP= zgrep +ZIP= zip +ZIPCLOAK= zipcloak +ZIPGREp= zipgrep +ZIPINFo= zipinfo +ZIPNOTE= zipnote +ZIPSPLIT= zipsplit +ZLESS= zless +ZMORE= zmore +ZNEW= znew +ZPRINT= zprint +ZSH= zsh -holloway: holloway.c - cc $? -o $@ +# Set X11_LIBDIR to the directory where the X11 library resides +# +#X11_LIBDIR= /usr/X11R6/lib +#X11_LIBDIR= /usr/X11/lib +X11_LIBDIR= /opt/X11/lib + +# Set X11_INCLUDEDIR to the directory where the X11 include files reside +# +#X11_INCDIR= /usr/X11R6/include +#X11_INCDIR= /usr/X11/include +X11_INCDIR= /opt/X11/include + +# Compiler warnings +# +#CWARN= +#CWARN= -Wall +#CWARN= -Wall -Wextra +CWARN= -Wall -Wextra ${CSILENCE} +#CWARN= -Wall -Wextra -pedantic ${CSILENCE} +#CWARN= -Wall -Wextra -Weverything +#CWARN= -Wall -Wextra -Weverything -pedantic +#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE} + +# Silence warnings that ${CWARN} would normally complain about +# +CSILENCE= -Wno-format-security -Wno-implicit-int -Wno-int-to-pointer-cast \ + -Wno-pointer-to-int-cast +#CSILENCE= -Wno-implicit-int + +# compiler standard +# +#CSTD= +#CSTD= -ansi +CSTD= -std=gnu89 + +# compiler bit architecture +# +# Some entries require 32-bitness: +# ARCH= -m32 +# +# Some entries require 64-bitness: +# ARCH= -m64 +# +# By default we assume nothing: +# +ARCH= + +# defines that are needed to compile +# +CDEFINE= +#CDEFINE= -DIOCCC=26 + +# include files that are needed to compile +# +CINCLUDE= +#CINCLUDE= -include stdlib.h +#CINCLUDE= -include stdio.h +#CINCLUDE= -include stdlib.h -include stdio.h +#CINCLUDE= -I ${X11_INCDIR} +#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2 + +# optimization +# +# Most compiles will safely use -O2. Some can use only -O1 or -O. +# A few compilers have broken optimizers or this entry make break +# under those buggy optimizers and thus you may not want anything. +# Reasonable compilers will allow for -O3. +# +#OPT= +#OPT= -O +#OPT= -O1 +#OPT= -O2 +OPT= -O3 + +# default flags for ANSI C compilation +# +CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT} + +# Libraries needed to build +# +LIBS= +#LIBS= -lm +#LIBS= -L ${X11_LIBDIR} -lX11 +#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL + +# ANSI compiler +# +# Set CC to the name of your ANSI compiler. +# +# Some entries seem to need gcc. If you have gcc, set +# both CC and MAY_NEED_GCC to gcc. +# +# If you do not have gcc, set CC to the name of your ANSI compiler, and +# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just : +# to disable such programs. +# +CC= cc +#CC=clang +MAY_NEED_GCC= gcc + + +############################## +# Special flags for this entry +############################## +# +ENTRY= holloway +PROG= ${ENTRY} +# +OBJ= ${PROG}.o +DATA= +TARGET= ${PROG} +# +ALT_OBJ= +ALT_TARGET= + + +################# +# build the entry +################# +# +all: ${DATA} ${TARGET} + @${TRUE} + +.PHONY: alt data everything clean clobber nuke dist_clean \ + install build love haste waste make easter_egg \ + supernova deep_magic magic charon pluto + +${PROG}: ${PROG}.c + @echo "NOTE: This entry uses non-standard args to main() that do not work with modern compilers." + ${CC} ${CFLAGS} $< -o $@ ${LIBS} + +# alternative executable +# +alt: ${DATA} ${ALT_TARGET} + @${TRUE} + +# data files +# +data: ${DATA} + @${TRUE} + + +############### +# utility rules +############### +# +everything: all alt clean: - rm -f core + ${RM} -f ${OBJ} ${ALT_OBJ} + @-if [ -f indent.c ]; then \ + ${ECHO} ${RM} -f indent.c; \ + ${RM} -f indent.c; \ + fi + clobber: clean - rm -f ${WINNERS} a.out -install: all - @echo are you kidding'??' + ${RM} -f ${TARGET} ${ALT_TARGET} + @-if [ -e sandwich ]; then \ + ${RM} -f sandwich; \ + echo 'ate sandwich'; \ + fi + +nuke: clobber + @${TRUE} + +dist_clean: nuke + @${TRUE} + +install: + @echo "Dr. Spock says that is not logical!" + @${TRUE} + +# you may be able to misunderstand the source by reading indent.c +# +indent.c: ${PROG}.c + @if which "${GINDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${GINDENT} < $< > $@"; \ + ${GINDENT} < $< > $@; \ + elif which "${INDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${INDENT} < $< > $@"; \ + ${INDENT} < $< > $@; \ + else \ + ${ECHO} "no intent tool found, ident $< yourself, sorry"; \ + ${ECHO} "exit 1"; \ + exit 1; \ + fi + + +################## +# 133t hacker rulz +################## +# +love: + @echo 'not war?' + @${TRUE} + +haste: + $(MAKE) waste + @${TRUE} + +waste: + @echo 'haste' + @${TRUE} + +make: + @echo 'Participate in a maker faire' + @${TRUE} + +easter_egg: + @echo you expected to often misunderstand this $${RANDOM} magic + @echo chongo '' "/\\oo/\\" + @echo Eggy + +fabricate fashion form frame manufacture produce: make + @${TRUE} + +sandwich: + @if [ `id -u` -eq 0 ]; then \ + echo 'Okay.'; \ + echo $${RANDOM}`date +%s`$${RANDOM} > $@; \ + else \ + echo 'What? Make it yourself.'; \ + exit 1; \ + fi + +# Understand the history of the Homebrew Computer Club +# as well as the West Coast Computer Faire and +# you might be confused different. :-) +# +supernova: nuke + @-if [ -r .code_anal ]; then \ + ${RM} -f .code_anal_v6; \ + else \ + echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \ + fi + @echo A $@ helps ${MAKE} the elements that help form planets + @${TRUE} + +deep_magic: + @-if [ -r .code_anal ]; then \ + ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + fi + @${TRUE} + +magic: deep_magic + @-if [ -r .code_anal ]; then \ + ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "If you don't eat yer meat, you can't have any pudding!"; \ + echo "How can you have any pudding if you don't eat yer meat?!"; \ + fi + @${TRUE} + +# The IOCCC resident astronomer states +# +charon: supernova + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore IAU, $@ is a planet + +pluto: supernova + ${MAKE} charon + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore, $@ is a planet + @echo get used to having lots of planets because a $< can ${MAKE} a lot of them diff --git a/1986/holloway/hint.html b/1986/holloway/hint.html deleted file mode 100644 index 1291ac5af..000000000 --- a/1986/holloway/hint.html +++ /dev/null @@ -1,19 +0,0 @@ -

Best simple task performed in a complex way

- -

Bruce Holloway
-Digital Research, Inc.
-Monterey, CA
-USA

- -

Judges' comments:

- -

Believe it or not, this is the old standard “Hello, world” program -performed in a very complex way. The judges and the author defy you -do determine how it does it. It is a good thing that K&R didn’t use -this version as the first C program!

- -

Copyright © 1986, Landon Curt Noll & Larry Bassel. -All Rights Reserved. Permission for personal, educational or non-profit use is -granted provided this this copyright and notice are included in its entirety -and remains unaltered. All other uses must receive prior permission in writing -from both Landon Curt Noll and Larry Bassel.

diff --git a/1986/holloway/hint.text b/1986/holloway/hint.txt similarity index 78% rename from 1986/holloway/hint.text rename to 1986/holloway/hint.txt index 72b5ba013..1195465b4 100644 --- a/1986/holloway/hint.text +++ b/1986/holloway/hint.txt @@ -5,6 +5,12 @@ Digital Research, Inc. Monterey, CA USA +## To build: + + make all + +NOTE: This entry uses non-standard args to main() that do not work with modern compilers. + ## Judges' comments: Believe it or not, this is the old standard "Hello, world" program @@ -12,6 +18,8 @@ performed in a very complex way. The judges and the author defy you do determine how it does it. It is a good thing that K&R didn't use this version as the first C program! +NOTE: This entry requires a non-standard K&R C compiler to compile. + Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights Reserved. Permission for personal, educational or non-profit use is granted provided this this copyright and notice are included in its entirety diff --git a/1986/holloway/index.html b/1986/holloway/index.html new file mode 100644 index 000000000..0344b2245 --- /dev/null +++ b/1986/holloway/index.html @@ -0,0 +1,190 @@ + + + + + + + hint + + + + +

Best simple task +performed in a complex way

+

Bruce Holloway
+Digital Research, Inc.
+Monterey, CA
+USA

+

To build:

+
    make all
+

NOTE: This entry uses non-standard args to main() that do not work +with modern compilers.

+

Judges’ comments:

+

Believe it or not, this is the old standard “Hello, world” program +performed in a very complex way. The judges and the author defy you do +determine how it does it. It is a good thing that K&R didn’t use +this version as the first C program!

+

NOTE: This entry requires a non-standard K&R C compiler to +compile.

+

Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights +Reserved. Permission for personal, educational or non-profit use is +granted provided this this copyright and notice are included in its +entirety and remains unaltered. All other uses must receive prior +permission in writing from both Landon Curt Noll and Larry Bassel.

+ + diff --git a/1986/holloway/orig.Makefile b/1986/holloway/orig.Makefile new file mode 100644 index 000000000..ab6ecf887 --- /dev/null +++ b/1986/holloway/orig.Makefile @@ -0,0 +1,25 @@ +# %W% %G% %U% +# +# 1986 makefile +# +# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. +# All Rights Reserved. Permission for personal, educational or non-profit +# use is granted provided this this copyright and notice are included in its +# entirety and remains unaltered. All other uses must receive prior permission +# from Landon Curt Noll and Larry Bassel. + + +SHELL= /bin/sh +WINNERS= holloway + +all: ${WINNERS} + +holloway: holloway.c + cc $? -o $@ + +clean: + rm -f core +clobber: clean + rm -f ${WINNERS} a.out +install: all + @echo are you kidding'??' diff --git a/1986/index.html b/1986/index.html new file mode 100644 index 000000000..186143b71 --- /dev/null +++ b/1986/index.html @@ -0,0 +1,186 @@ + + + + + + + README + + + + +

The 1986 contest was named: “The Third International Obfuscated C +Code Contest”

+

Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights +Reserved. Permission for personal, educational or non-profit use is +granted provided this this copyright and notice are included in its +entirety and remains unaltered. All other uses must receive prior +permission in writing from both Landon Curt Noll and Larry Bassel.

+

The rules for 1986 suggested categories due to the success of the +1985 judging method. The maximum size was increased from 512 to 1024 +bytes. Larry Bassel joined as the second official judge.

+

A poll was taken for the worst code for BSD and System V program. The +Bourne Shell (/bin/sh) won for both systems. The BSD finger program took +third place.

+

Rules and results were posted to net.lang.c and net.unix-wizards. +Micro/Systems Journal published started regular publishing of the +winners. The practice of making first announcement of the winners at the +Summer Usenix BOF started this year. A notice was posted to +net.announce.

+ + diff --git a/1986/marshall/Makefile b/1986/marshall/Makefile index 3b430021f..3e9be22d5 100644 --- a/1986/marshall/Makefile +++ b/1986/marshall/Makefile @@ -1,25 +1,594 @@ -# %W% %G% %U% +#!/usr/bin/env make # -# 1986 makefile +# IOCCC 1986 winning entry - marshall + +################################################################################ # -# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. -# All Rights Reserved. Permission for personal, educational or non-profit -# use is granted provided this this copyright and notice are included in its -# entirety and remains unaltered. All other uses must receive prior permission -# from Landon Curt Noll and Larry Bassel. +# An Historical Makefile NOTE: +# +# The orig.Makefile, if it exits, is the original Makefile before this IOCCC +# year directory was reworked so that entries are in separate directories. +# This also applies to any orig.ansi.mk and orig.common.mk files. +# +# Several Makefiles were modified / formed in 2022, and as such it may have +# elements that are not historically compatible with way entries were built. +# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile. +# +# Regarding individual entries: +# +# IOCCC winning entry code may not work on your system. Even with standards, +# conditions and build environments change, especially when it comes to more +# extreme code such you might find in an IOCCC winner. Moreover, what was +# allowed and liked in one IOCCC contest may no longer be liked/allowed in +# later IOCCC years. +# +# Corrections on winning author and fixing typos in remarks are VERY WELCOME. +# +# GitHub pull requests are welcome: +# +# If you have a patch that might make running an entry work in modern Unix-like +# environments, please create a GitHub pull request for the IOCCC judgess to +# consider. +# +# Suggestions and corrections regarding Makefiles, winning author information, +# fixing typos in remarks, and code patches are welcome via opening a GitHub +# issue or better yet, by creating a GitHub pull request for the IOCCC judges +# to consider. To form a GitHub issue or GitHub pull, please visit: +# +# https://github.com/ioccc-src/winner +# +################################################################################ + +# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under: +# +# Creative Commons Attribution-ShareAlike 3.0 Unported License. +# +# See: http://creativecommons.org/licenses/by-sa/3.0/ -SHELL= /bin/sh -WINNERS= marshall +############################# +# shell used by this Makefile +############################# +# +SHELL= /bin/bash -all: ${WINNERS} +####################### +# common tool locations +####################### +# +A2P= a2p +AR= ar +ASA= asa +AT= at +ATQ= atq +ATRM= atrm +AWK= awk +BANNER= banner +BASE64= base64 +BASENAME= basename +BATCH= batch +BC= bc +BINHEX= binhex +BISON= bison +BUNZIP2= bunzip2 +BZCAT= bzcat +BZCMP= bzcmp +BZDIFF= bzdiff +BZEGREP= bzegrep +BZFGREP= bzfgrep +BZGREP= bzgrep +BZIP2= bzip2 +BZLESS= bzless +BZMORE= bzmore +C2PH= c2ph +C89= c89 +C99= c99 +CAL= cal +CALC= calc +CAT= cat +CD= cd +CHFLAGS= chflags +CHGRP= chgrp +CHMOD= chmod +CKSUM= cksum +CLANG= clang +CLANG_PLUSPLUS= clang++ +CLEAR= clear +CMP= cmp +COL= col +COLLDEF= colldef +COLRM= colrm +COLUMN= column +COMPRESS= compress +CP= cp +CPIO= cpio +CPP= cpp +CRC32= crc32 +CSH= csh +CSPLIT= csplit +CURL= curl +CUT= cut +C_PLUSPLUS= c++ +C_PLUSPLUS_FILT= c++filt +DATE= date +DC= dc +DD= dd +DF= df +DIFF3= diff3 +DIFF= diff +DIG= dig +DIRNAME= dirname +ED= ed +EGREP= egrep +ENV= env +EQN= eqn +ETAGS= etags +EXPECT= expect +EXPR= expr +FALSE= false +FGREP= fgrep +FILE= file +FIND2PERL= find2perl +FIND= find +FLEX= flex +FLEX_PLUSPLUS= flex++ +FMT= fmt +FOLD= fold +FS_USAGE= fs_usage +FUNZIP= funzip +FUSER= fuser +GCC= gcc +GDIFFMK= gdiffmk +GENCAT= gencat +GENSTRINGS= genstrings +GETOPT= getopt +GETOPTS= getopts +GNUMAKE= gnumake +GREP= grep +GROFF= groff +GROFFER= groffer +GROG= grog +GROPS= grops +GROTTY= grotty +GUNZIP= gunzip +GVIM= gvim +GZCAT= gzcat +GZEXE= gzexe +GZIP_PROG= gzip +G_PLUSPLUS= g++ +H2PH= h2ph +H2XS= h2xs +HASH= hash +HEAD= head +HOSTNAME_PROG= hostname +ICONV= iconv +ID= id +INDENT= indent +INFO= info +JOT= jot +KILL= kill +KSH= ksh +LAST= last +LD= ld +LESSECHO= lessecho +LEX= len +LINK= link +LN= ln +LS= ls +M4= m4 +MAKE= make +MAN= man +MKDIR= mkdir +MKFIFo= mkfifo +MKTEMP= mktemp +MV= mv +NANO= nano +NASM= nasm +NEQN= neqn +NICE= nice +NL= nl +NM= nm +NOHUP= nohup +NROFF= nroff +NSLOOKUP= nslookup +OD= od +OPENSSL= openssl +PASTE= paste +PATCH= patch +PATHCHK= pathchk +PAX= pax +PERL= perl +PICO= pico +PR= pr +PRINTENV= printenv +PS= ps +PTAR= ptar +PTARDIFF= ptardiff +PTARGREP= ptargrep +PWD= pwd +PYDOC= pydoc +PYTHON= python +PYTHONW= pythonw +READLINK= readlink +RENICE= renice +RESET= reset +REV= rev +RI= ri +RM= rm +RMDIR= rmdir +RSYNC= rsync +RUBY= ruby +RVIM= rvim +SAY= say +SCP= scp +SCREEN= screen +SCRIPT= script +SDIFF= sdiff +SED= sed +SEQ= seq +SFTP= sftp +SH= sh +SHA1= sha1 +SHA= sha +SHAR= shar +SHASUM5_18= shasum5.18 +SHASUM= shasum +SIZE= size +SLEEP= sleep +SORT= sort +SSH= ssh +STAT= stat +STRIP= strip +STTY= stty +SUM= sum +SYNC= sync +TABS= tabs +TAIL= tail +TAR= tar +TEE= tee +TEST= test +TFTP= tftp +TIDY= tidy +TIME= time +TOP= top +TOUCH= touch +TPUT= tout +TPUT= tput +TR= tr +TROFF= troff +TRUE= true +TSET= tset +TSORT= tsort +UL= ul +UNAME= uname +UNCOMPRESS= uncompress +UNEXPAND= unexpand +UNIFDEF= unifdef +UNIFDEFALL= unifdefall +UNIQ= uniq +UNITS= units +UNLINK= unlink +UNZIP= unzip +UNZIPSFX= unzipsfx +UPTIME= uptime +UUDECODE= uudecode +UUENCODE= uuencode +UUIDGEN= uuidgen +VI= vi +VIEW= view +VIM= vim +VIMDIFF= vimdiff +W= w +WAIT4PATH= wait4path +WAIT= wait +WC= wc +WGET= wget +WHAT= what +WHATIS= whatis +WHICH= which +WHO= who +WHOAMI= whoami +WHOIS= whois +WRTIE= write +XAR= xar +XARGS= xargs +XATTR= xattr +XXD= xxd +YACC= yacc +YES= yes +ZCAT= zcat +ZCMP= zcmp +ZDIFF= zdiff +ZEGREP= zegrep +ZFGREP= zfgrep +ZFORCE= zforce +ZGREP= zgrep +ZIP= zip +ZIPCLOAK= zipcloak +ZIPGREp= zipgrep +ZIPINFo= zipinfo +ZIPNOTE= zipnote +ZIPSPLIT= zipsplit +ZLESS= zless +ZMORE= zmore +ZNEW= znew +ZPRINT= zprint +ZSH= zsh -marshall: marshall.c - cc $? -o $@ +# Set X11_LIBDIR to the directory where the X11 library resides +# +#X11_LIBDIR= /usr/X11R6/lib +#X11_LIBDIR= /usr/X11/lib +X11_LIBDIR= /opt/X11/lib + +# Set X11_INCLUDEDIR to the directory where the X11 include files reside +# +#X11_INCDIR= /usr/X11R6/include +#X11_INCDIR= /usr/X11/include +X11_INCDIR= /opt/X11/include + +# Compiler warnings +# +#CWARN= +#CWARN= -Wall +#CWARN= -Wall -Wextra +#CWARN= -Wall -Wextra ${CSILENCE} +CWARN= -Wall -Wextra -pedantic ${CSILENCE} +#CWARN= -Wall -Wextra -Weverything +#CWARN= -Wall -Wextra -Weverything -pedantic +#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE} + +# Silence warnings that ${CWARN} would normally complain about +# +CSILENCE= -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int \ + -Wno-int-conversion -Wno-parentheses -Wno-shift-negative-value \ + -Wno-string-compare -Wno-unsequenced -Wno-unused-value +#CSILENCE= -Wno-implicit-int + +# compiler standard +# +#CSTD= +#CSTD= -ansi +CSTD= -std=gnu89 + +# compiler bit architecture +# +# Some entries require 32-bitness: +# ARCH= -m32 +# +# Some entries require 64-bitness: +# ARCH= -m64 +# +# By default we assume nothing: +# +ARCH= + +# defines that are needed to compile +# +CDEFINE= +#CDEFINE= -DIOCCC=26 + +# include files that are needed to compile +# +CINCLUDE= +#CINCLUDE= -include stdlib.h +#CINCLUDE= -include stdio.h +#CINCLUDE= -include stdlib.h -include stdio.h +#CINCLUDE= -I ${X11_INCDIR} +#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2 + +# optimization +# +# Most compiles will safely use -O2. Some can use only -O1 or -O. +# A few compilers have broken optimizers or this entry make break +# under those buggy optimizers and thus you may not want anything. +# Reasonable compilers will allow for -O3. +# +#OPT= +#OPT= -O +#OPT= -O1 +#OPT= -O2 +OPT= -O3 + +# default flags for ANSI C compilation +# +CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT} + +# Libraries needed to build +# +LIBS= +#LIBS= -lm +#LIBS= -L ${X11_LIBDIR} -lX11 +#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL + +# ANSI compiler +# +# Set CC to the name of your ANSI compiler. +# +# Some entries seem to need gcc. If you have gcc, set +# both CC and MAY_NEED_GCC to gcc. +# +# If you do not have gcc, set CC to the name of your ANSI compiler, and +# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just : +# to disable such programs. +# +CC= cc +#CC=clang +MAY_NEED_GCC= gcc + + +############################## +# Special flags for this entry +############################## +# +ENTRY= marshall +PROG= ${ENTRY} +# +OBJ= ${PROG}.o +DATA= +TARGET= ${PROG} +# +ALT_OBJ= +ALT_TARGET= + + +################# +# build the entry +################# +# +all: ${DATA} ${TARGET} + @${TRUE} + +.PHONY: alt data everything clean clobber nuke dist_clean \ + install build love haste waste make easter_egg \ + supernova deep_magic magic charon pluto + +${PROG}: ${PROG}.c + @echo "NOTE: This entry uses non-standard args to main() that do not work with modern compilers." + ${CC} ${CFLAGS} $< -o $@ ${LIBS} + +# alternative executable +# +alt: ${DATA} ${ALT_TARGET} + @${TRUE} + +# data files +# +data: ${DATA} + @${TRUE} + + +############### +# utility rules +############### +# +everything: all alt clean: - rm -f core + ${RM} -f ${OBJ} ${ALT_OBJ} + @-if [ -f indent.c ]; then \ + ${ECHO} ${RM} -f indent.c; \ + ${RM} -f indent.c; \ + fi + clobber: clean - rm -f ${WINNERS} a.out -install: all - @echo are you kidding'??' + ${RM} -f ${TARGET} ${ALT_TARGET} + @-if [ -e sandwich ]; then \ + ${RM} -f sandwich; \ + echo 'ate sandwich'; \ + fi + +nuke: clobber + @${TRUE} + +dist_clean: nuke + @${TRUE} + +install: + @echo "Dr. Spock says that is not logical!" + @${TRUE} + +# you may be able to misunderstand the source by reading indent.c +# +indent.c: ${PROG}.c + @if which "${GINDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${GINDENT} < $< > $@"; \ + ${GINDENT} < $< > $@; \ + elif which "${INDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${INDENT} < $< > $@"; \ + ${INDENT} < $< > $@; \ + else \ + ${ECHO} "no intent tool found, ident $< yourself, sorry"; \ + ${ECHO} "exit 1"; \ + exit 1; \ + fi + + +################## +# 133t hacker rulz +################## +# +love: + @echo 'not war?' + @${TRUE} + +haste: + $(MAKE) waste + @${TRUE} + +waste: + @echo 'haste' + @${TRUE} + +make: + @echo 'Participate in a maker faire' + @${TRUE} + +easter_egg: + @echo you expected to often misunderstand this $${RANDOM} magic + @echo chongo '' "/\\oo/\\" + @echo Eggy + +fabricate fashion form frame manufacture produce: make + @${TRUE} + +sandwich: + @if [ `id -u` -eq 0 ]; then \ + echo 'Okay.'; \ + echo $${RANDOM}`date +%s`$${RANDOM} > $@; \ + else \ + echo 'What? Make it yourself.'; \ + exit 1; \ + fi + +# Understand the history of the Homebrew Computer Club +# as well as the West Coast Computer Faire and +# you might be confused different. :-) +# +supernova: nuke + @-if [ -r .code_anal ]; then \ + ${RM} -f .code_anal_v6; \ + else \ + echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \ + fi + @echo A $@ helps ${MAKE} the elements that help form planets + @${TRUE} + +deep_magic: + @-if [ -r .code_anal ]; then \ + ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + fi + @${TRUE} + +magic: deep_magic + @-if [ -r .code_anal ]; then \ + ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "If you don't eat yer meat, you can't have any pudding!"; \ + echo "How can you have any pudding if you don't eat yer meat?!"; \ + fi + @${TRUE} + +# The IOCCC resident astronomer states +# +charon: supernova + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore IAU, $@ is a planet + +pluto: supernova + ${MAKE} charon + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore, $@ is a planet + @echo get used to having lots of planets because a $< can ${MAKE} a lot of them diff --git a/1986/marshall/hint.html b/1986/marshall/hint.html deleted file mode 100644 index c313efbeb..000000000 --- a/1986/marshall/hint.html +++ /dev/null @@ -1,23 +0,0 @@ -

Best layout

- -

Eric Marshall
-System Development Corporation, a Burroughs Company
-P.O. Box 517
-Paoli, PA.
-19301

- -

Judges' comments:

- -

This program prints the name of the picture. The layout is somewhat -pretty through it is not the usual sort of output one would expect -from printing a program!

- -

This program was selected for the 1987 t-shirt collection.

- -

This program is known to give some C compilers a problems.

- -

Copyright © 1986, Landon Curt Noll & Larry Bassel. -All Rights Reserved. Permission for personal, educational or non-profit use is -granted provided this this copyright and notice are included in its entirety -and remains unaltered. All other uses must receive prior permission in writing -from both Landon Curt Noll and Larry Bassel.

diff --git a/1986/marshall/hint.text b/1986/marshall/hint.txt similarity index 79% rename from 1986/marshall/hint.text rename to 1986/marshall/hint.txt index ac079f839..ff9f40c2b 100644 --- a/1986/marshall/hint.text +++ b/1986/marshall/hint.txt @@ -6,6 +6,12 @@ P.O. Box 517 Paoli, PA. 19301 +## To build: + + make all + +NOTE: This entry uses non-standard args to main() that do not work with modern compilers. + # Judges' comments: This program prints the name of the picture. The layout is somewhat @@ -16,6 +22,8 @@ This program was selected for the 1987 t-shirt collection. This program is known to give some C compilers a problems. +NOTE: This entry requires a non-standard K&R C compiler to compile. + Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights Reserved. Permission for personal, educational or non-profit use is granted provided this this copyright and notice are included in its entirety diff --git a/1986/marshall/index.html b/1986/marshall/index.html new file mode 100644 index 000000000..6cfb75c8b --- /dev/null +++ b/1986/marshall/index.html @@ -0,0 +1,191 @@ + + + + + + + hint + + + + +

Best layout

+

Eric Marshall
+System Development Corporation, a Burroughs Company
+P.O. Box 517
+Paoli, PA.
+19301

+

To build:

+
    make all
+

NOTE: This entry uses non-standard args to main() that do not work +with modern compilers.

+

Judges’ comments:

+

This program prints the name of the picture. The layout is somewhat +pretty through it is not the usual sort of output one would expect from +printing a program!

+

This program was selected for the 1987 t-shirt collection.

+

This program is known to give some C compilers a problems.

+

NOTE: This entry requires a non-standard K&R C compiler to +compile.

+

Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights +Reserved. Permission for personal, educational or non-profit use is +granted provided this this copyright and notice are included in its +entirety and remains unaltered. All other uses must receive prior +permission in writing from both Landon Curt Noll and Larry Bassel.

+ + diff --git a/1986/marshall/orig.Makefile b/1986/marshall/orig.Makefile new file mode 100644 index 000000000..3b430021f --- /dev/null +++ b/1986/marshall/orig.Makefile @@ -0,0 +1,25 @@ +# %W% %G% %U% +# +# 1986 makefile +# +# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. +# All Rights Reserved. Permission for personal, educational or non-profit +# use is granted provided this this copyright and notice are included in its +# entirety and remains unaltered. All other uses must receive prior permission +# from Landon Curt Noll and Larry Bassel. + + +SHELL= /bin/sh +WINNERS= marshall + +all: ${WINNERS} + +marshall: marshall.c + cc $? -o $@ + +clean: + rm -f core +clobber: clean + rm -f ${WINNERS} a.out +install: all + @echo are you kidding'??' diff --git a/1986/orig.Makefile b/1986/orig.Makefile new file mode 100644 index 000000000..81055fe8b --- /dev/null +++ b/1986/orig.Makefile @@ -0,0 +1,72 @@ +#!/usr/bin/env make +# +# 1986 makefile +# +# This work by Landon Curt Noll, Simon Cooper, and Leonid A. Broukhis +# is licensed under: +# +# Creative Commons Attribution-ShareAlike 3.0 Unported License. +# +# See: http://creativecommons.org/licenses/by-sa/3.0/ + + +################ +# tool locations +################ +# +SHELL= /bin/bash +CP= cp +CPP= cpp +GUNZIP= gunzip +LD= ld +MAKE= make +RM= rm +SED= sed +TAR= tar +TRUE= true + +# ANSI compiler +# +# Set CC to the name of your ANSI compiler. +# +CC= cc + + +############### +# IOCCC winners +############### +# +WINNERS= marshall hague applin bright stein holloway august pawka wall + +################### +# build all entries +################### +# +all: + @for i in ${WINNERS} ; do \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + done + + +############### +# utility rules +############### +# +clean: + @for i in ${WINNERS} ; do \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + done + +clobber: + @for i in ${WINNERS} ; do \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + done + +install: + @for i in ${WINNERS} ; do \ + echo "(cd $$i && $(MAKE) $@)"; \ + (cd $$i && $(MAKE) $@); \ + done diff --git a/1986/pawka/Makefile b/1986/pawka/Makefile index 166227697..f81b3935f 100644 --- a/1986/pawka/Makefile +++ b/1986/pawka/Makefile @@ -1,25 +1,591 @@ -# %W% %G% %U% +#!/usr/bin/env make # -# 1986 makefile +# IOCCC 1986 winning entry - pawka + +################################################################################ # -# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. -# All Rights Reserved. Permission for personal, educational or non-profit -# use is granted provided this this copyright and notice are included in its -# entirety and remains unaltered. All other uses must receive prior permission -# from Landon Curt Noll and Larry Bassel. +# An Historical Makefile NOTE: +# +# The orig.Makefile, if it exits, is the original Makefile before this IOCCC +# year directory was reworked so that entries are in separate directories. +# This also applies to any orig.ansi.mk and orig.common.mk files. +# +# Several Makefiles were modified / formed in 2022, and as such it may have +# elements that are not historically compatible with way entries were built. +# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile. +# +# Regarding individual entries: +# +# IOCCC winning entry code may not work on your system. Even with standards, +# conditions and build environments change, especially when it comes to more +# extreme code such you might find in an IOCCC winner. Moreover, what was +# allowed and liked in one IOCCC contest may no longer be liked/allowed in +# later IOCCC years. +# +# Corrections on winning author and fixing typos in remarks are VERY WELCOME. +# +# GitHub pull requests are welcome: +# +# If you have a patch that might make running an entry work in modern Unix-like +# environments, please create a GitHub pull request for the IOCCC judgess to +# consider. +# +# Suggestions and corrections regarding Makefiles, winning author information, +# fixing typos in remarks, and code patches are welcome via opening a GitHub +# issue or better yet, by creating a GitHub pull request for the IOCCC judges +# to consider. To form a GitHub issue or GitHub pull, please visit: +# +# https://github.com/ioccc-src/winner +# +################################################################################ + +# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under: +# +# Creative Commons Attribution-ShareAlike 3.0 Unported License. +# +# See: http://creativecommons.org/licenses/by-sa/3.0/ -SHELL= /bin/sh -WINNERS= pawka +############################# +# shell used by this Makefile +############################# +# +SHELL= /bin/bash -all: ${WINNERS} +####################### +# common tool locations +####################### +# +A2P= a2p +AR= ar +ASA= asa +AT= at +ATQ= atq +ATRM= atrm +AWK= awk +BANNER= banner +BASE64= base64 +BASENAME= basename +BATCH= batch +BC= bc +BINHEX= binhex +BISON= bison +BUNZIP2= bunzip2 +BZCAT= bzcat +BZCMP= bzcmp +BZDIFF= bzdiff +BZEGREP= bzegrep +BZFGREP= bzfgrep +BZGREP= bzgrep +BZIP2= bzip2 +BZLESS= bzless +BZMORE= bzmore +C2PH= c2ph +C89= c89 +C99= c99 +CAL= cal +CALC= calc +CAT= cat +CD= cd +CHFLAGS= chflags +CHGRP= chgrp +CHMOD= chmod +CKSUM= cksum +CLANG= clang +CLANG_PLUSPLUS= clang++ +CLEAR= clear +CMP= cmp +COL= col +COLLDEF= colldef +COLRM= colrm +COLUMN= column +COMPRESS= compress +CP= cp +CPIO= cpio +CPP= cpp +CRC32= crc32 +CSH= csh +CSPLIT= csplit +CURL= curl +CUT= cut +C_PLUSPLUS= c++ +C_PLUSPLUS_FILT= c++filt +DATE= date +DC= dc +DD= dd +DF= df +DIFF3= diff3 +DIFF= diff +DIG= dig +DIRNAME= dirname +ED= ed +EGREP= egrep +ENV= env +EQN= eqn +ETAGS= etags +EXPECT= expect +EXPR= expr +FALSE= false +FGREP= fgrep +FILE= file +FIND2PERL= find2perl +FIND= find +FLEX= flex +FLEX_PLUSPLUS= flex++ +FMT= fmt +FOLD= fold +FS_USAGE= fs_usage +FUNZIP= funzip +FUSER= fuser +GCC= gcc +GDIFFMK= gdiffmk +GENCAT= gencat +GENSTRINGS= genstrings +GETOPT= getopt +GETOPTS= getopts +GNUMAKE= gnumake +GREP= grep +GROFF= groff +GROFFER= groffer +GROG= grog +GROPS= grops +GROTTY= grotty +GUNZIP= gunzip +GVIM= gvim +GZCAT= gzcat +GZEXE= gzexe +GZIP_PROG= gzip +G_PLUSPLUS= g++ +H2PH= h2ph +H2XS= h2xs +HASH= hash +HEAD= head +HOSTNAME_PROG= hostname +ICONV= iconv +ID= id +INDENT= indent +INFO= info +JOT= jot +KILL= kill +KSH= ksh +LAST= last +LD= ld +LESSECHO= lessecho +LEX= len +LINK= link +LN= ln +LS= ls +M4= m4 +MAKE= make +MAN= man +MKDIR= mkdir +MKFIFo= mkfifo +MKTEMP= mktemp +MV= mv +NANO= nano +NASM= nasm +NEQN= neqn +NICE= nice +NL= nl +NM= nm +NOHUP= nohup +NROFF= nroff +NSLOOKUP= nslookup +OD= od +OPENSSL= openssl +PASTE= paste +PATCH= patch +PATHCHK= pathchk +PAX= pax +PERL= perl +PICO= pico +PR= pr +PRINTENV= printenv +PS= ps +PTAR= ptar +PTARDIFF= ptardiff +PTARGREP= ptargrep +PWD= pwd +PYDOC= pydoc +PYTHON= python +PYTHONW= pythonw +READLINK= readlink +RENICE= renice +RESET= reset +REV= rev +RI= ri +RM= rm +RMDIR= rmdir +RSYNC= rsync +RUBY= ruby +RVIM= rvim +SAY= say +SCP= scp +SCREEN= screen +SCRIPT= script +SDIFF= sdiff +SED= sed +SEQ= seq +SFTP= sftp +SH= sh +SHA1= sha1 +SHA= sha +SHAR= shar +SHASUM5_18= shasum5.18 +SHASUM= shasum +SIZE= size +SLEEP= sleep +SORT= sort +SSH= ssh +STAT= stat +STRIP= strip +STTY= stty +SUM= sum +SYNC= sync +TABS= tabs +TAIL= tail +TAR= tar +TEE= tee +TEST= test +TFTP= tftp +TIDY= tidy +TIME= time +TOP= top +TOUCH= touch +TPUT= tout +TPUT= tput +TR= tr +TROFF= troff +TRUE= true +TSET= tset +TSORT= tsort +UL= ul +UNAME= uname +UNCOMPRESS= uncompress +UNEXPAND= unexpand +UNIFDEF= unifdef +UNIFDEFALL= unifdefall +UNIQ= uniq +UNITS= units +UNLINK= unlink +UNZIP= unzip +UNZIPSFX= unzipsfx +UPTIME= uptime +UUDECODE= uudecode +UUENCODE= uuencode +UUIDGEN= uuidgen +VI= vi +VIEW= view +VIM= vim +VIMDIFF= vimdiff +W= w +WAIT4PATH= wait4path +WAIT= wait +WC= wc +WGET= wget +WHAT= what +WHATIS= whatis +WHICH= which +WHO= who +WHOAMI= whoami +WHOIS= whois +WRTIE= write +XAR= xar +XARGS= xargs +XATTR= xattr +XXD= xxd +YACC= yacc +YES= yes +ZCAT= zcat +ZCMP= zcmp +ZDIFF= zdiff +ZEGREP= zegrep +ZFGREP= zfgrep +ZFORCE= zforce +ZGREP= zgrep +ZIP= zip +ZIPCLOAK= zipcloak +ZIPGREp= zipgrep +ZIPINFo= zipinfo +ZIPNOTE= zipnote +ZIPSPLIT= zipsplit +ZLESS= zless +ZMORE= zmore +ZNEW= znew +ZPRINT= zprint +ZSH= zsh -pawka: pawka.c - cc $? -o $@ +# Set X11_LIBDIR to the directory where the X11 library resides +# +#X11_LIBDIR= /usr/X11R6/lib +#X11_LIBDIR= /usr/X11/lib +X11_LIBDIR= /opt/X11/lib + +# Set X11_INCLUDEDIR to the directory where the X11 include files reside +# +#X11_INCDIR= /usr/X11R6/include +#X11_INCDIR= /usr/X11/include +X11_INCDIR= /opt/X11/include + +# Compiler warnings +# +#CWARN= +#CWARN= -Wall +#CWARN= -Wall -Wextra +#CWARN= -Wall -Wextra ${CSILENCE} +CWARN= -Wall -Wextra -pedantic ${CSILENCE} +#CWARN= -Wall -Wextra -Weverything +#CWARN= -Wall -Wextra -Weverything -pedantic +#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE} + +# Silence warnings that ${CWARN} would normally complain about +# +CSILENCE= -Wno-non-literal-null-conversion -Wno-unused-value +#CSILENCE= -Wno-implicit-int + +# compiler standard +# +#CSTD= +#CSTD= -ansi +CSTD= -std=gnu89 + +# compiler bit architecture +# +# Some entries require 32-bitness: +# ARCH= -m32 +# +# Some entries require 64-bitness: +# ARCH= -m64 +# +# By default we assume nothing: +# +ARCH= + +# defines that are needed to compile +# +CDEFINE= +#CDEFINE= -DIOCCC=26 + +# include files that are needed to compile +# +CINCLUDE= +#CINCLUDE= -include stdlib.h +#CINCLUDE= -include stdio.h +#CINCLUDE= -include stdlib.h -include stdio.h +#CINCLUDE= -I ${X11_INCDIR} +#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2 + +# optimization +# +# Most compiles will safely use -O2. Some can use only -O1 or -O. +# A few compilers have broken optimizers or this entry make break +# under those buggy optimizers and thus you may not want anything. +# Reasonable compilers will allow for -O3. +# +#OPT= +#OPT= -O +#OPT= -O1 +#OPT= -O2 +OPT= -O3 + +# default flags for ANSI C compilation +# +CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT} + +# Libraries needed to build +# +LIBS= +#LIBS= -lm +#LIBS= -L ${X11_LIBDIR} -lX11 +#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL + +# ANSI compiler +# +# Set CC to the name of your ANSI compiler. +# +# Some entries seem to need gcc. If you have gcc, set +# both CC and MAY_NEED_GCC to gcc. +# +# If you do not have gcc, set CC to the name of your ANSI compiler, and +# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just : +# to disable such programs. +# +CC= cc +#CC=clang +MAY_NEED_GCC= gcc + + +############################## +# Special flags for this entry +############################## +# +ENTRY= pawka +PROG= ${ENTRY} +# +OBJ= ${PROG}.o +DATA= +TARGET= ${PROG} +# +ALT_OBJ= +ALT_TARGET= + + +################# +# build the entry +################# +# +all: ${DATA} ${TARGET} + @${TRUE} + +.PHONY: alt data everything clean clobber nuke dist_clean \ + install build love haste waste make easter_egg \ + supernova deep_magic magic charon pluto + +${PROG}: ${PROG}.c + ${CC} ${CFLAGS} $< -o $@ ${LIBS} + +# alternative executable +# +alt: ${DATA} ${ALT_TARGET} + @${TRUE} + +# data files +# +data: ${DATA} + @${TRUE} + + +############### +# utility rules +############### +# +everything: all alt clean: - rm -f core + ${RM} -f ${OBJ} ${ALT_OBJ} + @-if [ -f indent.c ]; then \ + ${ECHO} ${RM} -f indent.c; \ + ${RM} -f indent.c; \ + fi + clobber: clean - rm -f ${WINNERS} a.out -install: all - @echo are you kidding'??' + ${RM} -f ${TARGET} ${ALT_TARGET} + @-if [ -e sandwich ]; then \ + ${RM} -f sandwich; \ + echo 'ate sandwich'; \ + fi + +nuke: clobber + @${TRUE} + +dist_clean: nuke + @${TRUE} + +install: + @echo "Dr. Spock says that is not logical!" + @${TRUE} + +# you may be able to misunderstand the source by reading indent.c +# +indent.c: ${PROG}.c + @if which "${GINDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${GINDENT} < $< > $@"; \ + ${GINDENT} < $< > $@; \ + elif which "${INDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${INDENT} < $< > $@"; \ + ${INDENT} < $< > $@; \ + else \ + ${ECHO} "no intent tool found, ident $< yourself, sorry"; \ + ${ECHO} "exit 1"; \ + exit 1; \ + fi + + +################## +# 133t hacker rulz +################## +# +love: + @echo 'not war?' + @${TRUE} + +haste: + $(MAKE) waste + @${TRUE} + +waste: + @echo 'haste' + @${TRUE} + +make: + @echo 'Participate in a maker faire' + @${TRUE} + +easter_egg: + @echo you expected to often misunderstand this $${RANDOM} magic + @echo chongo '' "/\\oo/\\" + @echo Eggy + +fabricate fashion form frame manufacture produce: make + @${TRUE} + +sandwich: + @if [ `id -u` -eq 0 ]; then \ + echo 'Okay.'; \ + echo $${RANDOM}`date +%s`$${RANDOM} > $@; \ + else \ + echo 'What? Make it yourself.'; \ + exit 1; \ + fi + +# Understand the history of the Homebrew Computer Club +# as well as the West Coast Computer Faire and +# you might be confused different. :-) +# +supernova: nuke + @-if [ -r .code_anal ]; then \ + ${RM} -f .code_anal_v6; \ + else \ + echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \ + fi + @echo A $@ helps ${MAKE} the elements that help form planets + @${TRUE} + +deep_magic: + @-if [ -r .code_anal ]; then \ + ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + fi + @${TRUE} + +magic: deep_magic + @-if [ -r .code_anal ]; then \ + ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "If you don't eat yer meat, you can't have any pudding!"; \ + echo "How can you have any pudding if you don't eat yer meat?!"; \ + fi + @${TRUE} + +# The IOCCC resident astronomer states +# +charon: supernova + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore IAU, $@ is a planet + +pluto: supernova + ${MAKE} charon + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore, $@ is a planet + @echo get used to having lots of planets because a $< can ${MAKE} a lot of them diff --git a/1986/pawka/hint.html b/1986/pawka/hint.html deleted file mode 100644 index 5b728de6d..000000000 --- a/1986/pawka/hint.html +++ /dev/null @@ -1,18 +0,0 @@ -

Most illegible code

- -

Michael H. Pawka
-Naval Ocean Systems Center
-San Diego, Ca
-92152

- -

Judges' comments:

- -

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!

- -

Copyright © 1986, Landon Curt Noll & Larry Bassel. -All Rights Reserved. Permission for personal, educational or non-profit use is -granted provided this this copyright and notice are included in its entirety -and remains unaltered. All other uses must receive prior permission in writing -from both Landon Curt Noll and Larry Bassel.

diff --git a/1986/pawka/hint.text b/1986/pawka/hint.txt similarity index 95% rename from 1986/pawka/hint.text rename to 1986/pawka/hint.txt index aac527ffa..172c94605 100644 --- a/1986/pawka/hint.text +++ b/1986/pawka/hint.txt @@ -5,6 +5,10 @@ Naval Ocean Systems Center San Diego, Ca 92152 +## To build: + + make all + ## Judges' comments: The judges found this entry to be one of hardest to read without the diff --git a/1986/pawka/index.html b/1986/pawka/index.html new file mode 100644 index 000000000..72d2e1887 --- /dev/null +++ b/1986/pawka/index.html @@ -0,0 +1,184 @@ + + + + + + + hint + + + + +

Most illegible code

+

Michael H. Pawka
+Naval Ocean Systems Center
+San Diego, Ca
+92152

+

To build:

+
    make all
+

Judges’ comments:

+

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!

+

Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights +Reserved. Permission for personal, educational or non-profit use is +granted provided this this copyright and notice are included in its +entirety and remains unaltered. All other uses must receive prior +permission in writing from both Landon Curt Noll and Larry Bassel.

+ + diff --git a/1986/pawka/orig.Makefile b/1986/pawka/orig.Makefile new file mode 100644 index 000000000..166227697 --- /dev/null +++ b/1986/pawka/orig.Makefile @@ -0,0 +1,25 @@ +# %W% %G% %U% +# +# 1986 makefile +# +# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. +# All Rights Reserved. Permission for personal, educational or non-profit +# use is granted provided this this copyright and notice are included in its +# entirety and remains unaltered. All other uses must receive prior permission +# from Landon Curt Noll and Larry Bassel. + + +SHELL= /bin/sh +WINNERS= pawka + +all: ${WINNERS} + +pawka: pawka.c + cc $? -o $@ + +clean: + rm -f core +clobber: clean + rm -f ${WINNERS} a.out +install: all + @echo are you kidding'??' diff --git a/1986/rules.html b/1986/rules.html new file mode 100644 index 000000000..c4cd9c6bb --- /dev/null +++ b/1986/rules.html @@ -0,0 +1,267 @@ + + + + + + + rules + + + + +

Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights +Reserved. Permission for personal, educational or non-profit use is +granted provided this this copyright and notice are included in its +entirety and remains unaltered. All other uses must receive prior +permission in writing from both Landon Curt Noll and Larry Bassel.

+

WARNING: The rules and mailing address for the contest change from +year to year. Be sure that you consult the current set of rules before +submitting entries. ——————————————————————————-

+

Subject: Third International Obfuscated C Code Contest Rules +Newsgroups: net.lang.c Keywords: rules,1986,obfuscate,contest

+

GOAL: To write the most Obscure working C program following the rules +below:

+

RULES: 1) The source must be 1024 bytes or less. NO exceptions!

+
2) Include in your letter:
+    a) Name (or anonymous), Company/School, City, State and Country.
+    b) Your path from a major network site, if applicable.
+    c) A brief statement of what the program should do.
+    d) The Machine(s)/Operating system(s) on which it runs.
+    e) Enclose your source between the following lines:
+    ---start of program---
+    <place obfuscated source of 1024 bytes or less here>
+    ---end of program---
+
+3) The entry should be written in common C. (K&R + common extensions)
+
+4) The program must be of original work.  All programs must be
+   in the public domain.  All copyrighted programs will be rejected.
+
+5) Entries must be received between 31-Mar-86 and 30-May-86 0:00 GMT.
+   Email your entries to:
+   
+            decwrl!nsc!obfuscate
+
+   Entries sent by UUCP Email will be confirmed starting 1-May-86.
+   People are encouraged to submit entries via Email, however one may
+   mail entries the following address:
+
+    International Obfuscated C Code Contest
+    National Semiconductor
+    Attn: Landon Noll      Mail Stop: 7c266
+    1135 Kern Ave.
+    Sunnyvale, CA 94086
+    U.S.A.
+

AWARDS: Winners of each category and the best of Show will be posted +to net.announce as well as being published in the May 86 issue of the +“Micro/Systems Journal”. Winners also get to receive international +fame/flame for their efforts!

+

JUDGING: Awards will be given to the best entry in a number of +categories. The actual category list will vary depending on the types of +entries we receive. At the moment, we are considering using the +following:

+
    * The most obscure algorithm
+    * The worst abuse of the C preprocessor
+    * The strangest source layout
+    * The best small one line program
+    * The most useful program
+    * <anything else we need to give recognition to a good entry>
+
+Judging will be done by myself, Larry Bassel and other local people
+who are willing to help out.
+
+We will attempt to run each of them on a Vax 785/4.2BSD system.
+Don't let the lack of such a system stop you!  Try to avoid operating
+system/machine specific code if you do not have such a system.
+Extra points will be given for programs which:
+
+    a) pass lint without complaint
+    b) do something quasi-interesting
+    c) are portable
+
+A larger program size was selected to allow for a wider range of
+program ideas.  However if you don't need 1024 bytes don't use them.
+Given two programs with similar techniques and similar levels of
+obfuscation, we will tend to favor the more concise entry.
+

POLL: We want to know what you think is the most poorly coded utility +released with 4.xBSD and/or Sys V. The top results plus the best flames +will be posted along with the contest results. To vote, please follow +the guidelines below:

+
1) Include at the top of the letter:
+    a) Name (or anonymous), Company/School, City, State and Country.
+    b) Your path from a major network site, if applicable.
+    c) the name of the poorly coded utility
+    d) the name of the operating system on which it is found
+    e) the line:    <<<FLAME ON>>>
+    f)      up to 1024 bytes of flames
+    g) the line:    <<<FLAME OFF>>>
+
+2) Confine your vote to the standard set of commands.  I.e., don't
+   flame about local commands or user contributed software.
+
+3) Submit your votes via Email to:
+
+    for 4.xBSD:  decwrl!nsc!bsd_util
+    for Sys V:   decwrl!nsc!sysV_util
+
+   or, you may send your votes by letter to the same address used by
+   the contest.  Please place your votes on different sheets of paper.
+

chongo //
+

+ + diff --git a/1986/stein/Makefile b/1986/stein/Makefile index 87b3fdf16..67e98d77c 100644 --- a/1986/stein/Makefile +++ b/1986/stein/Makefile @@ -1,27 +1,600 @@ -# %W% %G% %U% +#!/usr/bin/env make # -# 1986 makefile +# IOCCC 1986 winning entry - stein + +################################################################################ # -# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. -# All Rights Reserved. Permission for personal, educational or non-profit -# use is granted provided this this copyright and notice are included in its -# entirety and remains unaltered. All other uses must receive prior permission -# from Landon Curt Noll and Larry Bassel. +# An Historical Makefile NOTE: +# +# The orig.Makefile, if it exits, is the original Makefile before this IOCCC +# year directory was reworked so that entries are in separate directories. +# This also applies to any orig.ansi.mk and orig.common.mk files. +# +# Several Makefiles were modified / formed in 2022, and as such it may have +# elements that are not historically compatible with way entries were built. +# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile. +# +# Regarding individual entries: +# +# IOCCC winning entry code may not work on your system. Even with standards, +# conditions and build environments change, especially when it comes to more +# extreme code such you might find in an IOCCC winner. Moreover, what was +# allowed and liked in one IOCCC contest may no longer be liked/allowed in +# later IOCCC years. +# +# Corrections on winning author and fixing typos in remarks are VERY WELCOME. +# +# GitHub pull requests are welcome: +# +# If you have a patch that might make running an entry work in modern Unix-like +# environments, please create a GitHub pull request for the IOCCC judgess to +# consider. +# +# Suggestions and corrections regarding Makefiles, winning author information, +# fixing typos in remarks, and code patches are welcome via opening a GitHub +# issue or better yet, by creating a GitHub pull request for the IOCCC judges +# to consider. To form a GitHub issue or GitHub pull, please visit: +# +# https://github.com/ioccc-src/winner +# +################################################################################ + +# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under: +# +# Creative Commons Attribution-ShareAlike 3.0 Unported License. +# +# See: http://creativecommons.org/licenses/by-sa/3.0/ -SHELL= /bin/sh -WINNERS= stein +############################# +# shell used by this Makefile +############################# +# +SHELL= /bin/bash -all: ${WINNERS} +####################### +# common tool locations +####################### +# +A2P= a2p +AR= ar +ASA= asa +AT= at +ATQ= atq +ATRM= atrm +AWK= awk +BANNER= banner +BASE64= base64 +BASENAME= basename +BATCH= batch +BC= bc +BINHEX= binhex +BISON= bison +BUNZIP2= bunzip2 +BZCAT= bzcat +BZCMP= bzcmp +BZDIFF= bzdiff +BZEGREP= bzegrep +BZFGREP= bzfgrep +BZGREP= bzgrep +BZIP2= bzip2 +BZLESS= bzless +BZMORE= bzmore +C2PH= c2ph +C89= c89 +C99= c99 +CAL= cal +CALC= calc +CAT= cat +CD= cd +CHFLAGS= chflags +CHGRP= chgrp +CHMOD= chmod +CKSUM= cksum +CLANG= clang +CLANG_PLUSPLUS= clang++ +CLEAR= clear +CMP= cmp +COL= col +COLLDEF= colldef +COLRM= colrm +COLUMN= column +COMPRESS= compress +CP= cp +CPIO= cpio +CPP= cpp +CRC32= crc32 +CSH= csh +CSPLIT= csplit +CURL= curl +CUT= cut +C_PLUSPLUS= c++ +C_PLUSPLUS_FILT= c++filt +DATE= date +DC= dc +DD= dd +DF= df +DIFF3= diff3 +DIFF= diff +DIG= dig +DIRNAME= dirname +ED= ed +EGREP= egrep +ENV= env +EQN= eqn +ETAGS= etags +EXPECT= expect +EXPR= expr +FALSE= false +FGREP= fgrep +FILE= file +FIND2PERL= find2perl +FIND= find +FLEX= flex +FLEX_PLUSPLUS= flex++ +FMT= fmt +FOLD= fold +FS_USAGE= fs_usage +FUNZIP= funzip +FUSER= fuser +GCC= gcc +GDIFFMK= gdiffmk +GENCAT= gencat +GENSTRINGS= genstrings +GETOPT= getopt +GETOPTS= getopts +GNUMAKE= gnumake +GREP= grep +GROFF= groff +GROFFER= groffer +GROG= grog +GROPS= grops +GROTTY= grotty +GUNZIP= gunzip +GVIM= gvim +GZCAT= gzcat +GZEXE= gzexe +GZIP_PROG= gzip +G_PLUSPLUS= g++ +H2PH= h2ph +H2XS= h2xs +HASH= hash +HEAD= head +HOSTNAME_PROG= hostname +ICONV= iconv +ID= id +INDENT= indent +INFO= info +JOT= jot +KILL= kill +KSH= ksh +LAST= last +LD= ld +LESSECHO= lessecho +LEX= len +LINK= link +LN= ln +LS= ls +M4= m4 +MAKE= make +MAN= man +MKDIR= mkdir +MKFIFo= mkfifo +MKTEMP= mktemp +MV= mv +NANO= nano +NASM= nasm +NEQN= neqn +NICE= nice +NL= nl +NM= nm +NOHUP= nohup +NROFF= nroff +NSLOOKUP= nslookup +OD= od +OPENSSL= openssl +PASTE= paste +PATCH= patch +PATHCHK= pathchk +PAX= pax +PERL= perl +PICO= pico +PR= pr +PRINTENV= printenv +PS= ps +PTAR= ptar +PTARDIFF= ptardiff +PTARGREP= ptargrep +PWD= pwd +PYDOC= pydoc +PYTHON= python +PYTHONW= pythonw +READLINK= readlink +RENICE= renice +RESET= reset +REV= rev +RI= ri +RM= rm +RMDIR= rmdir +RSYNC= rsync +RUBY= ruby +RVIM= rvim +SAY= say +SCP= scp +SCREEN= screen +SCRIPT= script +SDIFF= sdiff +SED= sed +SEQ= seq +SFTP= sftp +SH= sh +SHA1= sha1 +SHA= sha +SHAR= shar +SHASUM5_18= shasum5.18 +SHASUM= shasum +SIZE= size +SLEEP= sleep +SORT= sort +SSH= ssh +STAT= stat +STRIP= strip +STTY= stty +SUM= sum +SYNC= sync +TABS= tabs +TAIL= tail +TAR= tar +TEE= tee +TEST= test +TFTP= tftp +TIDY= tidy +TIME= time +TOP= top +TOUCH= touch +TPUT= tout +TPUT= tput +TR= tr +TROFF= troff +TRUE= true +TSET= tset +TSORT= tsort +UL= ul +UNAME= uname +UNCOMPRESS= uncompress +UNEXPAND= unexpand +UNIFDEF= unifdef +UNIFDEFALL= unifdefall +UNIQ= uniq +UNITS= units +UNLINK= unlink +UNZIP= unzip +UNZIPSFX= unzipsfx +UPTIME= uptime +UUDECODE= uudecode +UUENCODE= uuencode +UUIDGEN= uuidgen +VI= vi +VIEW= view +VIM= vim +VIMDIFF= vimdiff +W= w +WAIT4PATH= wait4path +WAIT= wait +WC= wc +WGET= wget +WHAT= what +WHATIS= whatis +WHICH= which +WHO= who +WHOAMI= whoami +WHOIS= whois +WRTIE= write +XAR= xar +XARGS= xargs +XATTR= xattr +XXD= xxd +YACC= yacc +YES= yes +ZCAT= zcat +ZCMP= zcmp +ZDIFF= zdiff +ZEGREP= zegrep +ZFGREP= zfgrep +ZFORCE= zforce +ZGREP= zgrep +ZIP= zip +ZIPCLOAK= zipcloak +ZIPGREp= zipgrep +ZIPINFo= zipinfo +ZIPNOTE= zipnote +ZIPSPLIT= zipsplit +ZLESS= zless +ZMORE= zmore +ZNEW= znew +ZPRINT= zprint +ZSH= zsh -stein: stein.c - -rm -f a.out - cc $? -o $@ - -ln $@ a.out +# Set X11_LIBDIR to the directory where the X11 library resides +# +#X11_LIBDIR= /usr/X11R6/lib +#X11_LIBDIR= /usr/X11/lib +X11_LIBDIR= /opt/X11/lib + +# Set X11_INCLUDEDIR to the directory where the X11 include files reside +# +#X11_INCDIR= /usr/X11R6/include +#X11_INCDIR= /usr/X11/include +X11_INCDIR= /opt/X11/include + +# Compiler warnings +# +#CWARN= +#CWARN= -Wall +#CWARN= -Wall -Wextra +CWARN= -Wall -Wextra ${CSILENCE} +#CWARN= -Wall -Wextra -pedantic ${CSILENCE} +#CWARN= -Wall -Wextra -Weverything +#CWARN= -Wall -Wextra -Weverything -pedantic +#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE} + +# Silence warnings that ${CWARN} would normally complain about +# +CSILENCE= -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int -Wno-int-conversion +#CSILENCE= -Wno-implicit-int + +# compiler standard +# +#CSTD= +#CSTD= -ansi +CSTD= -std=gnu89 + +# compiler bit architecture +# +# Some entries require 32-bitness: +# ARCH= -m32 +# +# Some entries require 64-bitness: +# ARCH= -m64 +# +# By default we assume nothing: +# +ARCH= + +# defines that are needed to compile +# +CDEFINE= +#CDEFINE= -DIOCCC=26 + +# include files that are needed to compile +# +CINCLUDE= +#CINCLUDE= -include stdlib.h +#CINCLUDE= -include stdio.h +#CINCLUDE= -include stdlib.h -include stdio.h +#CINCLUDE= -I ${X11_INCDIR} +#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2 + +# optimization +# +# Most compiles will safely use -O2. Some can use only -O1 or -O. +# A few compilers have broken optimizers or this entry make break +# under those buggy optimizers and thus you may not want anything. +# Reasonable compilers will allow for -O3. +# +#OPT= +#OPT= -O +#OPT= -O1 +#OPT= -O2 +OPT= -O3 + +# default flags for ANSI C compilation +# +CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT} + +# Libraries needed to build +# +LIBS= +#LIBS= -lm +#LIBS= -L ${X11_LIBDIR} -lX11 +#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL + +# ANSI compiler +# +# Set CC to the name of your ANSI compiler. +# +# Some entries seem to need gcc. If you have gcc, set +# both CC and MAY_NEED_GCC to gcc. +# +# If you do not have gcc, set CC to the name of your ANSI compiler, and +# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just : +# to disable such programs. +# +CC= cc +#CC=clang +MAY_NEED_GCC= gcc + + +############################## +# Special flags for this entry +############################## +# +ENTRY= stein +PROG= ${ENTRY} +# +OBJ= ${PROG}.o +DATA= +TARGET= ${PROG} +# +ALT_OBJ= ${PROG}.orig.o +ALT_TARGET= ${PROG}.orig + + +################# +# build the entry +################# +# +all: ${DATA} ${TARGET} + @${TRUE} + +.PHONY: alt data everything clean clobber nuke dist_clean \ + install build love haste waste make easter_egg \ + supernova deep_magic magic charon pluto + +${PROG}: ${PROG}.c + -${RM} -f a.out + ${CC} ${CFLAGS} $< -o $@ ${LIBS} + -${LN} $@ a.out + +# alternative executable +# +alt: ${DATA} ${ALT_TARGET} + @${TRUE} + +${PROG}.orig: ${PROG}.orig.c + @echo "NOTE: The original source may not compile using modern compilers." + -${RM} -f a.out + ${CC} ${CFLAGS} $< -o $@ ${LIBS} + -${LN} $@ a.out + +# data files +# +data: ${DATA} + @${TRUE} + + +############### +# utility rules +############### +# +everything: all alt clean: - rm -f core + ${RM} -f ${OBJ} ${ALT_OBJ} + @-if [ -f indent.c ]; then \ + ${ECHO} ${RM} -f indent.c; \ + ${RM} -f indent.c; \ + fi + clobber: clean - rm -f ${WINNERS} a.out -install: all - @echo are you kidding'??' + ${RM} -f ${TARGET} ${ALT_TARGET} + ${RM} -f a.out + @-if [ -e sandwich ]; then \ + ${RM} -f sandwich; \ + echo 'ate sandwich'; \ + fi + +nuke: clobber + @${TRUE} + +dist_clean: nuke + @${TRUE} + +install: + @echo "Dr. Spock says that is not logical!" + @${TRUE} + +# you may be able to misunderstand the source by reading indent.c +# +indent.c: ${PROG}.c + @if which "${GINDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${GINDENT} < $< > $@"; \ + ${GINDENT} < $< > $@; \ + elif which "${INDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${INDENT} < $< > $@"; \ + ${INDENT} < $< > $@; \ + else \ + ${ECHO} "no intent tool found, ident $< yourself, sorry"; \ + ${ECHO} "exit 1"; \ + exit 1; \ + fi + + +################## +# 133t hacker rulz +################## +# +love: + @echo 'not war?' + @${TRUE} + +haste: + $(MAKE) waste + @${TRUE} + +waste: + @echo 'haste' + @${TRUE} + +make: + @echo 'Participate in a maker faire' + @${TRUE} + +easter_egg: + @echo you expected to often misunderstand this $${RANDOM} magic + @echo chongo '' "/\\oo/\\" + @echo Eggy + +fabricate fashion form frame manufacture produce: make + @${TRUE} + +sandwich: + @if [ `id -u` -eq 0 ]; then \ + echo 'Okay.'; \ + echo $${RANDOM}`date +%s`$${RANDOM} > $@; \ + else \ + echo 'What? Make it yourself.'; \ + exit 1; \ + fi + +# Understand the history of the Homebrew Computer Club +# as well as the West Coast Computer Faire and +# you might be confused different. :-) +# +supernova: nuke + @-if [ -r .code_anal ]; then \ + ${RM} -f .code_anal_v6; \ + else \ + echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \ + fi + @echo A $@ helps ${MAKE} the elements that help form planets + @${TRUE} + +deep_magic: + @-if [ -r .code_anal ]; then \ + ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + fi + @${TRUE} + +magic: deep_magic + @-if [ -r .code_anal ]; then \ + ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "If you don't eat yer meat, you can't have any pudding!"; \ + echo "How can you have any pudding if you don't eat yer meat?!"; \ + fi + @${TRUE} + +# The IOCCC resident astronomer states +# +charon: supernova + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore IAU, $@ is a planet + +pluto: supernova + ${MAKE} charon + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore, $@ is a planet + @echo get used to having lots of planets because a $< can ${MAKE} a lot of them diff --git a/1986/stein/hint.html b/1986/stein/hint.html deleted file mode 100644 index 96c048ae3..000000000 --- a/1986/stein/hint.html +++ /dev/null @@ -1,25 +0,0 @@ -

Best one liner

- -

Jan Stein

- -

Judges' comments:

- -

NOTE: to avoid problems with news and mail, the single line was split -into 3 lines. Join all lines into a single line to recreate -the original file.

- -

Compile and link to a filename called ‘a.out’. Try the program with the -following argument:

- -
a.out ^N^N
-
- -

(^N is ASCII control-N). One some machines, ^ML is needed to get it to -output cleanly. Your system may require another set of characters. -In time, you will figure out what it does. :-)

- -

Copyright © 1986, Landon Curt Noll & Larry Bassel. -All Rights Reserved. Permission for personal, educational or non-profit use is -granted provided this this copyright and notice are included in its entirety -and remains unaltered. All other uses must receive prior permission in writing -from both Landon Curt Noll and Larry Bassel.

diff --git a/1986/stein/hint.text b/1986/stein/hint.txt similarity index 84% rename from 1986/stein/hint.text rename to 1986/stein/hint.txt index 367b9f068..98a6c31d2 100644 --- a/1986/stein/hint.text +++ b/1986/stein/hint.txt @@ -2,6 +2,12 @@ Jan Stein +## To build: + + make all + +NOTE: The original entry may be built with "make alt". + Judges' comments: > NOTE: to avoid problems with news and mail, the single line was split @@ -17,6 +23,8 @@ following argument: output cleanly. Your system may require another set of characters. In time, you will figure out what it does. :-) +NOTE: This entry requires a non-standard K&R C compiler to compile. + Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights Reserved. Permission for personal, educational or non-profit use is granted provided this this copyright and notice are included in its entirety diff --git a/1986/stein/index.html b/1986/stein/index.html new file mode 100644 index 000000000..afe3baf36 --- /dev/null +++ b/1986/stein/index.html @@ -0,0 +1,192 @@ + + + + + + + hint + + + + +

Best one liner

+

Jan Stein

+

To build:

+
    make all
+

NOTE: The original entry may be built with “make alt”.

+

Judges’ comments:

+
+

NOTE: to avoid problems with news and mail, the single line was split +into 3 lines. Join all lines into a single line to recreate the original +file.

+
+

Compile and link to a filename called ‘a.out’. Try the program with +the following argument:

+
a.out ^N^N
+

(^N is ASCII control-N). One some machines, ML is needed +to get it to output cleanly. Your system may require another set of +characters. In time, you will figure out what it does. :-)

+

NOTE: This entry requires a non-standard K&R C compiler to +compile.

+

Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights +Reserved. Permission for personal, educational or non-profit use is +granted provided this this copyright and notice are included in its +entirety and remains unaltered. All other uses must receive prior +permission in writing from both Landon Curt Noll and Larry Bassel.

+ + diff --git a/1986/stein/orig.Makefile b/1986/stein/orig.Makefile new file mode 100644 index 000000000..87b3fdf16 --- /dev/null +++ b/1986/stein/orig.Makefile @@ -0,0 +1,27 @@ +# %W% %G% %U% +# +# 1986 makefile +# +# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. +# All Rights Reserved. Permission for personal, educational or non-profit +# use is granted provided this this copyright and notice are included in its +# entirety and remains unaltered. All other uses must receive prior permission +# from Landon Curt Noll and Larry Bassel. + + +SHELL= /bin/sh +WINNERS= stein + +all: ${WINNERS} + +stein: stein.c + -rm -f a.out + cc $? -o $@ + -ln $@ a.out + +clean: + rm -f core +clobber: clean + rm -f ${WINNERS} a.out +install: all + @echo are you kidding'??' diff --git a/1986/stein/stein.c b/1986/stein/stein.c index cf731c84a..013d96fd9 100644 --- a/1986/stein/stein.c +++ b/1986/stein/stein.c @@ -1,3 +1,3 @@ -typedef char*z;O;o;_=33303285;main(b,Z)z Z;{b=(b>=0||(main(b+1,Z+1),*Z=O%(o=(_% +typedef char**z;O;o;_=33303285;main(b,Z)z Z;{b=(b>=0||(main(b+1,Z+1),*Z=O%(o=(_% 25))+'0',O/=o,_/=25))&&(b<1||(O=time(&b)%0250600,main(~5,*(z*)Z),write(1,*(z*)Z ,9)));} diff --git a/1986/stein/stein.orig.c b/1986/stein/stein.orig.c new file mode 100644 index 000000000..cf731c84a --- /dev/null +++ b/1986/stein/stein.orig.c @@ -0,0 +1,3 @@ +typedef char*z;O;o;_=33303285;main(b,Z)z Z;{b=(b>=0||(main(b+1,Z+1),*Z=O%(o=(_% +25))+'0',O/=o,_/=25))&&(b<1||(O=time(&b)%0250600,main(~5,*(z*)Z),write(1,*(z*)Z +,9)));} diff --git a/1986/wall/Makefile b/1986/wall/Makefile index 77b894c02..dbcff239b 100644 --- a/1986/wall/Makefile +++ b/1986/wall/Makefile @@ -1,25 +1,593 @@ -# %W% %G% %U% +#!/usr/bin/env make # -# 1986 makefile +# IOCCC 1986 winning entry - wall + +################################################################################ # -# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. -# All Rights Reserved. Permission for personal, educational or non-profit -# use is granted provided this this copyright and notice are included in its -# entirety and remains unaltered. All other uses must receive prior permission -# from Landon Curt Noll and Larry Bassel. +# An Historical Makefile NOTE: +# +# The orig.Makefile, if it exits, is the original Makefile before this IOCCC +# year directory was reworked so that entries are in separate directories. +# This also applies to any orig.ansi.mk and orig.common.mk files. +# +# Several Makefiles were modified / formed in 2022, and as such it may have +# elements that are not historically compatible with way entries were built. +# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile. +# +# Regarding individual entries: +# +# IOCCC winning entry code may not work on your system. Even with standards, +# conditions and build environments change, especially when it comes to more +# extreme code such you might find in an IOCCC winner. Moreover, what was +# allowed and liked in one IOCCC contest may no longer be liked/allowed in +# later IOCCC years. +# +# Corrections on winning author and fixing typos in remarks are VERY WELCOME. +# +# GitHub pull requests are welcome: +# +# If you have a patch that might make running an entry work in modern Unix-like +# environments, please create a GitHub pull request for the IOCCC judgess to +# consider. +# +# Suggestions and corrections regarding Makefiles, winning author information, +# fixing typos in remarks, and code patches are welcome via opening a GitHub +# issue or better yet, by creating a GitHub pull request for the IOCCC judges +# to consider. To form a GitHub issue or GitHub pull, please visit: +# +# https://github.com/ioccc-src/winner +# +################################################################################ + +# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under: +# +# Creative Commons Attribution-ShareAlike 3.0 Unported License. +# +# See: http://creativecommons.org/licenses/by-sa/3.0/ -SHELL= /bin/sh -WINNERS= wall +############################# +# shell used by this Makefile +############################# +# +SHELL= /bin/bash -all: ${WINNERS} +####################### +# common tool locations +####################### +# +A2P= a2p +AR= ar +ASA= asa +AT= at +ATQ= atq +ATRM= atrm +AWK= awk +BANNER= banner +BASE64= base64 +BASENAME= basename +BATCH= batch +BC= bc +BINHEX= binhex +BISON= bison +BUNZIP2= bunzip2 +BZCAT= bzcat +BZCMP= bzcmp +BZDIFF= bzdiff +BZEGREP= bzegrep +BZFGREP= bzfgrep +BZGREP= bzgrep +BZIP2= bzip2 +BZLESS= bzless +BZMORE= bzmore +C2PH= c2ph +C89= c89 +C99= c99 +CAL= cal +CALC= calc +CAT= cat +CD= cd +CHFLAGS= chflags +CHGRP= chgrp +CHMOD= chmod +CKSUM= cksum +CLANG= clang +CLANG_PLUSPLUS= clang++ +CLEAR= clear +CMP= cmp +COL= col +COLLDEF= colldef +COLRM= colrm +COLUMN= column +COMPRESS= compress +CP= cp +CPIO= cpio +CPP= cpp +CRC32= crc32 +CSH= csh +CSPLIT= csplit +CURL= curl +CUT= cut +C_PLUSPLUS= c++ +C_PLUSPLUS_FILT= c++filt +DATE= date +DC= dc +DD= dd +DF= df +DIFF3= diff3 +DIFF= diff +DIG= dig +DIRNAME= dirname +ED= ed +EGREP= egrep +ENV= env +EQN= eqn +ETAGS= etags +EXPECT= expect +EXPR= expr +FALSE= false +FGREP= fgrep +FILE= file +FIND2PERL= find2perl +FIND= find +FLEX= flex +FLEX_PLUSPLUS= flex++ +FMT= fmt +FOLD= fold +FS_USAGE= fs_usage +FUNZIP= funzip +FUSER= fuser +GCC= gcc +GDIFFMK= gdiffmk +GENCAT= gencat +GENSTRINGS= genstrings +GETOPT= getopt +GETOPTS= getopts +GNUMAKE= gnumake +GREP= grep +GROFF= groff +GROFFER= groffer +GROG= grog +GROPS= grops +GROTTY= grotty +GUNZIP= gunzip +GVIM= gvim +GZCAT= gzcat +GZEXE= gzexe +GZIP_PROG= gzip +G_PLUSPLUS= g++ +H2PH= h2ph +H2XS= h2xs +HASH= hash +HEAD= head +HOSTNAME_PROG= hostname +ICONV= iconv +ID= id +INDENT= indent +INFO= info +JOT= jot +KILL= kill +KSH= ksh +LAST= last +LD= ld +LESSECHO= lessecho +LEX= len +LINK= link +LN= ln +LS= ls +M4= m4 +MAKE= make +MAN= man +MKDIR= mkdir +MKFIFo= mkfifo +MKTEMP= mktemp +MV= mv +NANO= nano +NASM= nasm +NEQN= neqn +NICE= nice +NL= nl +NM= nm +NOHUP= nohup +NROFF= nroff +NSLOOKUP= nslookup +OD= od +OPENSSL= openssl +PASTE= paste +PATCH= patch +PATHCHK= pathchk +PAX= pax +PERL= perl +PICO= pico +PR= pr +PRINTENV= printenv +PS= ps +PTAR= ptar +PTARDIFF= ptardiff +PTARGREP= ptargrep +PWD= pwd +PYDOC= pydoc +PYTHON= python +PYTHONW= pythonw +READLINK= readlink +RENICE= renice +RESET= reset +REV= rev +RI= ri +RM= rm +RMDIR= rmdir +RSYNC= rsync +RUBY= ruby +RVIM= rvim +SAY= say +SCP= scp +SCREEN= screen +SCRIPT= script +SDIFF= sdiff +SED= sed +SEQ= seq +SFTP= sftp +SH= sh +SHA1= sha1 +SHA= sha +SHAR= shar +SHASUM5_18= shasum5.18 +SHASUM= shasum +SIZE= size +SLEEP= sleep +SORT= sort +SSH= ssh +STAT= stat +STRIP= strip +STTY= stty +SUM= sum +SYNC= sync +TABS= tabs +TAIL= tail +TAR= tar +TEE= tee +TEST= test +TFTP= tftp +TIDY= tidy +TIME= time +TOP= top +TOUCH= touch +TPUT= tout +TPUT= tput +TR= tr +TROFF= troff +TRUE= true +TSET= tset +TSORT= tsort +UL= ul +UNAME= uname +UNCOMPRESS= uncompress +UNEXPAND= unexpand +UNIFDEF= unifdef +UNIFDEFALL= unifdefall +UNIQ= uniq +UNITS= units +UNLINK= unlink +UNZIP= unzip +UNZIPSFX= unzipsfx +UPTIME= uptime +UUDECODE= uudecode +UUENCODE= uuencode +UUIDGEN= uuidgen +VI= vi +VIEW= view +VIM= vim +VIMDIFF= vimdiff +W= w +WAIT4PATH= wait4path +WAIT= wait +WC= wc +WGET= wget +WHAT= what +WHATIS= whatis +WHICH= which +WHO= who +WHOAMI= whoami +WHOIS= whois +WRTIE= write +XAR= xar +XARGS= xargs +XATTR= xattr +XXD= xxd +YACC= yacc +YES= yes +ZCAT= zcat +ZCMP= zcmp +ZDIFF= zdiff +ZEGREP= zegrep +ZFGREP= zfgrep +ZFORCE= zforce +ZGREP= zgrep +ZIP= zip +ZIPCLOAK= zipcloak +ZIPGREp= zipgrep +ZIPINFo= zipinfo +ZIPNOTE= zipnote +ZIPSPLIT= zipsplit +ZLESS= zless +ZMORE= zmore +ZNEW= znew +ZPRINT= zprint +ZSH= zsh -wall: wall.c - cc $? -o $@ +# Set X11_LIBDIR to the directory where the X11 library resides +# +#X11_LIBDIR= /usr/X11R6/lib +#X11_LIBDIR= /usr/X11/lib +X11_LIBDIR= /opt/X11/lib + +# Set X11_INCLUDEDIR to the directory where the X11 include files reside +# +#X11_INCDIR= /usr/X11R6/include +#X11_INCDIR= /usr/X11/include +X11_INCDIR= /opt/X11/include + +# Compiler warnings +# +#CWARN= +#CWARN= -Wall +#CWARN= -Wall -Wextra +#CWARN= -Wall -Wextra ${CSILENCE} +CWARN= -Wall -Wextra -pedantic ${CSILENCE} +#CWARN= -Wall -Wextra -Weverything +#CWARN= -Wall -Wextra -Weverything -pedantic +#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE} + +# Silence warnings that ${CWARN} would normally complain about +# +CSILENCE= -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int \ + -Wno-macro-redefined -Wno-parentheses -Wno-c99-extensions +#CSILENCE= -Wno-implicit-int + +# compiler standard +# +#CSTD= +#CSTD= -ansi +CSTD= -std=gnu89 + +# compiler bit architecture +# +# Some entries require 32-bitness: +# ARCH= -m32 +# +# Some entries require 64-bitness: +# ARCH= -m64 +# +# By default we assume nothing: +# +ARCH= + +# defines that are needed to compile +# +CDEFINE= +#CDEFINE= -DIOCCC=26 + +# include files that are needed to compile +# +CINCLUDE= +#CINCLUDE= -include stdlib.h +#CINCLUDE= -include stdio.h +#CINCLUDE= -include stdlib.h -include stdio.h +#CINCLUDE= -I ${X11_INCDIR} +#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2 + +# optimization +# +# Most compiles will safely use -O2. Some can use only -O1 or -O. +# A few compilers have broken optimizers or this entry make break +# under those buggy optimizers and thus you may not want anything. +# Reasonable compilers will allow for -O3. +# +#OPT= +#OPT= -O +#OPT= -O1 +#OPT= -O2 +OPT= -O3 + +# default flags for ANSI C compilation +# +CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT} + +# Libraries needed to build +# +LIBS= +#LIBS= -lm +#LIBS= -L ${X11_LIBDIR} -lX11 +#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL + +# ANSI compiler +# +# Set CC to the name of your ANSI compiler. +# +# Some entries seem to need gcc. If you have gcc, set +# both CC and MAY_NEED_GCC to gcc. +# +# If you do not have gcc, set CC to the name of your ANSI compiler, and +# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just : +# to disable such programs. +# +CC= cc +#CC=clang +MAY_NEED_GCC= gcc + + +############################## +# Special flags for this entry +############################## +# +ENTRY= wall +PROG= ${ENTRY} +# +OBJ= ${PROG}.o +DATA= +TARGET= ${PROG} +# +ALT_OBJ= +ALT_TARGET= + + +################# +# build the entry +################# +# +all: ${DATA} ${TARGET} + @${TRUE} + +.PHONY: alt data everything clean clobber nuke dist_clean \ + install build love haste waste make easter_egg \ + supernova deep_magic magic charon pluto + +${PROG}: ${PROG}.c + @echo "NOTE: This entry uses non-standard args to main() that do not work with modern compilers." + ${CC} ${CFLAGS} $< -o $@ ${LIBS} + +# alternative executable +# +alt: ${DATA} ${ALT_TARGET} + @${TRUE} + +# data files +# +data: ${DATA} + @${TRUE} + + +############### +# utility rules +############### +# +everything: all alt clean: - rm -f core + ${RM} -f ${OBJ} ${ALT_OBJ} + @-if [ -f indent.c ]; then \ + ${ECHO} ${RM} -f indent.c; \ + ${RM} -f indent.c; \ + fi + clobber: clean - rm -f ${WINNERS} a.out -install: all - @echo are you kidding'??' + ${RM} -f ${TARGET} ${ALT_TARGET} + @-if [ -e sandwich ]; then \ + ${RM} -f sandwich; \ + echo 'ate sandwich'; \ + fi + +nuke: clobber + @${TRUE} + +dist_clean: nuke + @${TRUE} + +install: + @echo "Dr. Spock says that is not logical!" + @${TRUE} + +# you may be able to misunderstand the source by reading indent.c +# +indent.c: ${PROG}.c + @if which "${GINDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${GINDENT} < $< > $@"; \ + ${GINDENT} < $< > $@; \ + elif which "${INDENT}" >/dev/null 2>&1; then \ + ${ECHO} ${RM} -f $@; \ + ${RM} -f $@; \ + ${ECHO} "${INDENT} < $< > $@"; \ + ${INDENT} < $< > $@; \ + else \ + ${ECHO} "no intent tool found, ident $< yourself, sorry"; \ + ${ECHO} "exit 1"; \ + exit 1; \ + fi + + +################## +# 133t hacker rulz +################## +# +love: + @echo 'not war?' + @${TRUE} + +haste: + $(MAKE) waste + @${TRUE} + +waste: + @echo 'haste' + @${TRUE} + +make: + @echo 'Participate in a maker faire' + @${TRUE} + +easter_egg: + @echo you expected to often misunderstand this $${RANDOM} magic + @echo chongo '' "/\\oo/\\" + @echo Eggy + +fabricate fashion form frame manufacture produce: make + @${TRUE} + +sandwich: + @if [ `id -u` -eq 0 ]; then \ + echo 'Okay.'; \ + echo $${RANDOM}`date +%s`$${RANDOM} > $@; \ + else \ + echo 'What? Make it yourself.'; \ + exit 1; \ + fi + +# Understand the history of the Homebrew Computer Club +# as well as the West Coast Computer Faire and +# you might be confused different. :-) +# +supernova: nuke + @-if [ -r .code_anal ]; then \ + ${RM} -f .code_anal_v6; \ + else \ + echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \ + fi + @echo A $@ helps ${MAKE} the elements that help form planets + @${TRUE} + +deep_magic: + @-if [ -r .code_anal ]; then \ + ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + sleep 2; \ + echo "Wrong! Do it again!"; \ + fi + @${TRUE} + +magic: deep_magic + @-if [ -r .code_anal ]; then \ + ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \ + else \ + echo "If you don't eat yer meat, you can't have any pudding!"; \ + echo "How can you have any pudding if you don't eat yer meat?!"; \ + fi + @${TRUE} + +# The IOCCC resident astronomer states +# +charon: supernova + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore IAU, $@ is a planet + +pluto: supernova + ${MAKE} charon + @echo $@ is a dwarf planet + @echo dwarf is a type of planet + @echo therefore, $@ is a planet + @echo get used to having lots of planets because a $< can ${MAKE} a lot of them diff --git a/1986/wall/hint.html b/1986/wall/hint.html deleted file mode 100644 index d80b57e07..000000000 --- a/1986/wall/hint.html +++ /dev/null @@ -1,25 +0,0 @@ -

The grand prize in most well-rounded in confusion

- -

Larry Wall
-System Development Corporation
-Santa Monica
-California
-US of A

- -

Judges' comments:

- -

The original version did not have a ‘;’ character in the first line. -This caused a number of System V C pre-preprocessors to gripe about a -syntax error.

- -

This program is a masterpiece of obfuscation and humor. Larry Wall -(the hacker who gave us rn and patch) asks you to compile and consider -the warning message generated by the C compiler. Then execute the -program and type charters into its standard input. You will see why -the compiler documents the program.

- -

Copyright © 1986, Landon Curt Noll & Larry Bassel. -All Rights Reserved. Permission for personal, educational or non-profit use is -granted provided this this copyright and notice are included in its entirety -and remains unaltered. All other uses must receive prior permission in writing -from both Landon Curt Noll and Larry Bassel.

diff --git a/1986/wall/hint.text b/1986/wall/hint.txt similarity index 83% rename from 1986/wall/hint.text rename to 1986/wall/hint.txt index ed0eb46f6..d792af59f 100644 --- a/1986/wall/hint.text +++ b/1986/wall/hint.txt @@ -6,6 +6,12 @@ Santa Monica California US of A +## To build: + + make all + +NOTE: This entry uses non-standard args to main() that do not work with modern compilers. + ## Judges' comments: The original version did not have a ';' character in the first line. @@ -18,6 +24,8 @@ the warning message generated by the C compiler. Then execute the program and type charters into its standard input. You will see why the compiler documents the program. +NOTE: This entry requires a non-standard K&R C compiler to compile. + Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights Reserved. Permission for personal, educational or non-profit use is granted provided this this copyright and notice are included in its entirety diff --git a/1986/wall/index.html b/1986/wall/index.html new file mode 100644 index 000000000..71bdb14e1 --- /dev/null +++ b/1986/wall/index.html @@ -0,0 +1,195 @@ + + + + + + + hint + + + + +

The grand +prize in most well-rounded in confusion

+

Larry Wall
+System Development Corporation
+Santa Monica
+California
+US of A

+

To build:

+
    make all
+

NOTE: This entry uses non-standard args to main() that do not work +with modern compilers.

+

Judges’ comments:

+

The original version did not have a ‘;’ character in the first line. +This caused a number of System V C pre-preprocessors to gripe about a +syntax error.

+

This program is a masterpiece of obfuscation and humor. Larry Wall +(the hacker who gave us rn and patch) asks you to compile and consider +the warning message generated by the C compiler. Then execute the +program and type charters into its standard input. You will see why the +compiler documents the program.

+

NOTE: This entry requires a non-standard K&R C compiler to +compile.

+

Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights +Reserved. Permission for personal, educational or non-profit use is +granted provided this this copyright and notice are included in its +entirety and remains unaltered. All other uses must receive prior +permission in writing from both Landon Curt Noll and Larry Bassel.

+ + diff --git a/1986/wall/orig.Makefile b/1986/wall/orig.Makefile new file mode 100644 index 000000000..77b894c02 --- /dev/null +++ b/1986/wall/orig.Makefile @@ -0,0 +1,25 @@ +# %W% %G% %U% +# +# 1986 makefile +# +# Copyright (c) 1986, Landon Curt Noll & Larry Bassel. +# All Rights Reserved. Permission for personal, educational or non-profit +# use is granted provided this this copyright and notice are included in its +# entirety and remains unaltered. All other uses must receive prior permission +# from Landon Curt Noll and Larry Bassel. + + +SHELL= /bin/sh +WINNERS= wall + +all: ${WINNERS} + +wall: wall.c + cc $? -o $@ + +clean: + rm -f core +clobber: clean + rm -f ${WINNERS} a.out +install: all + @echo are you kidding'??' diff --git a/years-spoiler.html b/years-spoiler.html index 4628c7020..f5c436e75 100644 --- a/years-spoiler.html +++ b/years-spoiler.html @@ -3536,91 +3536,104 @@ that works for both traditional K&R and ANSI C preprocessors.

3rd International Obfuscated C Code Contest (1986)

applin - hello world works under cc, /bin/sh, and f77

august - struct-heavy e-computation, memory allocation with sbrk

bright - hex dump, cpp compressed, uses lost of << for constants

hague - morse code filter written with 'DIT DAH _DIT DIT_DAH'

holloway - prints hello world! via a recursive main

marshall - train engine-shaped program prints "choo choo"

pawka - prints 'obfuscated?' big, uses xyyyx idents...

stein - prints HHMMSS in UTC time

wall - dvorak keyboard emulator


2nd International Obfuscated C Code Contest (1985)

diff --git a/years.html b/years.html index bd8a9b7d1..f05a81de6 100644 --- a/years.html +++ b/years.html @@ -3519,91 +3519,104 @@ a summary description of all of the winners.


3rd International Obfuscated C Code Contest (1986)

applin

august

bright

hague

holloway

marshall

pawka

stein

wall


2nd International Obfuscated C Code Contest (1985)