Actually add 1991/buzzard/buzzard.alt.c

The alt version can be more at home for those familiar with vi(m) (it
certainly is for me): instead of 'f' for forwards, 'l' for left and 'r'
for right it is now 'k', 'h' and 'l' respectively. The program does not
allow one to go backwards so this was not touched but if it did it would
have been 'j': because we vi(m) users are strange :-)
This commit is contained in:
Cody Boone Ferguson committed 2023-11-06 04:49:24 -08:00
1 parent 40c0a6a74a
commit 32a6d4b626
2 files changed
+32

No files matched your search

+1
View File
@@ -1,3 +1,4 @@
buzzard
buzzard.alt
buzzard.orig
prog.orig
+31
View File
@@ -0,0 +1,31 @@
#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=='l')-(b=='h');f&=3;if(b=='k'){if(!m(1,0))continue;
A+=X(f);B+=X(f-1);}}W((b=getchar())!=-1&&m(0,0)==1);return 0;}