From 057193050194dfacced57f7afde3707536503e76 Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Fri, 19 May 2023 02:44:38 -0700 Subject: [PATCH 1/8] Fix 2004/gavin/{kernel,fs.tar} commit Landon pointed out some issues that I missed (thank you Landon .. I was very tired and I hope that I got everything this time) in commit 4b0a2cb64a7c1319329b93678b762743b82197fb: 0. The make clobber rule removes the git files 2004/gavin/kernel and 2004/gavin/fs.tar. 1. The 2004/gavin/fs.tar file contains the file "README.md" which, when untarred, will overwrite the git file 2004/gavin/README.md. 2. The 2004/gavin/fs.tar file contains the file "gavin.c" which, when untarred, will overwrite the git file 2004/gavin/gavin.c. 3. The 2004/gavin/fs.tar file is a tar file that could be related with just checking in the 3 files "prim", "sh" and "vi". and I discovered another issue too namely that the tarball had the wrong version of gavin.c in it as well (prior to the fix for clang). Now the tarball is in the img/ subdirectory and the tarball contents (is that tar ? :-) ) looks like: $ tar ft img/fs.tar fs/ fs/gavin.c fs/vi fs/README.md fs/sh fs/prim I added to the todo.md file that this file should be verified to match the contents of 2004/gavin and I gave a command to do to test this - at the end of working on this entry or maybe better yet right before this repo is to be folded back into the winner repo. Updated .gitignore so that the files that are in img/fs.tar are not added to the repo. The tarball is not meant to be extracted anyway but rather copied to a disk for usage of the entry. It will be extracted to verify that the contents match that of the entry itself (2004/gavin directory). --- 2004/gavin/.gitignore | 3 +++ 2004/gavin/README.md | 3 ++- 2004/gavin/{ => img}/fs.tar | Bin 30720 -> 31232 bytes 2004/gavin/{ => img}/kernel | Bin todo.md | 11 ++++++++++- 5 files changed, 15 insertions(+), 2 deletions(-) rename 2004/gavin/{ => img}/fs.tar (88%) rename 2004/gavin/{ => img}/kernel (100%) diff --git a/2004/gavin/.gitignore b/2004/gavin/.gitignore index 3b272d8b3..9d56fadf5 100644 --- a/2004/gavin/.gitignore +++ b/2004/gavin/.gitignore @@ -3,3 +3,6 @@ sh vi gavin.o fs/ +img/README.md +img/gavin.c +img/prim diff --git a/2004/gavin/README.md b/2004/gavin/README.md index d5ead237c..f86f14918 100644 --- a/2004/gavin/README.md +++ b/2004/gavin/README.md @@ -66,7 +66,8 @@ Press and hold any key. [Yusuke Endoh](/winners.html#Yusuke_Endoh) provided the `kernel` and `fs.tar` files which can be used if you cannot normally use this entry. Instead of -generating the files just use the files provided. +generating the files just use the files provided, found under the [img/](img/) +directory. Thank you Yusuke! diff --git a/2004/gavin/fs.tar b/2004/gavin/img/fs.tar similarity index 88% rename from 2004/gavin/fs.tar rename to 2004/gavin/img/fs.tar index 35a03f8bf8a64c9fce5674c5d0670a72ab732ae2..d332838809f570e21ccc065a2fe563071bf0329c 100644 GIT binary patch delta 325 zcmZqpz}WDGaYCzvsfmK2iHWhHnTesXseyulp^=HH0fU0U Date: Fri, 19 May 2023 04:12:33 -0700 Subject: [PATCH 2/8] Update 2001/anonymous - cpp, 32-bit ELF ten.c etc. Add back cpp.c which is a C pre-processed version of anonymous.c. Added comments and tried to format it some. Perhaps I should use a formatted / de-obfuscator from some years ago in the IOCCC (by Dave Burton) but I didn't think of that until much later on: I'll consider it another time. The Makefile builds cpp by default. Works as well as anonymous.c: will modify 32-bit ELF binaries in the right systems (it won't touch them in macOS - I pre-compiled anonymous.ten.c as 32-bit ELF in linux and added it to the repo as anonymous.ten.32 mostly for those who might be able to run 32-bit ELF binaries but have no way to compile them though maybe no system has that but it also allows for partly 'testing' the program in macOS). Change main target to compile to anonymous and not anonymous_tmp. This is because otherwise running make would repeatedly try and build it. I did try changing the target but that didn't want to work possibly due to the cp updating the timestamp though that's a quick thought in the head of someone who's been awake too long at the hour. Instead anonymous.sh is the script to run to 'emulate' the running of the target program (again assuming that's correct which does seem likely but is still unconfirmed). The anonymous.sh script now checks for compiling anonymous.ten.c but uses anonymous.ten.32 as a backup if it exists. Update bugs.md and README.md. Anything else I'm afraid I've forgotten. --- 2001/anonymous/Makefile | 17 +- 2001/anonymous/README.md | 21 +- 2001/anonymous/anonymous.sh | 2 +- 2001/anonymous/anonymous.ten.32 | Bin 0 -> 23380 bytes 2001/anonymous/cpp.c | 383 ++++++++++++++++++++++++++++++++ 2001/anonymous/try.me.sh | 37 +-- bugs.md | 44 +++- 7 files changed, 464 insertions(+), 40 deletions(-) create mode 100755 2001/anonymous/anonymous.ten.32 create mode 100644 2001/anonymous/cpp.c diff --git a/2001/anonymous/Makefile b/2001/anonymous/Makefile index 69c986db9..0e5c926c4 100644 --- a/2001/anonymous/Makefile +++ b/2001/anonymous/Makefile @@ -117,9 +117,9 @@ PROG= ${ENTRY} # OBJ= ${PROG}.o DATA= -TARGET= ${PROG} ${PROG}.ten +TARGET= ${PROG} cpp ${PROG}.ten # -ALT_OBJ= +ALT_OBJ= ALT_TARGET= @@ -139,8 +139,8 @@ ${PROG}: ${PROG}.c X='-DA(X)=#X'; \ warning='-Dprocessor'; \ $$magic $$warning -Dmagic= $$X "-DX=A($$magic \"$$X\")" \ - $< -o $@_tmp ${LIBS} - ${CP} -af anonymous.sh $@ + $< -o $@ ${LIBS} + ${CHMOD} -v +x anonymous.sh ${PROG}.ten: ${PROG}.ten.c @@ -157,6 +157,15 @@ ${PROG}.ten: ${PROG}.ten.c @echo ${CC} ${CFLAGS} -m32 $< -o $@ ${LIBS} +cpp: cpp.c + magic='${CC} ${CFLAGS}'; \ + X='-DA(X)=#X'; \ + warning='-Dprocessor'; \ + $$magic $$warning -Dmagic= $$X "-DX=A($$magic \"$$X\")" \ + $< -o $@ ${LIBS} + ${CHMOD} -v +x anonymous.sh + + # alternative executable # alt: data ${ALT_TARGET} diff --git a/2001/anonymous/README.md b/2001/anonymous/README.md index 82cec013a..bdf3e43d0 100644 --- a/2001/anonymous/README.md +++ b/2001/anonymous/README.md @@ -16,10 +16,10 @@ make ``` [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed both the -supplementary program and the program itself, both of which segfaulted. He -managed to do this with linux but it will not work with macOS (see -[bugs.md](/bugs.md) for why this is); this is not a bug but a feature inherent -in what it does. +supplementary program and the program itself (but for the program itself see +[bugs.md](/bugs.md), both of which segfaulted. He managed to do this with linux +but it will not work with macOS (see [bugs.md](/bugs.md) for why this is); this +is not a bug but a feature inherent in what it does. Although it took a fair bit of debugging it turns out all that needed to be changed was: @@ -30,8 +30,9 @@ prevented `main()` from entering an infinite loop. Without either of these it would crash and prevent modification of the 32-bit [ELF](https://en.wikipedia.org/wiki/Executable_and_Linkable_Format) (not elf :-) -) binary. The following change was also made to be more portable, in case the -constants `PROT_READ` and/or `PROT_WRITE` are not standardised: +) binary. But again see [bugs.md](/bugs.md) here. The following change was also +made to be more portable, in case the constants `PROT_READ` and/or `PROT_WRITE` +are not standardised: Change `3` in the call to `mmap()` to be `PROT_READ|PROT_WRITE`: just in case `PROT_READ|PROT_WRITE` does not equal 3 (though it seems to be equal in both @@ -60,9 +61,11 @@ The author suggested that this will somewhat destroy the binaries this touches but Cody did not observe this. It does indeed modify the files as the script below will show you (though not all files are modified: can you figure out why that is?) but Cody did not notice any problems in using them. Perhaps it's -something he's not aware of. If you follow the try commands below you will -notice that although the binaries do differ it's not many differences. See the -author's warning about this. +something he's not aware of possibly including the fact that the modification +might or might not be complete. If you follow the try commands below you will +notice that although the binaries do differ it's not many differences and the +output of the supplementary program both before and after is the same. See the +author's warning about this in their remarks. ### INABIAF - it's not a bug it's a feature! :-) diff --git a/2001/anonymous/anonymous.sh b/2001/anonymous/anonymous.sh index 230aa01e2..0b561f61e 100755 --- a/2001/anonymous/anonymous.sh +++ b/2001/anonymous/anonymous.sh @@ -7,7 +7,7 @@ fi make >/dev/null 2>&1 if [[ -f "$1" ]]; then - ./anonymous_tmp "$1" + ./anonymous "$1" ./"$1" fi diff --git a/2001/anonymous/anonymous.ten.32 b/2001/anonymous/anonymous.ten.32 new file mode 100755 index 0000000000000000000000000000000000000000..582ea5ba8cfde4a34a8bcb1528283010bc354210 GIT binary patch literal 23380 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 gjkZ&6)mGfW%(=hqsE4i!507gzS+@&Et; literal 0 HcmV?d00001 diff --git a/2001/anonymous/cpp.c b/2001/anonymous/cpp.c new file mode 100644 index 000000000..9d3b12559 --- /dev/null +++ b/2001/anonymous/cpp.c @@ -0,0 +1,383 @@ +#include +#include +#include +#include +#include + +#define l int* +#define F char + +struct stat t; +#define c return +#define I (P+=4,*L(P-4,0)) +#define G (signed F)E(*L(P++,0)) +#define C(O,D) E (D[B+V(010)/4+O*10]) +#define U R[4]=E(V(17)-4),*(l)V(021)= + +char M [99],Q[99],b[15000],*ss,*d=b, *z; + +#define O =(n=*(l)V(021),R[4]=E(V(17)+4),n) +#define p(a,b,c) system((sprintf(a,b,k[1]),c)),z +#define g (y/010&7) +#define R (B+13) +#define x86 (F*)index(ss+V(i ),0100) + +#define D(y,n,a,m,i,c) d += \ + sprintf(d, \ + y,n,a,m,i,c ), \ + (F* ) P + +int *B,i,n,a,r,y,P ; +V(v){ + return E(B[v]) /* end E() */; +} + + +int *Li(d,r) +{ + return E (3[B+ + V(010) /* end V() */ + /4+r*10] + ) && + E (3 [B+ + V(010) /* end V() in E() */ + /4+r*10]) /* end E() */ + + <=d ? + (int*)(((int)B) + d + + E(4[B+ + V (010) /* end V() in E() */ + /4+r*10]) /* end E() */ - + E (3[B + + V(010) /* end V() in E() */ + /4+r*10]) /* end E() */ + ) : + (((int)B)^d)>>24&&--r? + Li(d,r) /* end Li() */: + (int*)d; +} + +int *L(d, r){ + return r = + V(014 ) /* end V() */& + 63, + Li(d,r) /* end Li() */ + ; +} +int *Runi(d,a) +{ + return (ss = strcmp((char*)B+ + E (4[B+ + V(010)/* end V() *//4+ + (V(12) /* end V() */ + >>16)*10])+ + E(0[B+ + V(010) /* end V() */ + /4+--r*10]), /* end E() */ + ".strtab") /* end strcmp() */ ? + ss:(char*)B+ + E (4[B+ + V(010) /* end V() in E() */ + /4+r*10]) /* end E() */ , + E (1[B+ + V(010) /* end V() in E() */ + /4+r*10]) /* end E() */ - + 2) ? + Runi(d,r) : + 0; +} + +int *Run(d, a) +{ + return r= + V(014 ) /* end V() */ + &63, + Runi(d,a); +} + +Sca() +{ + i=((a-=16)+ + E (4[B + + V (010) /* end V() in E() */ + /4+r*10]) /* end E() */ + + )/4, + (V(-~i) /* end V() */ + -P+2 ? + Sca() : + 0 + ); + +} +Scan() +{ + a= + E(5[B+ + V(010) /* end V() */ + /4+r*10]) /* end E() */ + , Sca(); +} +ru() +{ + i=((a-=16)+ + E(4[B+ + V(010) /* end V() */ / + 4+r*10]) /* end E() */ + )/4, + (strcmp(ss + + V(i), + "main") /* end strcmp() */ ? + ru() : + 0) + ; +} + +run(){ + a= + E(5[B + + V(010) /* end V() in E() */ + /4+r*10]) /* end E() */, + ru(); +} +E(DX) +{ + return *z /* z at this point appeared to be '\002' if I (Cody) recalls correctly */ ? + DX : DX <<030 | + (DX&65280)<<010 | + DX>>8 & 65280 | + DX>>24&0377; +} + +int* K(k) +{ + return L( + E( + k [ + (int*)V(17) /* end V() in E() in L() */ + ]) /* end E() in L() */ , + 0) /* end L() */; +} + + +int +pain(char *ck, char **k) +{ +return (z ? + (stat(M,&t) ? + P+= a+'{' ? + 0 : 3 + : execv(M,k), /* note: M appears to be empty here but this used to be recursive main() + so M might have been modified on additional calls */ + a=(signed char) E(*L(P++,0)), + i=P, + y=(signed char)E(*L(P++,0)) + &255, + sprintf(Q, + y/'@'-3?"*L(V(%d+%d)+%d,0)":"R[%d]", + (y&7),'\r', + y/0100-1 ? + 0 + : + (signed char)E(*L(P++,0)) + ), /* ends sprintf() on line 175 */ + (a+127&&a+'}' && + a+1 ? + (a+61 && + a+24 && + a + 025 ? + (P = a+'H' && + a%061 + <=0 ? + P + : + i, + d+= + sprintf(d, + a>0? + " R[%d]=E(~-E(R[%d])),\0 U R[%d],\0 R[%d] O,\0 U %d,\0R[%d]=0," + +(a&'8') + *3 + :a <- 'c' + ? + " %d, %c%s = R[%d], \0 %d, *R=%c%s==R[%d], \0 R[%d]=(int)%c%s," - + a%'w' + %'j' + *5 + : + "%d,%d,%s=%d,", + a>0 ? + a-'h' + ? + a-49 + ?a&7 + : + (y/010&7) + : + (P+=4, + *L(P-4,0) + ) + : + (y/010&7), + a>0 ? a&7 + : + "& "[a%3%2+1], + a+72 ? + Q:"*R", + a>0|a<-99? + (y/010&7) + : + (P+=4, + *L (P-4,0) + ), + 0 ) /* end sprintf on line 195 */ + ,(char* ) P) + : + (P=i,i=a+61 ? + a+21 + ?E((P+=4,*L(P-4,0))) + : + (signed char)E(*L(P++,0)) + :0, + d+=sprintf( d, + a%' '+ + 29+ + "P O,\0 U %d,P=%d,", + P, + P+i, + 0, + 0, + 0 ), /* ends sprintf() on 242 */ + (char* ) P, + system( + (sprintf(d,"A'",k[1]), + b) /* sprintf IN system() on line 252 (above line) */ + ) /* ends system on 252 */ + ,z)): + (n= + (y/010&7) + -4 + ? + (y/010&7) + %5-1 + ? + a+127 + ? (signed char)E( + *L(P++,0) + ) + :(P+=4, + *L(P-4,0) + ) : + 0 + : + (Scan(), + *( (char*)index(ss+ + V(i ), /* V(i ) in index from line 274 */ + 0100)/*ends index() on line 274 */ + ?(char*)index(ss + + V(i ), /* V(i) in index() on line 277 */ + 0100) + : + d) + =0, + (int)(ss+ + V(i) + )), + (y/010&7) %5 + <2? + d+=sprintf( d, + (y/010&7)%5 + ?" %s=E(~-E(%s)), \0 U %s," + +4*(y/010&7) + : + "%s=E(E(%s)%c%d),", + Q, + Q, + "+ - "[(y/010&7)], + n, + 0 ) /* ends sprintf() on line 288 */ + ,(char* ) P + : + (a=(signed char) E( + *L(P++,0) /* *L() in E() from line 301 */ + ) /* ends E() on line * 301 */ + -'u' + ? + '!' + :'=', + d+=sprintf(d, + (y/010&7) + -4 + ?"P=%d%c=%s?%d:%d," + : "*R=E(((int(*)(l,l,l))%s)(K(1),K(2),K(3))),P O,", + n, + a, + Q, + P, + P+(signed char)E ( + *L(P++,0) /* *L() in E() in sprintf() from line 308 */ + ) + ) /* ends sprintf() on line 308 */ + + ,(char* ) P, + system( + (sprintf(d,"A'",k[1]), /* ends sprintf() in system() on line 323 */ + b)) /* ends system() on line 323 but appears that b is what's system()d */ + ,z) + ) + ) + ) + : + (Run( + (z=(char*)&ck, + stat(k[1],&t), /* stat() in Run() on line 331 */ + B = + (l)mmap(0,i=t.st_size,PROT_READ|PROT_WRITE,1, + open(k[1],2),0) /* open() in mmap() (line 325) in Run() (line 331 */ + ) + ), /* ends Run() on line 331 */ + (((B+13)[4] + = + E(B+i/4), + run(), + P = V(-~i), + (B+13)[4] = + E( + V(17)- /* V() in E() on line 345 */ + 4),*(int*)V(021))), /* second V() in E() on line 345 */ + sprintf(M, + ".%s%d",k[1],P), /* ends sprintf() on line 348 */ + d+=sprintf( d, + "%s %s '-DX=A(%s)' -o %s '-Dmagic=", + "cpp -std=gnu99 -Wall -Wextra -pedantic -Winfinite-recursion -Wno-bitwise-conditional-parentheses -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int -Wno-int-to-pointer-cast -Wno-macro-redefined -Wno-pedantic -Wno-pointer-to-int-cast -Wno-return-type -Wno-string-plus-int -Wno-bitwise-op-parentheses -Wno-format -Wno-format-extra-args -Wno-int-conversion -Wno-unused-parameter -Wno-unsequenced -E \"-DA(X)=#X\"", /* end first string in sprintf() %s from line 350 */ + + "anonymous.c", /* second string in sprintf() on line 350. + note it appears to run the above cpp on anonymous.c ? */ + "cpp -std=gnu99 -Wall -Wextra -pedantic -Winfinite-recursion -Wno-bitwise-conditional-parentheses -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int -Wno-int-to-pointer-cast -Wno-macro-redefined -Wno-pedantic -Wno-pointer-to-int-cast -Wno-return-type -Wno-string-plus-int -Wno-bitwise-op-parentheses -Wno-format -Wno-format-extra-args -Wno-int-conversion -Wno-unused-parameter -Wno-unsequenced -E \"-DA(X)=#X\"", + /* above line is third string in sprintf() on line 350 */ + M, /* fourth string in sprintf() on 350, possibly running cpp from above line on M */ + fflush(0) ), /* end sprintf() on line 350 */ + (char* ) P) /* ends Run() on line 331 */ + ); + +} +int +main (int cka, char **k) +{ + char *ck = (char *)cka; + + /* main calls exit() which calls E() which has a call to pain() if + ck ((char *)cka - was originally a char * as first arg to main()) with + second arg being argv or k. Otherwise it calls system() with a convoluted sprintf() */ + exit (E( + (ck?pain((char*)cka,k): /* if ck ((char *)argc which used to be a char *) run pain() which used to be main() */ + system( /* otherwise if !ck call system() with ... */ + (sprintf(M,"rm -f .%s*",k[1]),M) /* sprintf() writing to M a convoluted string including itself (which + iirc is undefined but perhaps it's my tiredness: I can't think of what + the '*' does in sprintf()) */ + ), /* ends system() from line 374 */ + z,*(B+13))) /* end E() which calls either pain() or system() (which calls sprintf() on M) from line 372 from exit() on line 372 */ + + ); + +} /* end main() */ diff --git a/2001/anonymous/try.me.sh b/2001/anonymous/try.me.sh index 8d85c58e0..f1d33879a 100755 --- a/2001/anonymous/try.me.sh +++ b/2001/anonymous/try.me.sh @@ -2,30 +2,37 @@ make clobber all >/dev/null 2>&1 -if [[ -f "anonymous.ten" ]]; then - make anonymous 2>/dev/null - echo "$ cp anonymous.ten anonymous.ten.bak" 1>&2 - cp anonymous.ten anonymous.ten.bak - echo "$ ./anonymous anonymous.ten" 1>&2 - ./anonymous anonymous.ten - echo "$ ./anonymous.ten" 1>&2 - ./anonymous.ten - echo "$ diff -s anonymous.ten anonymous.ten.bak" 1>&2 - diff -s anonymous.ten anonymous.ten.bak - echo "$ od -t x1 anonymous.ten > ten.od" 1>&2 - od -t x1 anonymous.ten > ten.od +TARGET="anonymous.ten" + +if [[ ! -f "$TARGET" ]]; then + TARGET="anonymous.ten.32" + echo "cannot compile anonymous.ten.c as 32-BIT, trying anonymous.ten.32 as backup" + echo "if your system cannot run 32-bit ELF binaries this might fail" +fi + +if [[ -f "$TARGET" ]]; then + echo "$ cp $TARGET anonymous.ten.bak" 1>&2 + cp "$TARGET" anonymous.ten.bak + echo "$ ./anonymous $TARGET" 1>&2 + ./anonymous.sh "$TARGET" + echo "$ ./$TARGET" 1>&2 + ./"$TARGET" + echo "$ diff -s $TARGET anonymous.ten.bak" 1>&2 + diff -s "$TARGET" anonymous.ten.bak + echo "$ od -t x1 $TARGET > ten.od" 1>&2 + od -t x1 "$TARGET" > ten.od echo "$ od -t x1 anonymous.ten.bak > ten.bak.od" 1>&2 od -t x1 anonymous.ten.bak > ten.bak.od echo "$ diff ten.bak.od ten.od" 1>&2 diff ten.bak.od ten.od - echo "$ ./anonymous.ten > ten.txt" 1>&2 - ./anonymous.ten > ten.txt + echo "$ ./$TARGET > ten.txt" 1>&2 + ./"$TARGET" > ten.txt echo "$ ./anonymous.ten.bak > ten.bak.txt" 1>&2 ./anonymous.ten.bak > ten.bak.txt echo "$ diff -s ten.txt ten.bak.txt" 1>&2 diff -s ten.txt ten.bak.txt else - echo "cannot compile anonymous.ten.c as 32-bit, sorry." + echo "cannot compile anonymous.ten.c as 32-bit and backup file does not exist, sorry." exit 1 fi diff --git a/bugs.md b/bugs.md index 039bf54c3..e4c50d742 100644 --- a/bugs.md +++ b/bugs.md @@ -1114,24 +1114,46 @@ modifies the program, only works on 32-bit ELF binaries (by design) and the binary still works but we do not know if it's supposed _additionally_ run it. Can you confirm? Please let us know! - ## STATUS: INABIAF - please **DO NOT** fix [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this so that it -works (it segfaulted - but see above) in modern systems but he notes that the -program [anonymous.ten.c](2001/anonymous/anonymous.ten.c) **MUST** be compiled -as a 32-bit ELF binary! This is because the program only works on 32-bit ELF -binaries. If you cannot use `-m32` on the files it acts on the program **will** -almost certainly crash but in no case will it work properly. +doesn't segfault and so that it at least _does_ modify the target executable (but see +below) but he's not sure if it's _also_ supposed to run the program; upon a second +look at the README.md file it _appears_ that it's supposed to but the binary at least +is modified (hopefully in the correct way that the entry is supposed to do but +this cannot be confirmed), at least if 32-bit ELF (that's the only file type +it's supposed to modify). -This means that for macOS it will not work. Why will this not work in macOS? -Because Apple saw to it to make it very hard to compile 32-bit binaries (thanks -Apple for ruining some IOCCC entries! :-) :-( ). This appears to be even harder -with the Apple silicon chip. Thus this entry will not work with macOS unless you -have an older, out of date version. +The [anonymous.sh](2001/anonymous.sh) script, run by +[2001/anonymous/try.me.sh](2001/anonymous/try.me.sh), is for now a workaround +(until it can be ascertained - and addressed if necessary and possible - if the +program is supposed to run the target executable or not); the script runs the +program on the target executable and then runs the target executable after +modification which in effect emulates the original program (if indeed it did run +the executable as seems likely). + +So again this might be only partially resolved but for now this is unknown. + +Cody also fixed the [anonymous.ten.c](2001/anonymous/anonymous.ten.c) program +(it also segfaulted) but notes that it **MUST** be compiled as a **32-bit ELF +binary** so it will NOT work in macOS (for example); if you cannot use `-m32` or +even if you can but it cannot compile as an ELF binary (not elf binary :-) ) +(but see below) then the `anonymous` program itself will very likely crash if +you run it on the compiled [anonymous.ten.c](2001/anonymous/anonymous.ten.c) but +if nothing else it will not modify the target executable (this part of the fix +at least should be correct). + +In fact if you run the program on a 32-bit ELF binary (say compiled from another +system) under macOS it won't even touch it (it shouldn't crash however). + +The file `2001/anonymous/anonymous.ten.32` is a pre-compiled +[2001/anonymous.ten.c](2001/anonymous.ten.c) as a 32-bit ELF binary in case you +can run ELF binaries but cannot compile 32-bit binaries. Other BSD Unices were not tested. +BTW: if something is _partially_ resolved is it impartial ? :-) + ## [2001/bellard](2001/bellard/bellard.c) ([README.md](2001/bellard/README.md)) ## STATUS: doesn't work with some platforms - please help us fix From c6ef44271a0feba55a4afd5f748d36965b7c76c4 Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Fri, 19 May 2023 04:30:25 -0700 Subject: [PATCH 3/8] Fix winners.sql, remove prizes.sql The fixes to winners.sql will be important for the soon (it is to be hoped as I know how to do it now) to be completed author-wins.csv file. It is the next thing I plan to work on hopefully later today. The prizes.sql in additional to also having mistakes is not needed so it's been deleted. --- tmp/sql/prizes.sql | 330 -------------------------------------------- tmp/sql/winners.sql | 3 +- 2 files changed, 1 insertion(+), 332 deletions(-) delete mode 100644 tmp/sql/prizes.sql diff --git a/tmp/sql/prizes.sql b/tmp/sql/prizes.sql deleted file mode 100644 index 2b23acc77..000000000 --- a/tmp/sql/prizes.sql +++ /dev/null @@ -1,330 +0,0 @@ -CREATE TABLE prizes ( - prize_tag TEXT, - year INT, - dorder INT, - prize_name TEXT, - location TEXT, - spoiler TEXT, - judges_comments TEXT -); -INSERT INTO prizes VALUES('2000_anderson',2000,1,'Best Use of Flags','2000/anderson.c','ASCII to semaphore code convertor',NULL); -INSERT INTO prizes VALUES('1984_anonymous',1984,2,'Dishonorable mention','1984/anonymous.c','prints hello world, where read is write',NULL); -INSERT INTO prizes VALUES('2004_anonymous',2004,3,'Best use of "Precious" Lines','2004/anonymous.c','Rendering of a stroked font',NULL); -INSERT INTO prizes VALUES('1991_davidguy',1991,4,'Best X11 Graphics','1991/davidguy.c','plays life on a root window, doesn''t need Xlib or include files',NULL); -INSERT INTO prizes VALUES('1986_applin',1986,5,'Most adaptable program','1986/applin/applin.c','hello world works under cc, /bin/sh, and f77',NULL); -INSERT INTO prizes VALUES('1988_applin',1988,6,'Best of show','1988/applin.c','massive #define stuff, includes itself; prints table of primes',NULL); -INSERT INTO prizes VALUES('1989_jar.1',1989,7,'Strangest abuse of the rules','1989/jar.1.c','char*_="Hello world.\n";',NULL); -INSERT INTO prizes VALUES('1985_august',1985,8,'Most obscure program','1985/august/august.c','cpp obfuscated, compressed, main-recursive primes in binary',NULL); -INSERT INTO prizes VALUES('1986_august',1986,9,'Best complex task done in a complex way','1986/august/august.c','struct-heavy e-computation, memory allocation with sbrk',NULL); -INSERT INTO prizes VALUES('1996_august',1996,10,'Best of Show','1996/august.c','Subset of C compiler and byte code interpreter',NULL); -INSERT INTO prizes VALUES('1998_banks',1998,11,'Best of Show','1998/banks.c','A flight simulator!',NULL); -INSERT INTO prizes VALUES('2001_anonymous',2001,12,'Dishonorable mention','2001/anonymous.c','optimizing dynamic binary translator, x86 progs on any host',NULL); -INSERT INTO prizes VALUES('2004_gavin',2004,13,'Best of Show','2004/gavin.c','Mini-OS',NULL); -INSERT INTO prizes VALUES('1991_buzzard',1991,14,'Best Output','1991/buzzard.c','walk thru a maze from a first person point of view',NULL); -INSERT INTO prizes VALUES('1992_buzzard.1',1992,15,'Most Obfuscated Algorithm','1992/buzzard.1.c','print factorial, gcd or prime test using a Babbage-like engine',NULL); -INSERT INTO prizes VALUES('1992_buzzard.2',1992,16,'Best Language Tool','1992/buzzard.2.c','forth-like stack machine',NULL); -INSERT INTO prizes VALUES('2001_dgbeards',2001,17,'Best AI','2001/dgbeards.c','Plays suicide chess',NULL); -INSERT INTO prizes VALUES('2000_bellard',2000,18,'Most Specific Output','2000/bellard.c','Prints M6972593 (2^6972593-1) by Modular Fast Fourier Transform',NULL); -INSERT INTO prizes VALUES('2001_bellard',2001,19,'Best abuse of the rules','2001/bellard.c','A C subset programming system for x86',NULL); -INSERT INTO prizes VALUES('1993_ejb',1993,20,'Best Obfuscated Algorithm','1993/ejb.c','tower of Hanoi and patience pizzle',NULL); -INSERT INTO prizes VALUES('1991_brnstnd',1991,21,'Best Of Show','1991/brnstnd.c','sorta stack language',NULL); -INSERT INTO prizes VALUES('1987_biggar',1987,22,'Best Abuse of the Rules','1987/biggar/biggar.c','program: "P;" defined on command line',NULL); -INSERT INTO prizes VALUES('1989_paul',1989,23,'Most complex algorithm','1989/paul.c','print fibonacci base 2 by simulating turing machine',NULL); -INSERT INTO prizes VALUES('1991_rince',1991,24,'Best Game','1991/rince.c','game with sprites, boulders, dimonds, and keys',NULL); -INSERT INTO prizes VALUES('1993_rince',1993,25,'Most Well Rounded','1993/rince.c','game state machine language, comes with a number of games',NULL); -INSERT INTO prizes VALUES('2000_rince',2000,26,'Astronomically Obfuscated','2000/rince.c','Plots the positions of the four Galilean moons of Jupiter',NULL); -INSERT INTO prizes VALUES('1986_bright',1986,27,'Most useful obfuscation','1986/bright/bright.c','hex dump, cpp compressed, uses lost of << for constants',NULL); -INSERT INTO prizes VALUES('1993_leo',1993,28,'Best Game','1993/leo.c','game of mastermind (cows & bulls)',NULL); -INSERT INTO prizes VALUES('1995_leo',1995,29,'Best Use of Obfuscation','1995/leo.c','Output interesting patterns and cycles in PostScript',NULL); -INSERT INTO prizes VALUES('1994_ldb',1994,30,'Best One-liner','1994/ldb.c','print a random line from stdin',NULL); -INSERT INTO prizes VALUES('2004_burley',2004,31,'Best Calculated Risk','2004/burley.c','A Poker game',NULL); -INSERT INTO prizes VALUES('2000_primenum',2000,32,'Best Abuse of CPP','2000/primenum.c','Source with English words that looks like a prime tester',NULL); -INSERT INTO prizes VALUES('2001_cheong',2001,33,'Best short program','2001/cheong.c','Computes arbitrary-precision square root',NULL); -INSERT INTO prizes VALUES('1992_imc',1992,34,'Best Output','1992/imc.c','Mandelbrot/Julia drawer',NULL); -INSERT INTO prizes VALUES('1994_imc',1994,35,'Most Obfuscated Algorithm','1994/imc.c','print a random n by n magic square',NULL); -INSERT INTO prizes VALUES('2001_coupard',2001,36,'Most obfuscated sound','2001/coupard.c','Outputs current time as a sound file',NULL); -INSERT INTO prizes VALUES('1996_dalbec',1996,37,'Best Numerical Obfuscation','1996/dalbec.c','Generator of strong probable-primes to a given base',NULL); -INSERT INTO prizes VALUES('2004_jdalbec',2004,38,'Best Abuse of the Periodic Table','2004/jdalbec.c','Conway''s look''n''say sequence split into elements',NULL); -INSERT INTO prizes VALUES('1988_dale',1988,39,'Best abuse of system calls','1988/dale.c','prints command line, using lots of system calls',NULL); -INSERT INTO prizes VALUES('1998_bas1',1998,40,'Best Encapsulation','1998/bas1.c','Outputs a gziped 3D beam maze in Postscript',NULL); -INSERT INTO prizes VALUES('1998_bas2',1998,41,'Best Small Program','1998/bas2.c','determines the size of stdin under IOCCC sizing rules',NULL); -INSERT INTO prizes VALUES('1998_chaos',1998,42,'Best Object Orientation','1998/chaos.c','Rotates and zooms an object using ASCII graphics',NULL); -INSERT INTO prizes VALUES('1984_decot',1984,43,'Second place','1984/decot.c','prints garbage, weird cpp defines (keywords for others)',NULL); -INSERT INTO prizes VALUES('1995_esde',1995,44,'Interesting Algorithm','1995/esde.c','Searches for words in a file which have the same Soundex code',NULL); -INSERT INTO prizes VALUES('1994_dodsond1',1994,45,'Best Game','1994/dodsond1.c','plays a game of othello',NULL); -INSERT INTO prizes VALUES('1994_dodsond2',1994,46,'Most Obfuscated Packaging','1994/dodsond2.c','Hunt the Wumpus (gziped source)',NULL); -INSERT INTO prizes VALUES('1995_dodsond1',1995,47,'Most Humorous','1995/dodsond1.c','Text to "Pig Latin" translator',NULL); -INSERT INTO prizes VALUES('1995_dodsond2',1995,48,'Best Game','1995/dodsond2.c','Interactive 3D Maze',NULL); -INSERT INTO prizes VALUES('1995_heathbar',1995,49,'Best Layout','1995/heathbar.c','16 bit addition the easy/hard way',NULL); -INSERT INTO prizes VALUES('1995_cdua',1995,50,'Best Output','1995/cdua.c','Generate a maze on the scren and then solve it',NULL); -INSERT INTO prizes VALUES('1991_cdupont',1991,51,'Most Useful Label','1991/cdupont.c','prints a message without vowels',NULL); -INSERT INTO prizes VALUES('1996_eldby',1996,52,'Best Output','1996/eldby.c','Flying 3D spheres in an ASCII display',NULL); -INSERT INTO prizes VALUES('1998_fanf',1998,53,'Most Obfuscated Translator','1998/fanf.c','Translates Lambda expressions into combinator expressions',NULL); -INSERT INTO prizes VALUES('1991_fine',1991,54,'Best One Liner','1991/fine.c','rot13s lines of input',NULL); -INSERT INTO prizes VALUES('1998_df',1998,55,'Best Data Hiding','1998/df.c','A word guessing game',NULL); -INSERT INTO prizes VALUES('2000_thadgavin',2000,56,'Most Portable Output','2000/thadgavin.c','Prints a dazzeling moving image under multiple interfaces',NULL); -INSERT INTO prizes VALUES('2004_gavare',2004,57,'Best use of Light and Spheres','2004/gavare.c','A ray tracer',NULL); -INSERT INTO prizes VALUES('1993_dgibson',1993,58,'Best Abuse of the C Preprocessor','1993/dgibson.c','plays the game of like using cpp',NULL); -INSERT INTO prizes VALUES('1995_garry',1995,59,'Best Utility','1995/garry.c','Environment-expansion and binary output via escaped env vars',NULL); -INSERT INTO prizes VALUES('1990_dg',1990,60,'Best Abuse of the C Preprocessor','1990/dg.c','rot13 done with strange cpp macros',NULL); -INSERT INTO prizes VALUES('1992_gson',1992,61,'Most Humorous Output','1992/gson.c','anagram generator',NULL); -INSERT INTO prizes VALUES('1986_hague',1986,62,'Worst abuse of the C preprocessor','1986/hague/hague.c','morse code filter written with ''DIT DAH _DIT DIT_DAH''',NULL); -INSERT INTO prizes VALUES('1987_heckbert',1987,63,'Best Obfuscator of Programs','1987/heckbert/heckbert.c','obfuscated fold program',NULL); -INSERT INTO prizes VALUES('1985_applin',1985,64,'Best one liner','1985/applin/applin.c','one-liner to print hello world, with execlp',NULL); -INSERT INTO prizes VALUES('1990_stig',1990,65,'Strangest Abuse of the Rules','1990/stig.c','nested-comment tester (all on command line)',NULL); -INSERT INTO prizes VALUES('2001_herrmann1',2001,66,'Best abuse of the C preprocessor','2001/herrmann1.c','A Turing machine using preprocessor',NULL); -INSERT INTO prizes VALUES('2001_herrmann2',2001,67,'Most eye-crossing','2001/herrmann2.c','A SIRDS/3D generator, the source is SIRDS/3D itself',NULL); -INSERT INTO prizes VALUES('1987_hines',1987,68,'Worst Style','1987/hines/hines.c','counts goto''s, all ids anagrams of ''goto'', all flow w goto',NULL); -INSERT INTO prizes VALUES('1986_holloway',1986,69,'Best simple task performed in a complex way','1986/holloway/holloway.c','prints hello world! via a recursive main',NULL); -INSERT INTO prizes VALUES('1993_lmfjyh',1993,70,'Most Versatile Source','1993/lmfjyh.c','source is the filename, prints value of __FILE__',NULL); -INSERT INTO prizes VALUES('2000_jarijyrki',2000,71,'Best of show','2000/jarijyrki.c','An X-based spreadsheet program with graphing features!',NULL); -INSERT INTO prizes VALUES('1994_horton',1994,72,'Best Utility','1994/horton.c','Plot cubic equations on a tty',NULL); -INSERT INTO prizes VALUES('1991_ant',1991,73,'Best Utility','1991/ant.c','compressed vi-like editor',NULL); -INSERT INTO prizes VALUES('1992_ant',1992,74,'Best Utility','1992/ant.c','make utility',NULL); -INSERT INTO prizes VALUES('1993_ant',1993,75,'Best Utility','1993/ant.c','egrep utility with Posix-like documentation',NULL); -INSERT INTO prizes VALUES('2004_hibachi',2004,76,'Best Abuse of the Guidelines','2004/hibachi.tar.gz','A CGI capable HTTP server',NULL); -INSERT INTO prizes VALUES('2004_hoyle',2004,77,'Most Functional Output','2004/hoyle.c','Curses based polynomial graphing with auto-scale',NULL); -INSERT INTO prizes VALUES('1996_huffman',1996,78,'Best Obfuscated Character Set Utility','1996/huffman.c','Braille to ASCII and vice versa',NULL); -INSERT INTO prizes VALUES('1988_isaak',1988,79,'Best visuals','1988/isaak.c','table driven table of the elements; cpp, self-inclusion',NULL); -INSERT INTO prizes VALUES('2000_tomx',2000,80,'Most Complete Program','2000/tomx.c','C source, shell program and Makefile',NULL); -INSERT INTO prizes VALUES('2004_arachnid',2004,81,'Best use of Vision','2004/arachnid.c','Curses maze displayer/navigator with only line-of-sight visibility',NULL); -INSERT INTO prizes VALUES('1990_scjones',1990,82,'ANSI Committee''s Worst Abuse of C','1990/scjones.c','trigraph-abusing self-reproducing program',NULL); -INSERT INTO prizes VALUES('2001_ctk',2001,83,'Worst Driver','2001/ctk.c','A driver game',NULL); -INSERT INTO prizes VALUES('1992_kivinen',1992,84,'Best X Program','1992/kivinen.c','X11 space invaders, dropout and knockout games',NULL); -INSERT INTO prizes VALUES('2004_kopczynski',2004,85,'Best One-Liner','2004/kopczynski.c','OCR of 8, 9, 10 and 11',NULL); -INSERT INTO prizes VALUES('1987_korn',1987,86,'Best One Liner','1987/korn/korn.c','one-liner that prints a message on a Un*x system',NULL); -INSERT INTO prizes VALUES('1984_laman',1984,87,'Third place','1984/laman.c','prints spiralling numbers, laid out in columns',NULL); -INSERT INTO prizes VALUES('1987_lievaart',1987,88,'Grand Prize','1987/lievaart/lievaart.c','very good othello player',NULL); -INSERT INTO prizes VALUES('1989_roemer',1989,89,'Best layout','1989/roemer.c','prints e, script-pi shaped layout, _31415 identifiers',NULL); -INSERT INTO prizes VALUES('1988_litmaath',1988,90,'Best small program','1988/litmaath.c','sorts each arg using only argc, argv, and ''while();''',NULL); -INSERT INTO prizes VALUES('1998_dlowe',1998,91,'Best Utility','1998/dlowe.c','Pootifies stdin (useful to view Microsoft html files)',NULL); -INSERT INTO prizes VALUES('2000_dlowe',2000,92,'Worst Abuse of the Rules','2000/dlowe.c','A dc-style calculator that uses embedded Perl',NULL); -INSERT INTO prizes VALUES('1992_lush',1992,93,'Worst Abuse of the C Preprocessor','1992/lush.c','prints "Hello, World" using error messages',NULL); -INSERT INTO prizes VALUES('1985_lycklama',1985,94,'Strangest appearing program','1985/lycklama/lycklama.c','heavily cpped with o_oo identifiers, scrolls text right',NULL); -INSERT INTO prizes VALUES('1995_makarios',1995,95,'Best Short Program','1995/makarios.c','Emits the base 8 representation of prime palindromic in base 8',NULL); -INSERT INTO prizes VALUES('1992_marangon',1992,96,'Best Game','1992/marangon.c','game to balance a grid of digits to all 5''s',NULL); -INSERT INTO prizes VALUES('1990_theorem',1990,97,'Best of Show','1990/theorem.c','numerically solves the equation y''=f(x,y)',NULL); -INSERT INTO prizes VALUES('1992_adrian',1992,98,'Most Educational','1992/adrian.c','grep-like utility using a state machine transition language',NULL); -INSERT INTO prizes VALUES('1986_marshall',1986,99,'Best layout','1986/marshall/marshall.c','train engine-shaped program prints "choo choo"',NULL); -INSERT INTO prizes VALUES('1996_rcm',1996,100,'Best RFC Obfuscation','1996/rcm.c','Gunzip equivalent',NULL); -INSERT INTO prizes VALUES('2000_bmeyer',2000,101,'Best Utility','2000/bmeyer.c','An image compressor',NULL); -INSERT INTO prizes VALUES('1990_cmills',1990,102,'Best Game','1990/cmills.c','squished blackjack game',NULL); -INSERT INTO prizes VALUES('1993_cmills',1993,103,'"Bill Gates" Award','1993/cmills.c','X11 program that shatters and bounces windows',NULL); -INSERT INTO prizes VALUES('1998_dloweneil',1998,104,'Most Fun','1998/dloweneil.c','A very addictive ASCII poot game',NULL); -INSERT INTO prizes VALUES('2004_newbern',2004,105,'Best Font Engine','2004/newbern.c','Renders arbitary bitmapped fonts',NULL); -INSERT INTO prizes VALUES('1989_jar.2',1989,106,'Best of show','1989/jar.2.c','lisp interpreter, compressed',NULL); -INSERT INTO prizes VALUES('2001_ollinger',2001,107,'Best Of Show','2001/ollinger.c','Prints primes with a sieve graph',NULL); -INSERT INTO prizes VALUES('2001_jason',2001,108,'Best Of Show','2001/jason.c','An Adventure-like game',NULL); -INSERT INTO prizes VALUES('1990_baruch',1990,109,'Best Small Program','1990/baruch.c','short prog to solve N-queens problem',NULL); -INSERT INTO prizes VALUES('1986_pawka',1986,110,'Most illegible code','1986/pawka/pawka.c','prints ''obfuscated?'' big, uses xyyyx idents...',NULL); -INSERT INTO prizes VALUES('1992_vern',1992,111,'Best of Show','1992/vern.c','plays chess',NULL); -INSERT INTO prizes VALUES('1988_phillipps',1988,112,'Least likely to compile successfully','1988/phillipps.c','''first day of christmas'', tables, heavily main() calling',NULL); -INSERT INTO prizes VALUES('1993_plummer',1993,113,'Best One Liner','1993/plummer.c','prints numbers up to a given value',NULL); -INSERT INTO prizes VALUES('2001_kev',2001,114,'Best Curses Game','2001/kev.c','A Pong game across network',NULL); -INSERT INTO prizes VALUES('1990_tbr',1990,115,'Best Utility','1990/tbr.c','simple compressed shell, silly layout',NULL); -INSERT INTO prizes VALUES('1994_tvr',1994,116,'Best X11 Program','1994/tvr.c','interactive fractals for the X Window System',NULL); -INSERT INTO prizes VALUES('1988_reddy',1988,117,'Most useful Obfuscated C program','1988/reddy.c','prints name of ''char *(*(foo[16])();'', compressed',NULL); -INSERT INTO prizes VALUES('1988_robison',1988,118,'Best abuse of C constructs','1988/robison.c','print e in any base, uses only --, >=, and while()',NULL); -INSERT INTO prizes VALUES('1989_robison',1989,119,'Best minimal use of C','1989/robison.c','apl-expression interpreter (binary), written in C--',NULL); -INSERT INTO prizes VALUES('2000_robison',2000,120,'Best game','2000/robison.c','Highly Compressed Program for Playing Hygienic Checkers',NULL); -INSERT INTO prizes VALUES('2001_rosten',2001,121,'Best abuse of the user','2001/rosten.c','Makes X mouse pointer have inertia or anti-inertia',NULL); -INSERT INTO prizes VALUES('1990_pjr',1990,122,'Most Unusual Data Structure','1990/pjr.c','the quick brown fox... cppd, structs of functions',NULL); -INSERT INTO prizes VALUES('1994_smr',1994,123,'Worst Abuse of the Rules','1994/smr.c','world''s smallest self reproducing program',NULL); -INSERT INTO prizes VALUES('1995_savastio',1995,124,'Most Obfuscated Syntax','1995/savastio.c','Infinite-precision factorial calculator',NULL); -INSERT INTO prizes VALUES('2000_schneiderwent',2000,125,'Most Timely Output','2000/schneiderwent.c','Prints the aproximate time in words',NULL); -INSERT INTO prizes VALUES('1993_schnitzi',1993,126,'Obfuscated Intelligence Award','1993/schnitzi.c','answers questions about English text in a file',NULL); -INSERT INTO prizes VALUES('1994_schnitzi',1994,127,'Best Layout','1994/schnitzi.c','flips stdin along a diagonal (source mirrored along diagonal)',NULL); -INSERT INTO prizes VALUES('1995_schnitzi',1995,128,'Best One Liner','1995/schnitzi.c','Find divisors: where a core dump is a feature, not a bug',NULL); -INSERT INTO prizes VALUES('1998_schnitzi',1998,129,'Best Flow Control','1998/schnitzi.c','Prints a C program that sorts arguments using strange functions',NULL); -INSERT INTO prizes VALUES('2004_schnitzi',2004,130,'Best Non-Use of Curses','2004/schnitzi.c','Editor animation',NULL); -INSERT INTO prizes VALUES('1996_schweikh1',1996,131,'Worst Abuse of the C Preprocessor','1996/schweikh1.c','Calculates Easter dates from 1582 to 2199 AD',NULL); -INSERT INTO prizes VALUES('1996_schweikh2',1996,132,'Best Algorithm','1996/schweikh2.c','Search for a limited class of expressions that equal a constant',NULL); -INSERT INTO prizes VALUES('1996_schweikh3',1996,133,'Best Utility','1996/schweikh3.c','Determins the memory allocation honesty of the OS',NULL); -INSERT INTO prizes VALUES('1998_schweikh1',1998,134,'CPP Abuse','1998/schweikh1.c','Tests to see if your compiler and headers are standard',NULL); -INSERT INTO prizes VALUES('1998_schweikh2',1998,135,'Most Erratic Behavior','1998/schweikh2.c','Prints random 0''s and 1''s; causes some gcc''s as passes to choke',NULL); -INSERT INTO prizes VALUES('1998_schweikh3',1998,136,'Most Space Efficient','1998/schweikh3.c','Finds duplicate files that waste disk space',NULL); -INSERT INTO prizes VALUES('2001_schweikh',2001,137,'Best one-liner','2001/schweikh.c','Shell glob matcher',NULL); -INSERT INTO prizes VALUES('1994_shapiro',1994,138,'Most Well Rounded Obfuscation','1994/shapiro.c','print time of day on an tty',NULL); -INSERT INTO prizes VALUES('1985_shapiro',1985,139,'Grand prize for most well-rounded in confusion','1985/shapiro/shapiro.c','two defines, one 7-liner, results in a maze',NULL); -INSERT INTO prizes VALUES('2000_natori',2000,140,'Best Small Program','2000/natori.c','Phase of the moon',NULL); -INSERT INTO prizes VALUES('1985_sicherman',1985,141,'Worst abuse of the C preprocessor','1985/sicherman/sicherman.c','rot13 with strange #defs that create comment headers etc.',NULL); -INSERT INTO prizes VALUES('1992_nathan',1992,142,'Worst Abuse of the Rules','1992/nathan.c','obfuscation by (trivial) encryption (source not exported)',NULL); -INSERT INTO prizes VALUES('1988_spinellis',1988,143,'Best abuse of the rules','1988/spinellis.c','#include "/dev/tty"',NULL); -INSERT INTO prizes VALUES('1990_dds',1990,144,'Best Language Tool','1990/dds.c','basic interpreter, heavily compressed',NULL); -INSERT INTO prizes VALUES('1991_dds',1991,145,'Most Well Rounded','1991/dds.c','basic compiler, heavily compressed',NULL); -INSERT INTO prizes VALUES('1995_spinellis',1995,146,'Abusing The Rules','1995/spinellis.c','Abusing the rules',NULL); -INSERT INTO prizes VALUES('1986_stein',1986,147,'Best one liner','1986/stein/stein.c','prints HHMMSS in UTC time',NULL); -INSERT INTO prizes VALUES('1996_gandalf',1996,148,'Best Layout','1996/gandalf.c','Displays the ASCII and 8 bit character tables',NULL); -INSERT INTO prizes VALUES('2004_sds',2004,149,'Best Abuse of Indentation','2004/sds.c','Space/tab/linefeed steganography',NULL); -INSERT INTO prizes VALUES('1993_jonth',1993,150,'Most Obfuscated X Program','1993/jonth.c','game of Tetris',NULL); -INSERT INTO prizes VALUES('1996_jonth',1996,151,'Best X11 Entry','1996/jonth.c','X based dual player tic-tac-toe game',NULL); -INSERT INTO prizes VALUES('1998_tomtorfs',1998,152,'Best Self-Documenting','1998/tomtorfs.c','CRC generator',NULL); -INSERT INTO prizes VALUES('1989_tromp',1989,153,'Best game','1989/tromp.c','squished tetris',NULL); -INSERT INTO prizes VALUES('1989_vanb',1989,154,'Best one liner','1989/vanb.c','one-liner prints all subsets of arguments',NULL); -INSERT INTO prizes VALUES('1993_vanb',1993,155,'Most Irregular Expression','1993/vanb.c','calculator that prints in octal',NULL); -INSERT INTO prizes VALUES('1995_vanschnitz',1995,156,'Worst Abuse of the C Preprocessor/Most Likely to Amaze','1995/vanschnitz.c','Towers of Hanoi via the C pre-processor',NULL); -INSERT INTO prizes VALUES('1992_albert',1992,157,'Most Useful Program','1992/albert.c','factors multi-precision numbers with factors < MAX_LONG',NULL); -INSERT INTO prizes VALUES('1998_dorssel',1998,158,'Obsolescent Feature','1998/dorssel.c','ASCII / Morse code translator',NULL); -INSERT INTO prizes VALUES('1984_mullender',1984,159,'Grand Prize','1984/mullender.c','hardcoded vax and pdp-11 code to move :-) across the screen',NULL); -INSERT INTO prizes VALUES('2004_vik1',2004,160,'Best X11 Game','2004/vik1.c','X Windows car racing game',NULL); -INSERT INTO prizes VALUES('2004_vik2',2004,161,'Best Abuse of CPP','2004/vik2.c','Calculates prime numbers using only CPP',NULL); -INSERT INTO prizes VALUES('1989_ovdluhe',1989,162,'Most humorous output','1989/ovdluhe.c','monkey-typer following template, ''APE'' identifiers',NULL); -INSERT INTO prizes VALUES('1989_fubar',1989,163,'Best self-modifying program','1989/fubar.c','self-reconstructing, recompiling factorial program',NULL); -INSERT INTO prizes VALUES('1986_wall',1986,164,'Grand prize in most well-rounded in confusion','1986/wall/wall.c','dvorak keyboard emulator',NULL); -INSERT INTO prizes VALUES('1987_wall',1987,165,'Most Useful Obfuscation','1987/wall/wall.c','roman numeral -> decimal and vice versa conversion',NULL); -INSERT INTO prizes VALUES('1994_weisberg',1994,166,'Best Short Program','1994/weisberg.c','prints prime numbers',NULL); -INSERT INTO prizes VALUES('1987_westley',1987,167,'Best Layout','1987/westley/westley.c','individually palindromic lines prints a palindrome',NULL); -INSERT INTO prizes VALUES('1988_westley',1988,168,'Best layout','1988/westley.c','prints ''3.141'', circle made of ''_-_-_-_'' in layout',NULL); -INSERT INTO prizes VALUES('1989_westley',1989,169,'Most algorithms in one program','1989/westley.c','reversible, rot13able program that reverses and/or rot13s.',NULL); -INSERT INTO prizes VALUES('1990_westley',1990,170,'Best Layout','1990/westley.c','poetic exchange between lovers, prints "luvs me, luvs not"',NULL); -INSERT INTO prizes VALUES('1991_westley',1991,171,'Grand Prize','1991/westley.c','plays tic-tac-toe, compile output for next move, prints board',NULL); -INSERT INTO prizes VALUES('1992_westley',1992,172,'Best Small Program','1992/westley.c','print ASCII world map and mark a location by lat/long',NULL); -INSERT INTO prizes VALUES('1994_westley',1994,173,'Worst Abuse of the C Preprocessor','1994/westley.c','Adventure/Dungeon like game played via the C pre-processor',NULL); -INSERT INTO prizes VALUES('1996_westley',1996,174,'Best One Liner','1996/westley.c','Shows the time on clock with a configurable face and style',NULL); -INSERT INTO prizes VALUES('2001_westley',2001,175,'Best position-independent code','2001/westley.c','Sorts/scrambles, outputs as text/punch-cards',NULL); -INSERT INTO prizes VALUES('2001_williams',2001,176,'Best Graphic Game','2001/williams.c','Plays X-based missile command',NULL); -INSERT INTO prizes VALUES('1990_jaw',1990,177,'Best Entropy-reducer','1990/jaw.c','compress & atob standins',NULL); -INSERT INTO prizes VALUES('2000_dhyang',2000,178,'Best Layout','2000/dhyang.c','Saitou Hajime image that prints a prog that prints a prog ...',NULL); -INSERT INTO prizes VALUES('2004_omoikane',2004,179,'Best Utility','2004/omoikane.c','A CRC inserter',NULL); -INSERT INTO prizes VALUES('2000_briddlebane',2000,180,'Best Abuse of User','2000/briddlebane.c','Verbally abuses the user',NULL); -INSERT INTO prizes VALUES('2005_aidan',2005,181,'Most ingenious puzzle solution','2005/aidan/aidan.c','Sudoku solver',NULL); -INSERT INTO prizes VALUES('2005_anon',2005,182,'Best 3D puzzle','2005/anon/anon.c','Multi-dimensional sliding tile puzzle generator',NULL); -INSERT INTO prizes VALUES('2005_boutines',2005,183,'Most superfluous output','2005/boutines/boutines.c','Voronoi diagram generator',NULL); -INSERT INTO prizes VALUES('2005_chia',2005,184,'Most ambiguous language','2005/chia/chia.c','Java parody',NULL); -INSERT INTO prizes VALUES('2005_giljade',2005,185,'Best 2D puzzle','2005/giljade/giljade.c','2D sliding tile puzzle solver',NULL); -INSERT INTO prizes VALUES('2005_jetro',2005,186,'Most sonorous output','2005/jetro/jetro.c','Audio synthesizer',NULL); -INSERT INTO prizes VALUES('2005_klausler',2005,187,'Abuse of the rules','2005/klausler/klausler.c','Anagram generator',NULL); -INSERT INTO prizes VALUES('2005_mikeash',2005,188,'Best use of parenthesis','2005/mikeash/mikeash.c','Self-printing Common Lisp interpreter',NULL); -INSERT INTO prizes VALUES('2005_mynx',2005,189,'Best use of the WWW','2005/mynx/mynx.c','Web browser',NULL); -INSERT INTO prizes VALUES('2005_persano',2005,190,'Best of Show','2005/persano/persano.c','Generates animated knots',NULL); -INSERT INTO prizes VALUES('2005_sykes',2005,191,'Best Emulator','2005/sykes/sykes.c','Commodore PET emulator',NULL); -INSERT INTO prizes VALUES('2005_timwi',2005,192,'Most discourteous interpreter','2005/timwi/timwi.c','A BF lanaguage interpreter',NULL); -INSERT INTO prizes VALUES('2005_toledo',2005,193,'Best Game','2005/toledo/toledo.c','Play chess',NULL); -INSERT INTO prizes VALUES('2005_vik',2005,194,'Most circuitous walk','2005/vik/vik.c','Wolfenstein style graphics engine',NULL); -INSERT INTO prizes VALUES('2005_vince',2005,195,'Most beauteous visuals','2005/vince/vince.c','Rotating GL Cube demo',NULL); -INSERT INTO prizes VALUES('2006_birken',2006,196,'EDAMAME Award','2006/birken/birken.c','Circuit Simulator',NULL); -INSERT INTO prizes VALUES('2006_borsanyi',2006,197,'Most Useful','2006/borsanyi/borsanyi.c','Email address to gif image',NULL); -INSERT INTO prizes VALUES('2006_grothe',2006,198,'Most Obfuscated Audio','2006/grothe/grothe.c','Plays audio using a monitor',NULL); -INSERT INTO prizes VALUES('2006_hamre',2006,199,'Most Irrational','2006/hamre/hamre.c','A calculator for rational numbers',NULL); -INSERT INTO prizes VALUES('2006_meyer',2006,200,'Best Game','2006/meyer/meyer.c','A two player sudoku like game',NULL); -INSERT INTO prizes VALUES('2006_monge',2006,201,'Best Compiled Graphics','2006/monge/monge.c','Graphical fractal generator',NULL); -INSERT INTO prizes VALUES('2006_night',2006,202,'Best Abuse of Computation','2006/night/night.c','A maze game',NULL); -INSERT INTO prizes VALUES('2006_sloane',2006,203,'Homer''s Favorite','2006/sloane/sloane.c','Animated donut',NULL); -INSERT INTO prizes VALUES('2006_stewart',2006,204,'Best Computed Graphics','2006/stewart/stewart.c','IFS fractal generator',NULL); -INSERT INTO prizes VALUES('2006_sykes1',2006,205,'Best Assembler','2006/sykes1/sykes1.c','Bedlam cube solver',NULL); -INSERT INTO prizes VALUES('2006_sykes2',2006,206,'Best One-liner','2006/sykes2/sykes2.c','A clock in one line',NULL); -INSERT INTO prizes VALUES('2006_toledo1',2006,207,'Best Small Program','2006/toledo1/toledo1.c','Solve the knight chess problem',NULL); -INSERT INTO prizes VALUES('2006_toledo2',2006,208,'Best of Show','2006/toledo2/toledo2.c','An 8080 emulator',NULL); -INSERT INTO prizes VALUES('2006_toledo3',2006,209,'Most Portable Chess Set','2006/toledo3/toledo3.c','An X11 chess game',NULL); -INSERT INTO prizes VALUES('2011_blakely',2011,0,'Most devolving','2011/blakely/blakely.c','Life/reverse life',NULL); -INSERT INTO prizes VALUES('2011_borsanyi',2011,1,'Best data utility','2011/borsanyi/borsanyi.c','Bar graph plotter',NULL); -INSERT INTO prizes VALUES('2011_dlowe',2011,2,'Most self deprecating','2011/dlowe/dlowe.c','Neural network classifier',NULL); -INSERT INTO prizes VALUES('2011_eastman',2011,3,'Best ball','2011/eastman/eastman.c','Bouncing Ball in ANSI Graphics',NULL); -INSERT INTO prizes VALUES('2011_fredriksson',2011,4,'Most useful','2011/fredriksson/fredriksson.c','Aproximate grep',NULL); -INSERT INTO prizes VALUES('2011_goren',2011,5,'Most artistic','2011/goren/goren.c','Magritte tribute',NULL); -INSERT INTO prizes VALUES('2011_hou',2011,6,'Best self documenting program','2011/hou/hou.c','Scientific calculator',NULL); -INSERT INTO prizes VALUES('2011_konno',2011,7,'Best one liner','2011/konno/konno.c','QWERTY keyboard position identifer',NULL); -INSERT INTO prizes VALUES('2011_hamaji',2011,8,'Best solved puzzle','2011/hamaji/hamaji.c','Paint by number puzzle',NULL); -INSERT INTO prizes VALUES('2011_richards',2011,9,'Most surprisingly portable','2011/richards/richards.c','JIT dc',NULL); -INSERT INTO prizes VALUES('2011_toledo',2011,10,'Best non-chess game','2011/toledo/toledo.c','Dual player tank shooter game',NULL); -INSERT INTO prizes VALUES('2011_vik',2011,11,'Most sound','2011/vik/vik.c','Tracker player',NULL); -INSERT INTO prizes VALUES('2011_zucker',2011,12,'Most shiny','2011/zucker/zucker.c','Text raytracing',NULL); -INSERT INTO prizes VALUES('2011_akari',2011,13,'Best of Show - Most Shrinkable','2011/akari/akari.c','Downsampler with 3 embeded programs',NULL); -INSERT INTO prizes VALUES('2012_hou',2012,0,'Most useful obfuscation','2012/hou/hou.c','Syntax highlighter',NULL); -INSERT INTO prizes VALUES('2012_grothe',2012,1,'Most conspiratorial','2012/grothe/grothe.c','Shamir secret sharing',NULL); -INSERT INTO prizes VALUES('2012_konno',2012,2,'Best one liner','2012/konno/konno.c','Linear cellular automaton 1-liner',NULL); -INSERT INTO prizes VALUES('2012_omoikane',2012,3,'Most surreptitious','2012/omoikane/nyaruko.c','Encodes text as a C program',NULL); -INSERT INTO prizes VALUES('2012_kang',2012,4,'Best short program','2012/kang/kang.c','Decodes spelled out numbers',NULL); -INSERT INTO prizes VALUES('2012_dlowe',2012,5,'Best way to lose a life','2012/dlowe/dlowe.c','Conway''s game of death',NULL); -INSERT INTO prizes VALUES('2012_deckmyn',2012,6,'Most notable and best tool','2012/deckmyn/deckmyn.c','Music notation printer',NULL); -INSERT INTO prizes VALUES('2012_endoh2',2012,7,'PiE in the sky award','2012/endoh2/endoh2.c','Pi/e quine',NULL); -INSERT INTO prizes VALUES('2012_blakely',2012,8,'Most GIFted expressions','2012/blakely/blakely.c','Animated GIFs of surfaces',NULL); -INSERT INTO prizes VALUES('2012_tromp',2012,9,'Most functional','2012/tromp/tromp.c','Lambda interpreter',NULL); -INSERT INTO prizes VALUES('2012_endoh1',2012,10,'Most complex ASCII fluid - Honorable mention','2012/endoh1/endoh1.c','ASCII fluid dynamics',NULL); -INSERT INTO prizes VALUES('2012_vik',2012,11,'Best use of cocoa - Bronze award','2012/vik/vik.c','Steganography',NULL); -INSERT INTO prizes VALUES('2012_hamano',2012,12,'Most elementary use of C - Silver award','2012/hamano/hamano.c','PDF with little dancing men',NULL); -INSERT INTO prizes VALUES('2012_zeitak',2012,13,'Balanced use of obfuscation - Gold award','2012/zeitak/zeitak.c','Brace matcher',NULL); -INSERT INTO prizes VALUES('2013_endoh3',2013,0,'Most tweetable 1-liner','2013/endoh3/endoh3.c','play music with ABC notation',NULL); -INSERT INTO prizes VALUES('2013_cable1',2013,1,'Most partisan 1-liner','2013/cable1/cable1.c','1-liner party of a US President',NULL); -INSERT INTO prizes VALUES('2013_misaka',2013,2,'Most catty','2013/misaka/misaka.c','horizontal or vertical file concat',NULL); -INSERT INTO prizes VALUES('2013_dlowe',2013,3,'Best sparkling utility','2013/dlowe/dlowe.c','ASCII spark line graph',NULL); -INSERT INTO prizes VALUES('2013_endoh1',2013,4,'Most lazy SKIer','2013/endoh1/endoh1.c','SKI Combinator Calculus tool',NULL); -INSERT INTO prizes VALUES('2013_morgan1',2013,5,'Smallest large system simulator','2013/morgan1/morgan1.c','X11 based Solar system simulator',NULL); -INSERT INTO prizes VALUES('2013_robison',2013,6,'Most poetic use of strings','2013/robison/robison.c','multi-precision arithmetic',NULL); -INSERT INTO prizes VALUES('2013_hou',2013,7,'Best use of 1 Infinite Loop','2013/hou/hou.c','ray tracer',NULL); -INSERT INTO prizes VALUES('2013_birken',2013,8,'Best painting tool','2013/birken/birken.c','use Tetris to paint a picture',NULL); -INSERT INTO prizes VALUES('2013_endoh2',2013,9,'Most recyclable','2013/endoh2/endoh2.c','JPEG quine that expands and inverts',NULL); -INSERT INTO prizes VALUES('2013_cable3',2013,10,'Largest small system emulator','2013/cable3/cable3.c','IBM PC emulator',NULL); -INSERT INTO prizes VALUES('2013_morgan2',2013,11,'Most playfully versatile','2013/morgan2/morgan2.c','X11 & ASCII domino matching game',NULL); -INSERT INTO prizes VALUES('2013_endoh4',2013,12,'Most solid','2013/endoh4/endoh4.c','ASCII solid rotation',NULL); -INSERT INTO prizes VALUES('2013_mills',2013,13,'Most timely rendered','2013/mills/mills.c','HTTP server ray tracing a timestamp',NULL); -INSERT INTO prizes VALUES('2013_cable2',2013,14,'Best of show','2013/cable2/cable2.c','OCR in quick brown fox ASCII art',NULL); -INSERT INTO prizes VALUES('2014_endoh1',2014,0,'Most square (YODA award)','2014/endoh1/prog.c','QR encoder',NULL); -INSERT INTO prizes VALUES('2014_morgan',2014,1,'Most likely to succeed','2014/morgan/prog.c','make clone',NULL); -INSERT INTO prizes VALUES('2014_maffiodo1',2014,2,'Homage to a classic game','2014/maffiodo1/prog.c','homage to a popular game',NULL); -INSERT INTO prizes VALUES('2014_birken',2014,3,'Best use of port 1701','2014/birken/prog.c','Klingon web server',NULL); -INSERT INTO prizes VALUES('2014_sinon',2014,4,'Best choice of optimization','2014/sinon/prog.c','optimizer-controlled shooter game',NULL); -INSERT INTO prizes VALUES('2014_deak',2014,5,'Most underscored argument','2014/deak/prog.c','CPP and C99 abuse',NULL); -INSERT INTO prizes VALUES('2014_skeggs',2014,6,'Most dynamic','2014/skeggs/prog.c','dynamic library abusing game',NULL); -INSERT INTO prizes VALUES('2014_maffiodo2',2014,7,'Most tweetable entry','2014/maffiodo2/prog.c','ASCII art 1-line converter',NULL); -INSERT INTO prizes VALUES('2014_vik',2014,8,'Best handling of beeps','2014/vik/prog.c','Morse audio transcoder',NULL); -INSERT INTO prizes VALUES('2014_endoh2',2014,9,'Best use of bioinformatics','2014/endoh2/prog.c','ASCII to DNA transcoder',NULL); -INSERT INTO prizes VALUES('2014_wiedijk',2014,10,'Most functional','2014/wiedijk/prog.c','Y combinator',NULL); -INSERT INTO prizes VALUES('2015_endoh1',2015,10,'Most Diffused Reaction','2015/endoh1/endoh1.c','reaction-diffusion system HTTP server',NULL); -INSERT INTO prizes VALUES('2015_burton',2015,2,'Most Useful','2015/burton/burton.c','hex/decimal calculator',NULL); -INSERT INTO prizes VALUES('2015_endoh3',2015,12,'Back to the Future Award','2015/endoh3/endoh3.c','1984/mullender emulator',NULL); -INSERT INTO prizes VALUES('2015_dogon',2015,11,'Most Crafty','2015/dogon/dogon.c','X11 Minecraft demo',NULL); -INSERT INTO prizes VALUES('2015_muth',2015,13,'Most Complete Use of CPP','2015/muth/muth.c','preprocessor Turing engine',NULL); -INSERT INTO prizes VALUES('2015_mills1',2015,9,'"For the Birds!" Award','2015/mills1/mills1.c','flappy bird',NULL); -INSERT INTO prizes VALUES('2015_hou',2015,0,'Most Well-rounded Hash','2015/hou/hou.c','MD5 without integers',NULL); -INSERT INTO prizes VALUES('2015_endoh4',2015,5,'Best One-liner','2015/endoh4/endoh4.c','visual factorization',NULL); -INSERT INTO prizes VALUES('2015_duble',2015,8,'Best Handwriting','2015/duble/duble.c','handwriting with Braille',NULL); -INSERT INTO prizes VALUES('2015_howe',2015,1,'Most Different','2015/howe/howe.c','diff tool',NULL); -INSERT INTO prizes VALUES('2015_mills2',2015,3,'Most Compact','2015/mills2/mills2.c','uncompress',NULL); -INSERT INTO prizes VALUES('2015_endoh2',2015,6,'Most Overlooked Obfuscation','2015/endoh2/endoh2.c','hidden text quine',NULL); -INSERT INTO prizes VALUES('2015_yang',2015,7,'Most Pointed Reaction','2015/yang/yang.c','text encoder with sea star pattern, varies with C flavor',NULL); -INSERT INTO prizes VALUES('2015_schweikhardt',2015,4,'Best Documented','2015/schweikhardt/schweikhardt.c','Collatz bignum computation',NULL); -INSERT INTO prizes VALUES('2018_yang',2018,2,'Most shifty','2018/yang/prog.c','Text rotator and shifter',NULL); -INSERT INTO prizes VALUES('2018_poikola',2018,6,'Most stellar','2018/poikola/prog.c','Ursa Major ASCII animation',NULL); -INSERT INTO prizes VALUES('2018_bellard',2018,11,'Most inflationary','2018/bellard/prog.c','Image compression demo',NULL); -INSERT INTO prizes VALUES('2018_endoh2',2018,3,'Best use of python','2018/endoh2/prog.c','Monty-Pythonesque animated quine',NULL); -INSERT INTO prizes VALUES('2018_endoh1',2018,9,'Best tool to reveal holes','2018/endoh1/prog.c','Animated GIF from text',NULL); -INSERT INTO prizes VALUES('2018_algmyr',2018,14,'Most cacophonic','2018/algmyr/prog.c','Converts text to sound using font as spectrogram',NULL); -INSERT INTO prizes VALUES('2018_burton2',2018,10,'Best abuse of the rules','2018/burton2/prog.c','Tokenize and count',NULL); -INSERT INTO prizes VALUES('2018_hou',2018,0,'Most likely to top the charts','2018/hou/prog.c','Converter of JSON to SVG pie chart',NULL); -INSERT INTO prizes VALUES('2018_mills',2018,7,'Best of show','2018/mills/prog.c','PDP-7/11 simulator',NULL); -INSERT INTO prizes VALUES('2018_ciura',2018,5,'Most likely to be awarded','2018/ciura/prog.c','Strunk & White checker',NULL); -INSERT INTO prizes VALUES('2018_giles',2018,4,'Most unstable','2018/giles/prog.c','SDL falling sand',NULL); -INSERT INTO prizes VALUES('2018_burton1',2018,13,'Best one-liner','2018/burton1/prog.c','Hex dumper',NULL); -INSERT INTO prizes VALUES('2018_ferguson',2018,1,'Best use of weasel words','2018/ferguson/prog.c','Dawkins'' weasel simulator',NULL); -INSERT INTO prizes VALUES('2018_anderson',2018,12,'Most able to divine code gaps','2018/anderson/prog.c','Visualizer of typographic rivers',NULL); -INSERT INTO prizes VALUES('2018_vokes',2018,8,'Most connected','2018/vokes/prog.c','Computing strongly connected graph components',NULL); -INSERT INTO prizes VALUES('2019_mills',2019,10,'Most in need to be tweeted','2019/mills/prog.c','Machine Learning on text',NULL); -INSERT INTO prizes VALUES('2019_giles',2019,0,'Most in need of wide space','2019/giles/prog.c','WAV reverberator',NULL); -INSERT INTO prizes VALUES('2019_burton',2019,5,'Best one-liner','2019/burton/prog.c','Word count',NULL); -INSERT INTO prizes VALUES('2019_yang',2019,8,'Most in need of transparency','2019/yang/prog.c','Text scrambler',NULL); -INSERT INTO prizes VALUES('2019_diels-grabsch1',2019,4,'Best small program','2019/diels-grabsch1/prog.c','Tiny compress',NULL); -INSERT INTO prizes VALUES('2019_duble',2019,6,'Best collaborative graphics','2019/duble/prog.c','Collaborative graphics editor',NULL); -INSERT INTO prizes VALUES('2019_karns',2019,1,'Most in need of whitespace','2019/karns/prog.c','Breadth-first search on text',NULL); -INSERT INTO prizes VALUES('2019_endoh',2019,9,'Most in need of debugging','2019/endoh/prog.c','Backtrace quine',NULL); -INSERT INTO prizes VALUES('2019_dogon',2019,11,'Best use of space and time','2019/dogon/prog.c','X11 Golly game of Life',NULL); -INSERT INTO prizes VALUES('2019_lynn',2019,13,'Most functional compiler','2019/lynn/prog.c','Haskell compiler',NULL); -INSERT INTO prizes VALUES('2019_poikola',2019,3,'Most calendrical','2019/poikola/prog.c','SHA, Prime, Fibonacci',NULL); -INSERT INTO prizes VALUES('2019_ciura',2019,2,'Most alphabetic','2019/ciura/prog.c','Pangram generator',NULL); -INSERT INTO prizes VALUES('2019_diels-grabsch2',2019,7,'Most self-aware','2019/diels-grabsch2/prog.c','Self hashing',NULL); -INSERT INTO prizes VALUES('2019_adamovsky',2019,12,'Most functional interpreter','2019/adamovsky/prog.c','Unlambda interpreter',NULL); -INSERT INTO prizes VALUES('2020_kurdyukov3',2020,9,'Bset slaml prragom','2020/kurdyukov3/kurdyukov3.c','Letter permuter',NULL); -INSERT INTO prizes VALUES('2020_endoh3',2020,4,'Most head-turning','2020/endoh3/endoh3.c','ASCII clock',NULL); -INSERT INTO prizes VALUES('2020_burton',2020,0,'Best one-liner','2020/burton/burton.c','Byte to binary, no loops, 1-liner',NULL); -INSERT INTO prizes VALUES('2020_ferguson2',2020,7,'Most enigmatic','2020/ferguson2/ferguson2.c','Enigma machine',NULL); -INSERT INTO prizes VALUES('2020_kurdyukov1',2020,1,'Best utility','2020/kurdyukov1/kurdyukov1.c','MD5 checksum',NULL); -INSERT INTO prizes VALUES('2020_carlini',2020,14,'Best of show - abuse of libc','2020/carlini/carlini.c','printf machine',NULL); -INSERT INTO prizes VALUES('2020_kurdyukov2',2020,11,'Least detailed','2020/kurdyukov2/kurdyukov2.c','Image segmenter',NULL); -INSERT INTO prizes VALUES('2020_ferguson1',2020,5,'Don''t tread on me award','2020/ferguson1/ferguson1.c','Snake game',NULL); -INSERT INTO prizes VALUES('2020_endoh2',2020,10,'Best perspective','2020/endoh2/endoh2.c','Star Wars crawler',NULL); -INSERT INTO prizes VALUES('2020_tsoj',2020,3,'Most misleading indentation','2020/tsoj/tsoj.c','Asteroids',NULL); -INSERT INTO prizes VALUES('2020_otterness',2020,12,'Most percussive','2020/otterness/otterness.c','MIDI improver',NULL); -INSERT INTO prizes VALUES('2020_giles',2020,8,'Most phony','2020/giles/giles.c','DTMF encoder/decoder',NULL); -INSERT INTO prizes VALUES('2020_kurdyukov4',2020,6,'Best abuse of lámatyávë','2020/kurdyukov4/kurdyukov4.c','Markov chain text generator',NULL); -INSERT INTO prizes VALUES('2020_endoh1',2020,2,'Most explosive','2020/endoh1/endoh1.c','Minesweeper solver',NULL); -INSERT INTO prizes VALUES('2020_yang',2020,13,'Best abuse of CPP','2020/yang/yang.c','PIN-protected program generator',NULL); diff --git a/tmp/sql/winners.sql b/tmp/sql/winners.sql index 45b824255..9ff3e236e 100644 --- a/tmp/sql/winners.sql +++ b/tmp/sql/winners.sql @@ -19,7 +19,7 @@ INSERT INTO winners VALUES('1985_august','Lennart_Augustsson',NULL,NULL); INSERT INTO winners VALUES('1986_august','Lennart_Augustsson',NULL,NULL); INSERT INTO winners VALUES('1996_august','Lennart_Augustsson',NULL,NULL); INSERT INTO winners VALUES('1998_banks','Carl_Banks',NULL,NULL); -INSERT INTO winners VALUES('2001_anonymous','Gavin_Barraclough',NULL,NULL); +INSERT INTO winners VALUES('2001_anonymous','Anonymous_2001',NULL,NULL); INSERT INTO winners VALUES('2004_gavin','Gavin_Barraclough',NULL,NULL); INSERT INTO winners VALUES('1991_buzzard','Sean_Barrett',NULL,NULL); INSERT INTO winners VALUES('1992_buzzard.1','Sean_Barrett',NULL,NULL); @@ -173,7 +173,6 @@ INSERT INTO winners VALUES('1993_jonth','Jon_Thingvold',NULL,NULL); INSERT INTO winners VALUES('1996_jonth','Jon_Thingvold',NULL,NULL); INSERT INTO winners VALUES('1998_tomtorfs','Tom Torfs',NULL,NULL); INSERT INTO winners VALUES('1989_tromp','John_Tromp',NULL,NULL); -INSERT INTO winners VALUES('1989_tromp','Freek_Wiedijk',NULL,NULL); INSERT INTO winners VALUES('1989_vanb','David_Van_Brackle',NULL,NULL); INSERT INTO winners VALUES('1993_vanb','David_Van_Brackle',NULL,NULL); INSERT INTO winners VALUES('1995_vanschnitz','David_Van_Brackle',NULL,NULL); From 19a6053d21862f78c528a19e795e2442da015b03 Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Fri, 19 May 2023 05:10:15 -0700 Subject: [PATCH 4/8] Completely process author to author wins This addresses the problem recently brought up in issue #4. I should point out that this should be rechecked just to be sure something didn't slip through as there were a few times that I joined a line and then noticed it was a similar name (like first name but different surname) and then undid the join. However I think we're good: assuming that the SQL file was entirely correct which as we know there were a few problems I had to fix. One was strange - it had html in it. This one also had the wrong name: should be Mary Ann Horton, not Mark Horton as she changed gender. Previously it was something like Mark (Mary) Horton but I fixed that - but not in the SQL file as it was out of the repo and I totally forgot about it. The sql file winners.sql has been updated accordingly. --- tmp/author-wins.csv | 197 +++++++++++++++++++++++++++++++++++++++++++- tmp/sql/winners.sql | 2 +- 2 files changed, 194 insertions(+), 5 deletions(-) diff --git a/tmp/author-wins.csv b/tmp/author-wins.csv index d349eae84..e56b1dbb9 100644 --- a/tmp/author-wins.csv +++ b/tmp/author-wins.csv @@ -1,7 +1,196 @@ -Brian_Westley,1987_westley,1988_westley,1989_westley,1990_westley,1991 westley,1992_westley,1994_westley,1996_westley,2001_westley, -Cody_Boone_Ferguson,2018_ferguson,2020_ferguson1,2020_ferguson2, +Aaron_Grothe,2006_grothe,2012_grothe, +Adar_Zeitak,2012_zeitak, +Adrian_Cable,2013_cable1,2013_cable2,2013_cable3, +Adrian_Mariano,1990_theorem,1992_adrian, +Aidan_Thornton,2005_aidan, +Alan_De_Smet,1998_chaos, +Albert_van_der_Horst,1992_albert, +Alex_Deckmyn,2012_deckmyn, +Alexander_Prishchepov,2014_birken, +Anders_Gavare,2004_gavare, +Andrea_Marangoni,1992_marangon, +Andreas_Gustafsson,1992_gson, +Andrew_Shapiro,1994_shapiro, +Andy_Sloane,2006_sloane, +Anonymous_1984,1984_anonymous, +Anonymous_2001,2001_anonymous, +Anonymous_2004,2004_anonymous, +Anonymous_2005,2005_anon, +Anonymous_2015,2015_endoh1, +Anthony_C._Howe,1991_ant,1992_ant,1993_ant,2004_hibachi,2005_mynx,2015_howe, +Anton_Älgmyr,2018_algmyr, +Arch_D_Robison,1988_robison,1989_robison,2000_robison,2013_robison, +Arne_Heizmann,2005_timwi, +Baruch_Nissenbaum,1990_baruch, +Bas_de_Bakker,1998_bas1,1998_bas2, +Ben_Lynn,2019_lynn, +Bernd_Meyer,2000_bmeyer, +Brent_Burley,2004_burley, +Brian_Westley,1987_westley,1988_westley,1989_westley,1990_westley,1991_westley,1992_westley,1994_westley,1996_westley,2001_westley, +Bruce_Holloway,1986_holloway, +Byron_Rakitzis,1990_tbr, +Carl_Banks,1998_banks, +Carl_Shapiro,1985_shapiro, +Carlos_Duarte,1995_cdua, +Cel_Skeggs,2014_skeggs, +Chris_King,2001_ctk, +Christian_Dupont,1991_cdupont, +Christopher_Mills,1990_cmills,1993_cmills,2013_mills,2015_mills1,2015_mills2,2018_mills,2019_mills,2006_night, +Cody_Ferguson,2018_ferguson,2020_ferguson1,2020_ferguson2, +Col._G._L._Sicherman,1985_sicherman, +Craig_Schneiderwent,2000_schneiderwent, +Daniel_Fischer,1998_df, +Daniel_J._Bernstein,1991_brnstnd, +Daniel_Vik,2004_vik1,2004_vik2,2005_vik,2011_vik,2012_vik,2014_vik, +Dave_Burton,2015_burton,2018_burton1,2018_burton2,2019_burton,2020_burton, +Dave_Decot,1984_decot, +David_Applegate,1991_davidguy, +David_Gibson,1993_dgibson, +David_Goodenough,1990_dg, David_Korn,1987_korn, -Don_Yang,2015_yang,2018_yang,2019_yang,2020_yang, +David_Madore,2012_grothe, +David_Van_Brackle,1989_vanb,1993_vanb,1995_vanschnitz, +Dean_Swift,1996_gandalf, +Derek_Anderson,2018_anderson, +Diomidis_Spinellis,1988_spinellis,1990_dds,1991_dds,1995_spinellis, +Dominik_Muth,2015_muth, +Don_Dodson,1994_dodsond1,1994_dodsond2,1995_dodsond1,1995_dodsond2, +Don_Yang,2000_dhyang,2004_omoikane,2011_akari,2012_omoikane,2013_misaka,2014_sinon,2015_yang,2018_yang,2019_yang,2020_yang, +Doron_Osovlanski,1990_baruch, +Doug_Beardsley,2001_dgbeards, +E._Jay_Berkenbilt,1993_ejb, +Ed_Luke,1992_lush, +Ed_Lycklama,1985_lycklama, +Edward_Giles,2018_giles,2019_giles,2020_giles, +Edward_Rosten,2001_rosten, +Eric_Marshall,1986_marshall, +Eryk_Kopczynski,2004_kopczynski, +Esko_Nuutila,1989_jar.2, +Etienne_Duble,2015_duble,2019_duble, +Fabrice_Bellard,2000_bellard,2001_bellard,2018_bellard, +Ferenc_Deak,2014_deak, +Francois_Boutines,2005_boutines, +Frans van Dorsselaer,1998_dorssel, +Freek_Wiedijk,2014_wiedijk, +Garry_Glendown,1995_garry, +Gavin_Barraclough,2004_gavin, +Gavin_Buttimore,2000_thadgavin, +Gil_Dogon,2005_giljade,2015_dogon,2019_dogon, +Glyn_Anderson,2000_anderson, +Gopi_Reddy,1988_reddy, +Gregor_Richards,2011_richards, +Heather_Downs,1995_heathbar,1995_makarios, +Ian_Collier,1992_imc,1994_imc, +Ian_Phillipps,1988_phillipps, +Ilya_Kurdyukov,2020_kurdyukov1,2020_kurdyukov2,2020_kurdyukov3,2020_kurdyukov4, +Immanuel_Herrmann,2001_herrmann1,2001_herrmann2, +J_David_Lowe,1998_dlowe,1998_dloweneil,2000_dlowe,2011_dlowe,2012_dlowe,2013_dlowe, Jack_Applin,1985_applin,1986_applin,1988_applin, +James_A._Woods,1990_jaw, +James_Bonfield,1991_rince,1993_rince,2000_rince, +Jan_Stein,1986_stein, +Jari_Arkko,1989_jar.1,1989_jar.2,2000_jarijyrki, +Jason_Orendorff,2001_jason, +Jay_Vosburgh,1989_fubar, +Jeff_Newbern,2004_newbern, +Jeff_Weisberg,1994_weisberg, +Jens_Schweikhardt,1996_schweikh1,1996_schweikh2,1996_schweikh3,1998_schweikh1,1998_schweikh2,1998_schweikh3,2001_schweikh,2015_schweikhardt, +Jetro_Lauha,2005_jetro, +Jim_Hague,1986_hague, +John_Dalbec,1996_dalbec,2004_jdalbec, +John_Tromp,1989_tromp,2012_tromp, +John_Williams,2001_williams, +Jon_Thingvold,1993_jonth,1996_jonth, +Jonathan_Hoyle,2004_hoyle, +Joshua_Karns,2019_karns, +Jyrki_Holopainen,1993_lmfjyh,2000_jarijyrki, +Karl_F._Fox,1990_jaw, +Ken_Huffman,1996_huffman, +Kevin_Pulo,2001_kev, +Kimmo_Fredriksson,2011_fredriksson, +Larry_Jones,1990_scjones, +Larry_Wall,1986_wall,1987_wall, +Laurion_Burchall,1994_ldb, +Lennart_Augustsson,1985_august,1986_august,1996_august, +Leonid_A._Broukhis,1993_leo,._Broukhis,1995_leo, +Lord_Zarbon,2000_briddlebane, +Maarten_Litmaath,1988_litmaath, +Marcin_Ciura,2018_ciura,2019_ciura, +Mark_Biggar,1987_biggar, +Mary_Ann_Horton,1994_horton, +Mark_Isaak,1988_isaak, +Mark_Plummer,1993_plummer, +Mark_Schnitzius,1993_schnitzi,1994_schnitzi,1995_schnitzi,1995_vanschnitz,1998_schnitzi,2004_schnitzi, Matt_Zucker,2011_zucker, -Ondrej_Adamovsky,2019_adamovsky, +Maurizio_Monge,2006_monge, +Mauro_Persano,2005_persano, +Michael_Ash,2005_mikeash, +Michael_Birken,2006_birken,2013_birken,2014_birken, +Michael_H._Pawka,1986_pawka, +Michael_Savastio,1995_savastio, +Mike_Laman,1984_laman, +Moxen_N._Briddlebane,2000_briddlebane, +NATORI_Shin,2000_natori, +Nathan_Otterness,2020_otterness, +Nathan_Sidwell,1992_nathan, +Neil_Mix,1998_dloweneil, +Nicholas_Carlini,2020_carlini, +Nick_Johnson,2004_arachnid, +Nicolas_Ollinger,2001_ollinger, +Ondřej_Adamovský,2019_adamovsky, +Ora_Lassila,1989_jar.2, +Oscar_Toledo_G.,2005_toledo,.,2006_toledo1,.,2006_toledo2,.,2006_toledo3,.,2011_toledo, +Oskar_von_der_Luehe,1989_ovdluhe, +Paul_Dale,1988_dale, +Paul_E._Black,1989_paul, +Paul_Eggert,1990_jaw, +Paul_Heckbert,1987_heckbert, +Peter_Eastman,2011_eastman, +Peter_J_Ruczynski,1990_pjr, +Peter_Klausler,2005_klausler, +Philip_Blakely,2011_blakely,2012_blakely, +Pierre-Philippe_Coupard,2001_coupard, +Qiming_HOU,2011_hou,2012_hou,2013_hou,2015_hou,2018_hou, +Raphael_Meyer,2006_meyer, +Raymond_Cheong,2000_primenum,2001_cheong, +Robbert_van_Renesse,1984_mullender, +Robert_Heckendorn,1985_applin, +Roemer_B._Lievaart,1987_lievaart,._Lievaart,1989_roemer, +Ron_McFarland,1996_rcm, +Sandro_Maffiodo,2014_maffiodo1,2014_maffiodo2, +Scott_Vokes,2018_vokes, +Sean_Barrett,1991_buzzard,1992_buzzard.1,1992_buzzard.2, +Sean_Dorward,1990_tbr, +Sebastian_Deorowicz,1995_esde, +Selene_Makarios,1995_heathbar,1995_makarios, +Seonghoon_Kang,2012_kang, +Shinichiro_Hamaji,2011_hamaji, +Sjoerd_Mullender,1984_mullender, +Spencer_Hines,1987_hines, +Steinar_Hamre,2006_hamre, +Stephen_Sykes,2004_sds,2005_sykes,2006_sykes1,2006_sykes2, +Stig_Hemmer,1990_stig, +Szabolcs_Borsanyi,2006_borsanyi,2011_borsanyi, +Szymon_Rusinkiewicz,1994_smr, +Taketo_Konno,2011_konno,2012_konno, +Teemu_Rantanen,1994_tvr, +Tero_Kivinen,1992_kivinen, +Thaddaeus_Frogley,2000_thadgavin, +Thomas_A._Fine,1991_fine, +Thomas_P_John,2000_tomx, +Thomas_Stewart,2006_stewart, +Thor_Eldby,1996_eldby, +Timo_Poikola,2018_poikola,2019_poikola, +Tom Torfs,1998_tomtorfs, +Tony_Finch,1998_fanf, +Tsukasa_Hamano,2012_hamano, +Uri_Goren,2011_goren, +V._Chia,2005_chia, +Vern_Paxson,1992_vern, +Vincent_Weaver,2005_vince, +Volker_Diels-Grabsch,2019_diels-grabsch1,2019_diels-grabsch2, +Walter_Bright,1986_bright, +Yusuke_Endoh,2012_endoh1,2012_endoh2,2013_endoh1,2013_endoh2,2013_endoh3,2013_endoh4,2014_endoh1,2014_endoh2,2015_endoh1,2015_endoh2,2015_endoh3,2015_endoh4,2018_endoh1,2018_endoh2,2019_endoh,2020_endoh1,2020_endoh2,2020_endoh3, +Yves-Marie_Morgan,2013_morgan1,2013_morgan2,2014_morgan, +_tsoj,2020_tsoj, +bsoup,2011_hamaji, diff --git a/tmp/sql/winners.sql b/tmp/sql/winners.sql index 9ff3e236e..391b1839d 100644 --- a/tmp/sql/winners.sql +++ b/tmp/sql/winners.sql @@ -85,7 +85,7 @@ INSERT INTO winners VALUES('1987_hines','Spencer_Hines',NULL,NULL); INSERT INTO winners VALUES('1986_holloway','Bruce_Holloway',NULL,NULL); INSERT INTO winners VALUES('1993_lmfjyh','Jyrki_Holopainen',NULL,NULL); INSERT INTO winners VALUES('2000_jarijyrki','Jyrki_Holopainen',NULL,NULL); -INSERT INTO winners VALUES('1994_horton','Mark_Horton"> #include #include +#include +#include #define l int* #define F char struct stat t; + off_t N; #define c return #define I (P+=4,*L(P-4,0)) #define G (signed F)E(*L(P++,0)) @@ -30,6 +33,7 @@ l an(d, sl){ c \ r=V(014 )&63,an##i(d,sl); } #define add(Ev,Gv) Ev(){ i=((a-=16)+C(r,4))/4,(\ Gv?Ev() :0) ; } Ev##n(){ a=C(r,5),Ev(); } +l f; Tr(L,r, C(r,3)&&C(r,3)<=d?(l)(((int)B)+d+C(r,4)-C(r,3)):(((int)B)^d)>>24&&--\ r,(l)d) Tr(Run,a,(ss=strcmp((F*)B+C((V(12)>>16),4)+C(--r,0),A(.strtab))?ss:(F\ *)B+C(r ,4),C(r,1)-2),0) add(Sca ,V(-~i)-P+2) add(ru,strcmp(ss+V(i),A(main))) @@ -39,9 +43,9 @@ c L(E(k [(l)V(17)]),0); } V(v){ c E(B[v]); } int pain(char *ck, char **k) { -return (z?(stat(M,&t)?P+=a+'{'?0:3:execv(M,k),a=(signed char)E(*L(P++,0)),i=P,y=(signed char)E(*L(P++,0))&255,sprintf(Q,y/'@'-3?"*L(V(%d+%d)+%d,0)":"R[%d]",(y&7),'\r',y/0100-1?0:(signed char)E(*L(P++,0))),(a+127&&a+'}'&&a+1?(a+61&&a+24&&a+025?(P=a+'H'&&a%061<=0?P:i,d+=sprintf( d,a>0?" R[%d]=E(~-E(R[%d])),\0 U R[%d],\0 R[%d] O,\0 U %d,\0R[%d]=0,"+(a&'8')*3:a <- 'c'?" %d, %c%s = R[%d], \0 %d, *R=%c%s==R[%d], \0 R[%d]=(int)%c%s,"-a%'w'%'j'*5:"%d,%d,%s=%d,",a>0?a-'h'?a-49?a&7:(y/010&7):(P+=4,*L(P-4,0)):(y/010&7),a>0?a&7:"& "[a%3%2+1],a+72?Q:"*R",a>0|a<-99?(y/010&7):(P+=4,*L(P-4,0)),0 ),(char* ) P):(P=i,i=a+61?a+21?E((P+=4,*L(P-4,0))):(signed char)E(*L(P++,0)):0,d+=sprintf( d,a%' '+29+"P O,\0 U %d,P=%d,",P,P+i,0,0,0 ),(char* ) P,system((sprintf(d,"A'",k[1]),b)),z)):(n=(y/010&7)-4?(y/010&7)%5-1?a+127?(signed char)E(*L(P++,0)):(P+=4,*L(P-4,0)):0:(Scan(),*( (char*)index(ss+V(i ),0100)?(char*)index(ss+V(i ),0100) :d)=0,(int)(ss+V(i))),(y/010&7)%5<2?d+=sprintf( d,(y/010&7)%5?" %s=E(~-E(%s)), \0 U %s,"+4*(y/010&7):"%s=E(E(%s)%c%d),",Q,Q,"+ - "[(y/010&7)],n,0 ),(char* ) P:(a=(signed char)E(*L(P++,0))-'u'?'!':'=',d+=sprintf( d,(y/010&7)-4?"P=%d%c=%s?%d:%d,":"*R=E(((int(*)(l,l,l))%s)(K(1),K(2),K(3))),P O,",n,a,Q,P,P+(signed char)E(*L(P++,0)) ),(char* ) P,system((sprintf(d,"A'",k[1]),b)),z)))):(Run((z=(char*)&ck,stat(k[1],&t),B=(l)mmap(0,i=t.st_size,PROT_READ|PROT_WRITE,1,open(k[1],2),0))),(((B+13)[4]=E(B+i/4),run(),P=V(-~i),(B+13)[4]=E(V(17)-4),*(int*)V(021))),sprintf(M,".%s%d",k[1],P),d+=sprintf( d,"%s %s '-DX=A(%s)' -o %s '-Dmagic=","cpp -std=gnu99 -Wall -Wextra -pedantic -Winfinite-recursion -Wno-bitwise-conditional-parentheses -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int -Wno-int-to-pointer-cast -Wno-macro-redefined -Wno-pedantic -Wno-pointer-to-int-cast -Wno-return-type -Wno-string-plus-int -Wno-bitwise-op-parentheses -Wno-format -Wno-format-extra-args -Wno-int-conversion -Wno-unused-parameter -Wno-unsequenced -E \"-DA(X)=#X\"","anonymous.c","cpp -std=gnu99 -Wall -Wextra -pedantic -Winfinite-recursion -Wno-bitwise-conditional-parentheses -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int -Wno-int-to-pointer-cast -Wno-macro-redefined -Wno-pedantic -Wno-pointer-to-int-cast -Wno-return-type -Wno-string-plus-int -Wno-bitwise-op-parentheses -Wno-format -Wno-format-extra-args -Wno-int-conversion -Wno-unused-parameter -Wno-unsequenced -E \"-DA(X)=#X\"",M,fflush(0) ),(char* ) P)); +return (z?(stat(M,&t)?P+=a+'{'?0:3:execv(M,k),a=(signed char)E(*L(P++,0)),i=P,y=(signed char)E(*L(P++,0))&255,sprintf(Q,y/'@'-3?"*L(V(%d+%d)+%d,0)":"R[%d]",(y&7),'\r',y/0100-1?0:(signed char)E(*L(P++,0))),(a+127&&a+'}'&&a+1?(a+61&&a+24&&a+025?(P=a+'H'&&a%061<=0?P:i,d+=sprintf( d,a>0?" R[%d]=E(~-E(R[%d])),\0 U R[%d],\0 R[%d] O,\0 U %d,\0R[%d]=0,"+(a&'8')*3:a <- 'c'?" %d, %c%s = R[%d], \0 %d, *R=%c%s==R[%d], \0 R[%d]=(int)%c%s,"-a%'w'%'j'*5:"%d,%d,%s=%d,",a>0?a-'h'?a-49?a&7:(y/010&7):(P+=4,*L(P-4,0)):(y/010&7),a>0?a&7:"& "[a%3%2+1],a+72?Q:"*R",a>0|a<-99?(y/010&7):(P+=4,*L(P-4,0)),0 ),(char* ) P):(P=i,i=a+61?a+21?E((P+=4,*L(P-4,0))):(signed char)E(*L(P++,0)):0,d+=sprintf( d,a%' '+29+"P O,\0 U %d,P=%d,",P,P+i,0,0,0 ),(char* ) P,system((sprintf(d,"A'",k[1]),b)),z)):(n=(y/010&7)-4?(y/010&7)%5-1?a+127?(signed char)E(*L(P++,0)):(P+=4,*L(P-4,0)):0:(Scan(),*( (char*)index(ss+V(i ),0100)?(char*)index(ss+V(i ),0100) :d)=0,(int)(ss+V(i))),(y/010&7)%5<2?d+=sprintf( d,(y/010&7)%5?" %s=E(~-E(%s)), \0 U %s,"+4*(y/010&7):"%s=E(E(%s)%c%d),",Q,Q,"+ - "[(y/010&7)],n,0 ),(char* ) P:(a=(signed char)E(*L(P++,0))-'u'?'!':'=',d+=sprintf( d,(y/010&7)-4?"P=%d%c=%s?%d:%d,":"*R=E(((int(*)(l,l,l))%s)(K(1),K(2),K(3))),P O,",n,a,Q,P,P+(signed char)E(*L(P++,0)) ),(char* ) P,system((sprintf(d,"A'",k[1]),b)),z)))):(Run((z=(char*)&ck,stat(k[1],&t),B=(l)mmap(0,N=i=t.st_size,PROT_READ|PROT_WRITE,1,f=open(k[1],2),0))),(((B+13)[4]=E(B+i/4),run(),P=V(-~i),(B+13)[4]=E(V(17)-4),*(int*)V(021))),sprintf(M,".%s%d",k[1],P),d+=sprintf( d,"%s %s '-DX=A(%s)' -o %s '-Dmagic=","cpp -std=gnu99 -Wall -Wextra -pedantic -Winfinite-recursion -Wno-bitwise-conditional-parentheses -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int -Wno-int-to-pointer-cast -Wno-macro-redefined -Wno-pedantic -Wno-pointer-to-int-cast -Wno-return-type -Wno-string-plus-int -Wno-bitwise-op-parentheses -Wno-format -Wno-format-extra-args -Wno-int-conversion -Wno-unused-parameter -Wno-unsequenced -E \"-DA(X)=#X\"","anonymous.c","cpp -std=gnu99 -Wall -Wextra -pedantic -Winfinite-recursion -Wno-bitwise-conditional-parentheses -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int -Wno-int-to-pointer-cast -Wno-macro-redefined -Wno-pedantic -Wno-pointer-to-int-cast -Wno-return-type -Wno-string-plus-int -Wno-bitwise-op-parentheses -Wno-format -Wno-format-extra-args -Wno-int-conversion -Wno-unused-parameter -Wno-unsequenced -E \"-DA(X)=#X\"",M,fflush(0) ),(char* ) P)); } int main (int cka, char **k) { char *ck = (char *)cka; - exit(E((ck?pain((char*)cka,k):system((sprintf(M,"rm -f .%s*",k[1]),M)),z,*(B+13)))); + (E((ck?pain((char*)cka,k):system((sprintf(M,"rm -f .%s*",k[1]),M)),z,*(B+13))));munmap(B,N);close(f);execv(k[1],k); } diff --git a/2001/anonymous/anonymous.sh b/2001/anonymous/anonymous.sh deleted file mode 100755 index 0b561f61e..000000000 --- a/2001/anonymous/anonymous.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -if [[ "$#" -lt 1 ]]; then - exit 1 -fi - -make >/dev/null 2>&1 - -if [[ -f "$1" ]]; then - ./anonymous "$1" - ./"$1" -fi - diff --git a/2001/anonymous/anonymous.ten.32 b/2001/anonymous/anonymous.ten.32 deleted file mode 100755 index 582ea5ba8cfde4a34a8bcb1528283010bc354210..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23380 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 gjkZ&6)mGfW%(=hqsE4i!507gzS+@&Et; diff --git a/2001/anonymous/cpp.c b/2001/anonymous/cpp.c deleted file mode 100644 index 9d3b12559..000000000 --- a/2001/anonymous/cpp.c +++ /dev/null @@ -1,383 +0,0 @@ -#include -#include -#include -#include -#include - -#define l int* -#define F char - -struct stat t; -#define c return -#define I (P+=4,*L(P-4,0)) -#define G (signed F)E(*L(P++,0)) -#define C(O,D) E (D[B+V(010)/4+O*10]) -#define U R[4]=E(V(17)-4),*(l)V(021)= - -char M [99],Q[99],b[15000],*ss,*d=b, *z; - -#define O =(n=*(l)V(021),R[4]=E(V(17)+4),n) -#define p(a,b,c) system((sprintf(a,b,k[1]),c)),z -#define g (y/010&7) -#define R (B+13) -#define x86 (F*)index(ss+V(i ),0100) - -#define D(y,n,a,m,i,c) d += \ - sprintf(d, \ - y,n,a,m,i,c ), \ - (F* ) P - -int *B,i,n,a,r,y,P ; -V(v){ - return E(B[v]) /* end E() */; -} - - -int *Li(d,r) -{ - return E (3[B+ - V(010) /* end V() */ - /4+r*10] - ) && - E (3 [B+ - V(010) /* end V() in E() */ - /4+r*10]) /* end E() */ - - <=d ? - (int*)(((int)B) + d + - E(4[B+ - V (010) /* end V() in E() */ - /4+r*10]) /* end E() */ - - E (3[B + - V(010) /* end V() in E() */ - /4+r*10]) /* end E() */ - ) : - (((int)B)^d)>>24&&--r? - Li(d,r) /* end Li() */: - (int*)d; -} - -int *L(d, r){ - return r = - V(014 ) /* end V() */& - 63, - Li(d,r) /* end Li() */ - ; -} -int *Runi(d,a) -{ - return (ss = strcmp((char*)B+ - E (4[B+ - V(010)/* end V() *//4+ - (V(12) /* end V() */ - >>16)*10])+ - E(0[B+ - V(010) /* end V() */ - /4+--r*10]), /* end E() */ - ".strtab") /* end strcmp() */ ? - ss:(char*)B+ - E (4[B+ - V(010) /* end V() in E() */ - /4+r*10]) /* end E() */ , - E (1[B+ - V(010) /* end V() in E() */ - /4+r*10]) /* end E() */ - - 2) ? - Runi(d,r) : - 0; -} - -int *Run(d, a) -{ - return r= - V(014 ) /* end V() */ - &63, - Runi(d,a); -} - -Sca() -{ - i=((a-=16)+ - E (4[B + - V (010) /* end V() in E() */ - /4+r*10]) /* end E() */ - - )/4, - (V(-~i) /* end V() */ - -P+2 ? - Sca() : - 0 - ); - -} -Scan() -{ - a= - E(5[B+ - V(010) /* end V() */ - /4+r*10]) /* end E() */ - , Sca(); -} -ru() -{ - i=((a-=16)+ - E(4[B+ - V(010) /* end V() */ / - 4+r*10]) /* end E() */ - )/4, - (strcmp(ss + - V(i), - "main") /* end strcmp() */ ? - ru() : - 0) - ; -} - -run(){ - a= - E(5[B + - V(010) /* end V() in E() */ - /4+r*10]) /* end E() */, - ru(); -} -E(DX) -{ - return *z /* z at this point appeared to be '\002' if I (Cody) recalls correctly */ ? - DX : DX <<030 | - (DX&65280)<<010 | - DX>>8 & 65280 | - DX>>24&0377; -} - -int* K(k) -{ - return L( - E( - k [ - (int*)V(17) /* end V() in E() in L() */ - ]) /* end E() in L() */ , - 0) /* end L() */; -} - - -int -pain(char *ck, char **k) -{ -return (z ? - (stat(M,&t) ? - P+= a+'{' ? - 0 : 3 - : execv(M,k), /* note: M appears to be empty here but this used to be recursive main() - so M might have been modified on additional calls */ - a=(signed char) E(*L(P++,0)), - i=P, - y=(signed char)E(*L(P++,0)) - &255, - sprintf(Q, - y/'@'-3?"*L(V(%d+%d)+%d,0)":"R[%d]", - (y&7),'\r', - y/0100-1 ? - 0 - : - (signed char)E(*L(P++,0)) - ), /* ends sprintf() on line 175 */ - (a+127&&a+'}' && - a+1 ? - (a+61 && - a+24 && - a + 025 ? - (P = a+'H' && - a%061 - <=0 ? - P - : - i, - d+= - sprintf(d, - a>0? - " R[%d]=E(~-E(R[%d])),\0 U R[%d],\0 R[%d] O,\0 U %d,\0R[%d]=0," + -(a&'8') - *3 - :a <- 'c' - ? - " %d, %c%s = R[%d], \0 %d, *R=%c%s==R[%d], \0 R[%d]=(int)%c%s," - - a%'w' - %'j' - *5 - : - "%d,%d,%s=%d,", - a>0 ? - a-'h' - ? - a-49 - ?a&7 - : - (y/010&7) - : - (P+=4, - *L(P-4,0) - ) - : - (y/010&7), - a>0 ? a&7 - : - "& "[a%3%2+1], - a+72 ? - Q:"*R", - a>0|a<-99? - (y/010&7) - : - (P+=4, - *L (P-4,0) - ), - 0 ) /* end sprintf on line 195 */ - ,(char* ) P) - : - (P=i,i=a+61 ? - a+21 - ?E((P+=4,*L(P-4,0))) - : - (signed char)E(*L(P++,0)) - :0, - d+=sprintf( d, - a%' '+ - 29+ - "P O,\0 U %d,P=%d,", - P, - P+i, - 0, - 0, - 0 ), /* ends sprintf() on 242 */ - (char* ) P, - system( - (sprintf(d,"A'",k[1]), - b) /* sprintf IN system() on line 252 (above line) */ - ) /* ends system on 252 */ - ,z)): - (n= - (y/010&7) - -4 - ? - (y/010&7) - %5-1 - ? - a+127 - ? (signed char)E( - *L(P++,0) - ) - :(P+=4, - *L(P-4,0) - ) : - 0 - : - (Scan(), - *( (char*)index(ss+ - V(i ), /* V(i ) in index from line 274 */ - 0100)/*ends index() on line 274 */ - ?(char*)index(ss + - V(i ), /* V(i) in index() on line 277 */ - 0100) - : - d) - =0, - (int)(ss+ - V(i) - )), - (y/010&7) %5 - <2? - d+=sprintf( d, - (y/010&7)%5 - ?" %s=E(~-E(%s)), \0 U %s," - +4*(y/010&7) - : - "%s=E(E(%s)%c%d),", - Q, - Q, - "+ - "[(y/010&7)], - n, - 0 ) /* ends sprintf() on line 288 */ - ,(char* ) P - : - (a=(signed char) E( - *L(P++,0) /* *L() in E() from line 301 */ - ) /* ends E() on line * 301 */ - -'u' - ? - '!' - :'=', - d+=sprintf(d, - (y/010&7) - -4 - ?"P=%d%c=%s?%d:%d," - : "*R=E(((int(*)(l,l,l))%s)(K(1),K(2),K(3))),P O,", - n, - a, - Q, - P, - P+(signed char)E ( - *L(P++,0) /* *L() in E() in sprintf() from line 308 */ - ) - ) /* ends sprintf() on line 308 */ - - ,(char* ) P, - system( - (sprintf(d,"A'",k[1]), /* ends sprintf() in system() on line 323 */ - b)) /* ends system() on line 323 but appears that b is what's system()d */ - ,z) - ) - ) - ) - : - (Run( - (z=(char*)&ck, - stat(k[1],&t), /* stat() in Run() on line 331 */ - B = - (l)mmap(0,i=t.st_size,PROT_READ|PROT_WRITE,1, - open(k[1],2),0) /* open() in mmap() (line 325) in Run() (line 331 */ - ) - ), /* ends Run() on line 331 */ - (((B+13)[4] - = - E(B+i/4), - run(), - P = V(-~i), - (B+13)[4] = - E( - V(17)- /* V() in E() on line 345 */ - 4),*(int*)V(021))), /* second V() in E() on line 345 */ - sprintf(M, - ".%s%d",k[1],P), /* ends sprintf() on line 348 */ - d+=sprintf( d, - "%s %s '-DX=A(%s)' -o %s '-Dmagic=", - "cpp -std=gnu99 -Wall -Wextra -pedantic -Winfinite-recursion -Wno-bitwise-conditional-parentheses -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int -Wno-int-to-pointer-cast -Wno-macro-redefined -Wno-pedantic -Wno-pointer-to-int-cast -Wno-return-type -Wno-string-plus-int -Wno-bitwise-op-parentheses -Wno-format -Wno-format-extra-args -Wno-int-conversion -Wno-unused-parameter -Wno-unsequenced -E \"-DA(X)=#X\"", /* end first string in sprintf() %s from line 350 */ - - "anonymous.c", /* second string in sprintf() on line 350. - note it appears to run the above cpp on anonymous.c ? */ - "cpp -std=gnu99 -Wall -Wextra -pedantic -Winfinite-recursion -Wno-bitwise-conditional-parentheses -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int -Wno-int-to-pointer-cast -Wno-macro-redefined -Wno-pedantic -Wno-pointer-to-int-cast -Wno-return-type -Wno-string-plus-int -Wno-bitwise-op-parentheses -Wno-format -Wno-format-extra-args -Wno-int-conversion -Wno-unused-parameter -Wno-unsequenced -E \"-DA(X)=#X\"", - /* above line is third string in sprintf() on line 350 */ - M, /* fourth string in sprintf() on 350, possibly running cpp from above line on M */ - fflush(0) ), /* end sprintf() on line 350 */ - (char* ) P) /* ends Run() on line 331 */ - ); - -} -int -main (int cka, char **k) -{ - char *ck = (char *)cka; - - /* main calls exit() which calls E() which has a call to pain() if - ck ((char *)cka - was originally a char * as first arg to main()) with - second arg being argv or k. Otherwise it calls system() with a convoluted sprintf() */ - exit (E( - (ck?pain((char*)cka,k): /* if ck ((char *)argc which used to be a char *) run pain() which used to be main() */ - system( /* otherwise if !ck call system() with ... */ - (sprintf(M,"rm -f .%s*",k[1]),M) /* sprintf() writing to M a convoluted string including itself (which - iirc is undefined but perhaps it's my tiredness: I can't think of what - the '*' does in sprintf()) */ - ), /* ends system() from line 374 */ - z,*(B+13))) /* end E() which calls either pain() or system() (which calls sprintf() on M) from line 372 from exit() on line 372 */ - - ); - -} /* end main() */ diff --git a/2001/anonymous/try.me.sh b/2001/anonymous/try.me.sh index f1d33879a..36f6f7ff3 100755 --- a/2001/anonymous/try.me.sh +++ b/2001/anonymous/try.me.sh @@ -4,18 +4,11 @@ make clobber all >/dev/null 2>&1 TARGET="anonymous.ten" - -if [[ ! -f "$TARGET" ]]; then - TARGET="anonymous.ten.32" - echo "cannot compile anonymous.ten.c as 32-BIT, trying anonymous.ten.32 as backup" - echo "if your system cannot run 32-bit ELF binaries this might fail" -fi - if [[ -f "$TARGET" ]]; then echo "$ cp $TARGET anonymous.ten.bak" 1>&2 cp "$TARGET" anonymous.ten.bak echo "$ ./anonymous $TARGET" 1>&2 - ./anonymous.sh "$TARGET" + ./anonymous "$TARGET" echo "$ ./$TARGET" 1>&2 ./"$TARGET" echo "$ diff -s $TARGET anonymous.ten.bak" 1>&2 @@ -33,6 +26,6 @@ if [[ -f "$TARGET" ]]; then echo "$ diff -s ten.txt ten.bak.txt" 1>&2 diff -s ten.txt ten.bak.txt else - echo "cannot compile anonymous.ten.c as 32-bit and backup file does not exist, sorry." + echo "cannot compile anonymous.ten.c as 32-bit, sorry." exit 1 fi diff --git a/bugs.md b/bugs.md index e4c50d742..e7007445b 100644 --- a/bugs.md +++ b/bugs.md @@ -1103,36 +1103,10 @@ fire](https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing))! :-) ). # 2001 ## [2001/anonymous](2001/anonymous/anonymous.c) ([README.md](2001/anonymous/README.md)) -## STATUS: might not be completely functional - can you confirm? - -[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed a segfault in -both the entry and the supplementary program (both segfaulted) and it appears to -work in that it does do what the author suggests. However there is an -inconsistency in remarks about whether it should _execute_ the program it's run -on after modification or if it should _only modify_ it. With Cody's fix it -modifies the program, only works on 32-bit ELF binaries (by design) and the -binary still works but we do not know if it's supposed _additionally_ run it. -Can you confirm? Please let us know! - ## STATUS: INABIAF - please **DO NOT** fix [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this so that it -doesn't segfault and so that it at least _does_ modify the target executable (but see -below) but he's not sure if it's _also_ supposed to run the program; upon a second -look at the README.md file it _appears_ that it's supposed to but the binary at least -is modified (hopefully in the correct way that the entry is supposed to do but -this cannot be confirmed), at least if 32-bit ELF (that's the only file type -it's supposed to modify). - -The [anonymous.sh](2001/anonymous.sh) script, run by -[2001/anonymous/try.me.sh](2001/anonymous/try.me.sh), is for now a workaround -(until it can be ascertained - and addressed if necessary and possible - if the -program is supposed to run the target executable or not); the script runs the -program on the target executable and then runs the target executable after -modification which in effect emulates the original program (if indeed it did run -the executable as seems likely). - -So again this might be only partially resolved but for now this is unknown. +doesn't segfault and then also fixed the functionality of it (but see below). Cody also fixed the [anonymous.ten.c](2001/anonymous/anonymous.ten.c) program (it also segfaulted) but notes that it **MUST** be compiled as a **32-bit ELF @@ -1143,16 +1117,17 @@ you run it on the compiled [anonymous.ten.c](2001/anonymous/anonymous.ten.c) but if nothing else it will not modify the target executable (this part of the fix at least should be correct). -In fact if you run the program on a 32-bit ELF binary (say compiled from another -system) under macOS it won't even touch it (it shouldn't crash however). - The file `2001/anonymous/anonymous.ten.32` is a pre-compiled [2001/anonymous.ten.c](2001/anonymous.ten.c) as a 32-bit ELF binary in case you can run ELF binaries but cannot compile 32-bit binaries. Other BSD Unices were not tested. -BTW: if something is _partially_ resolved is it impartial ? :-) +## STATUS: INABIAF - please **DO NOT** fix + +Note also that if you don't specify a file or you specify a non-32-bit ELF file +this program will very likely crash or do something strange like slaughter the +elves of Imladris :-( ## [2001/bellard](2001/bellard/bellard.c) ([README.md](2001/bellard/README.md)) ## STATUS: doesn't work with some platforms - please help us fix From 59b58eb33d529eb01d5a85c343df063b90677dc7 Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Fri, 19 May 2023 10:48:51 -0700 Subject: [PATCH 7/8] Remove unneeded #included files in 2001/anonymous These were part of debugging the reason execv() did not run the target program but I forgot to remove them once I found out it was a text file busy error. Also added to README.md another git diff to try as it might be instructive. --- 2001/anonymous/README.md | 1 + 2001/anonymous/anonymous.c | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/2001/anonymous/README.md b/2001/anonymous/README.md index df2b1859a..370441df9 100644 --- a/2001/anonymous/README.md +++ b/2001/anonymous/README.md @@ -53,6 +53,7 @@ git diff d2a42f42e8f477f29e9d5ed09ce2bb349eaf7397..93aa8d79f208dcccc3c5a2370a727 git diff 93aa8d79f208dcccc3c5a2370a727b5cf64e9c53..c48629017117379a52b1a512ef8f2593ca9569c8 anonymous.c git diff c48629017117379a52b1a512ef8f2593ca9569c8..efdee208a2bc650256637b9357ddfd0de82d2f41 anonymous.c git diff efdee208a2bc650256637b9357ddfd0de82d2f41..e9a3f77ea3b209e63ac3f9c06bb84ad86e5ea706 anonymous.c +git diff d2a42f42e8f477f29e9d5ed09ce2bb349eaf7397..2159caec4677e0f25ad704a74e04c8196fd6c343 anonymous.c ``` Thank you Cody for your assistance! diff --git a/2001/anonymous/anonymous.c b/2001/anonymous/anonymous.c index 80ff30185..50b6779bc 100644 --- a/2001/anonymous/anonymous.c +++ b/2001/anonymous/anonymous.c @@ -5,8 +5,6 @@ #include #include #include -#include -#include #define l int* #define F char From becf4a3e8de5c2fcd22278f1e7b0963f1a137a2e Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Fri, 19 May 2023 10:54:25 -0700 Subject: [PATCH 8/8] Typo fix in todo.md --- todo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/todo.md b/todo.md index 879afdd2f..abefed55f 100644 --- a/todo.md +++ b/todo.md @@ -44,7 +44,7 @@ fix any issues. has some kind of record of what he's done but these can be added later by having a list of years to check. * NOTE: as of 03 May 2023 years up through most of 2011 have been checked - except that a few year I am pretty sure I did not check typos (I'd say about + except that a few years I am pretty sure I did not check typos (I'd say about 1987 or 1988 through 1995 should be rechecked for typos). It's very likely I won't keep this updated until it's finished but I wanted to note it now.