Files
ioccc/2006/sloane/sloane.alt.c
T
Cody Boone Ferguson 59de574ffb Fix 2006/sloane for some versions of clang
Unfortunately later versions of clang have an additional defect where
not only are the args of main() required to be specific types but there
can only be 0, 2 or 3 args. This program did not use the second arg so I
removed it originally but this will obviously not work for all systems
so I have brought the second arg back.

The unfortunate problem here is that the author used the letter Z for
the second arg and that's exactly what I have been using for the macro
for usleep() in alt code (Z for sleep of course). So here in order to
make it so that the entry looks as close to the original as possible I
have kept it as Z (changing the type to 'char **') and instead renamed
the Z macro to just S. S was selected as it can also stand for sleep but
also it's kind of (not quite but kind of) a backwards Z. Whether the
other entries should also be changed to be '-DS=...' is something to
consider for consistency but that can be decided another time. It
probably doesn't matter except that it does bother me as I don't like
inconsistent consistencies any more than I like consistent
inconsistencies or inconsistent consistencies.
2023-10-22 13:23:55 -07:00

33 lines
1.7 KiB
C

_,x,y,o ,N;char b[1920] ;p(n,c)
{for(;n --;x++) c==10?y +=80,x=
o-1:x>= 0?80>x? c !='~'?b
[y+x]=c :0: 0:0;}c(
q,l,r) char*l,*r;{while (q>=0)q
=("E" "?yYrIxC{e^}KhE>[|LXbj}" "dOVsJ"
"@" "idOV{Yab[bW}[bW}\\qFywyv{D" "ma\\A"
"" "Ztq?Lyw>e{|Zq>Y\\gq\\qI[tYBe{w" "yvDZE\
vBA[`_" "Lo>}KcqdYrWqKxzKtW]|DXRwsfcUaT\\\
KXw{Y" "RsFwsFwsFw{zaqyaz|FmMpyaoyI\\]cuUw{J"
[_/6] -62>>_++%6&1?r[q]:l[q])-99;return q;}E(a
){for (o=x=a,y=0,_=0;_ <1006;)a=" /\\\n"
"~|_."[c(6,"b" "cd\\a[g","^`" "_e"
"]fh")+8], p( "#$%" "&'()*+,-.1"[ c(11
,"_ac[]\\YZi" "jkm", "`bd^efghXWlV" )+13
]-34,a);}main (k,Z )char**Z;{float z[1920] ,A=0
,B=0 ,i,j; puts("" "\x1b" "[2J");for(;;
) { float e=sin(A ), n= sin(B),g=cos(
A),m =cos(B);for(k =0;k< 1840;k++)y=-k
/80- 10,o=41+(k%80- 40)*1.3/y+n,N=
A-100.0/y, b[k]= ".#"[o+N&1],z[k] =0;E(
80-(int)(9*B)%250);for(j=0;6.28>j;j+=0.07 )for(
i=0;6.28>i;i+=0.02) { float c=sin(i),d =cos(j
),f=sin(j),h=d+2,D=15/(c*h*e+f*g+5 ),l=cos
(i),t=c *h*g-f*e;x=40+2*D*(l*h*m-t*n),y= 12
+D*(l*h *n+t*m),o=x+80*y,N=8*((f*e-c *d*
g)*m-c* d*e-f*g-l*d*n);if(D>z[o] )z[o]
=D,b[o] =" ..,,-++=#$@"[ N>0?N:0
] ; } printf(
"\x1b[" "H" );usleep(S);for(k =1;1841
>k;k++) putchar (k%80?b [k]:10)
; A += 0.053;B +=0.037 ; } }