Files
Cody Boone Ferguson 890f59d056 Fix fix on 1991/buzzard
The parameter type of q in function z() should be a 'char *', not a
'char **'.

Added to CSILENCE -Wno-implicit-int.

Note that if including files for abs(3), strlen(3) or other functions
implicitly declared the program will not work (or at least it won't work
if at least one of them is #included?).
2023-11-16 03:20:18 -08:00

32 lines
1.4 KiB
C

#include <stdio.h>
#define X(s) (!(s&3)-((s&3)==2))
#define W while
char Z[82][82],A,B,f,g=26;z(q)char*q;{return atoi(q);}m(d,l){return
Z[ B + X ( f +
3) * d+l *X(f+ 2 )][ A+X ( f ) * d +
l* X ( f + 3 ) ] ;}int
h= 0;D(p,s)char*s; {W(h>>3<p>> 3 ) {putchar('\t'
); h = ( h +8
)&~7 ;}W(h < p ){putchar(' ');++h; }(void)printf(
"%s" , s ) ;h+=strlen(s);}main(x,a)char **a; {
# define P(x) (x?(5-(x))*(6-(x ))/2:11)
int b; { char b[256],i, j=0; FILE*F;F=fopen(x-1?a[1]:__FILE__,"r");W(
fgets( b ,256 ,F)){for(i=0;b[ i];++ i)
Z[j][i ] =( b [ i ] ==' '?1:2*(b[i]==(x>2?*a[2]:'\\')));++j;}fclose
(F);}A =4 ; B = 3 ; f = 1;x >3? A=z(a[3]),B=z(a[4]):0;b='\n';do{if(b=='\n'
){int y , s , d , p , q ,i;for
(y=-11; y<= 11;++ y){ for(s = 1 ,d=0;s+3;s-=2){for
(;d!=2 + 3 * s ; d+=s){
if(m(d,0) !=1 ){p=P (d) ;if (abs( y )
<p&& ! m ( d , 0 )||abs(y)>p)break;for
(i =-p;i<p;++i)D(g+i*2,"--");D(0,"\-");break;}if(d==5)continue;
p=P(d+1);q=P(d);if
(abs(y) >q)continue;if
(abs(y) <p)D(g-s*(2*p+1),"|");else if(m(d,s)){if
(abs(y) <=p)for(i=(s==1?-q:p);i!=(s==1?-p:q);
(abs(y) ),++i)D(g+2*i+(s==-1),"--");}else if
(abs(y) ==p)D(g-s*(2*p+1),"|");else D(g-
(abs(y) *s*2),(s==1)^(y>0)?"\\":"/");}d-=s;}puts(
"");h=0;}}f+=(b=='r')-(b=='l');f&=3;if(b=='f'){if(!m(1,0))continue;
A+=X(f);B+=X(f-1);}}W((b=getchar())!=-1&&m(0,0)==1);return 0;}