diff --git a/2018/algmyr/Makefile b/2018/algmyr/Makefile index b9feaae4a..661ea0121 100644 --- a/2018/algmyr/Makefile +++ b/2018/algmyr/Makefile @@ -131,6 +131,7 @@ all: data ${TARGET} supernova deep_magic magic charon pluto ${PROG}: ${PROG}.c + @echo "NOTE: this program will crash if a file specified cannot be opened." ${CC} ${CFLAGS} $< -o $@ ${LIBS} # alternative executable diff --git a/2018/algmyr/README.md b/2018/algmyr/README.md index afae74a39..2d1031d9f 100644 --- a/2018/algmyr/README.md +++ b/2018/algmyr/README.md @@ -17,11 +17,7 @@ cat prog.c | ./prog # Printing garbage might break your font ./prog -d 2 0 out.raw # Decode the first (0th) channel out of two ``` -[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) made this entry not -crash when a file cannot be opened. The original file, kept for the wonderful -format, is in [prog.alt.c](prog.alt.c). See below for details. Thank you Cody -for your assistance! - +NOTE: this entry will crash if a file specified cannot be opened. ## Try: @@ -42,18 +38,6 @@ echo -n ' MENE MENE TEKEL UPHARSIN ' | ./prog | # now open spectrogram.png with a graphics viewer or editor ``` -### Alternate code: - -The original source which will crash if a file cannot be opened but which also -has a nicer layout can be found in [prog.alt.c](prog.alt.c). Try: - - -```sh -make alt -``` - -Use `prog.alt` as you would `prog`. - ## Judges' comments: Be warned, this is not your garden variety text-to-speech program! Earplugs are advised, diff --git a/2018/algmyr/prog.alt.c b/2018/algmyr/prog.alt.c deleted file mode 100644 index 76fe8d58e..000000000 --- a/2018/algmyr/prog.alt.c +++ /dev/null @@ -1,66 +0,0 @@ -#include -#include -#define M malloc(sizeof( -#define R fread(x,sizeof(float),Z*w,f) -#define E free( - -char*G= -" " -" '" -"@(*AP( " -" " -" " -" " -" " -" _" -"0 #@ . \"C^*/XH\"Q2_U(D&(5*E0C 4B54DV X \"!9A@ 89H$ !" -"0(/@@4 @(/@@( #@T @(\" @( P, , P# , #Y1244^ ?R 0#%)14,A#9)24$B 1" -"_)!0,$Y145%R Y145$^&!81T! #9)24DV#Y)24DP ;&P -C4 $$B% @ !04%!04 @4(D$ #!(1" -"4 @#U574$^'^0D)!_&Z1D9'_$*!@8%^'Z!@8'_(&1D9'_(\"0D)#_%Z1D8%^/\\0$!#_ \"!_X$ /X! 0" -"$&(-$*!#_ $! 0'_/] ,$#_/\\&&&#_'Z!@8%^&\"0D)#_'V\"A8%^&>8D)#_$Z1D9%B(\" _X\" /X" -"! 0'^/ , PSP/P#' /\\,!@& 088!X!#@$>" -"!$*! H1#X)!04X!$9%1,1" -"(&!;A 0 _P " -" ! 0;H&!" -" @$\"" -"! (" -"\0"; int s,p,e,c,t,r,a,l; /* l e a k a g e */ - - int - F(int o - ,int n, int t - ){char*p=(o*(136-o) - >=1260)*7*(o-9)+G; for( - n=!(o=-1); n=*p+++64*n-*G - ,(o+=3)>>2<5-t; ); return 255 - &n>>2*o%8; } float L[0x400];int - T(float a,float b,float l,float*e) - {return L[0x3ff]||!(e[1]=b*a+l**e)|| - !T(l*a-b**e,b,l,e+1); } float f(int x) - {int w=s<>x&&P+(* - h+=f(e*(l+a*(2*x+1))*y)*f(s/2-e*a*y+e*a*y*y*(t/p - )/(s/p)))),++x); float z=f(y*t)*f(y*t); *h=z*(1+3* - z+2*z*z)/6**h/c; } return h-i-r+1; } void d(int w, - int n,FILE*f){int Z=s/t; int S[5]; float**P=M float* - )*c);for(r=0;r1?v[1][0]*c+v[1][1]:0; a=7;l=16;if(r ==11620){d (atoi - (v[2]), atoi(v[3]), q<5?stdin:fopen(v[4],"r")); return 0; } char*H=malloc(c),* h=H; sprintf (H,"\0" - "Usage\n" " %s [-" "h] [-d #c cid] file1 file2 ... (or stdin)"+(q-1&&r==11624 ),v[0]);if(* H)q=1;int - w=2>q?1:q -1; FILE**f=M FILE*)*w); f[0]=stdin; if(q>1)for(r=0; rungetc(* H++,*f); for(r =w; r--;) -{ i[r]=getc (f[r]); if(i[r]<0)i[r]=!++x; } if(x==w)break; while(++r<6){ while(C(b++,t,w,F(*i++,r< 5,r))); i-= -w; fwrite(b-=w,sizeof(float),l,stdout); } fflush(stdout); } while(fclose(f[--w]),w); E f); E b); E i); E h);} - diff --git a/2018/algmyr/prog.c b/2018/algmyr/prog.c index 55360384e..76fe8d58e 100644 --- a/2018/algmyr/prog.c +++ b/2018/algmyr/prog.c @@ -59,7 +59,7 @@ char*G= 44100 ;p=25; e= 55;c=256; t=75; r=q>1?v[1][0]*c+v[1][1]:0; a=7;l=16;if(r ==11620){d (atoi (v[2]), atoi(v[3]), q<5?stdin:fopen(v[4],"r")); return 0; } char*H=malloc(c),* h=H; sprintf (H,"\0" "Usage\n" " %s [-" "h] [-d #c cid] file1 file2 ... (or stdin)"+(q-1&&r==11624 ),v[0]);if(* H)q=1;int - w=2>q?1:q-1;FILE**f=M FILE*)*w);f[0]=stdin;if(q>1)for(r=0;rq?1:q -1; FILE**f=M FILE*)*w); f[0]=stdin; if(q>1)for(r=0; rungetc(* H++,*f); for(r =w; r--;) { i[r]=getc (f[r]); if(i[r]<0)i[r]=!++x; } if(x==w)break; while(++r<6){ while(C(b++,t,w,F(*i++,r< 5,r))); i-= w; fwrite(b-=w,sizeof(float),l,stdout); } fflush(stdout); } while(fclose(f[--w]),w); E f); E b); E i); E h);}