diff --git a/1995/garry/.gitignore b/1995/garry/.gitignore index 49349a9ab..114af9271 100644 --- a/1995/garry/.gitignore +++ b/1995/garry/.gitignore @@ -1 +1,2 @@ garry +garry.alt diff --git a/1995/garry/Makefile b/1995/garry/Makefile index 02c7ed5e1..be0af1e81 100644 --- a/1995/garry/Makefile +++ b/1995/garry/Makefile @@ -114,8 +114,8 @@ OBJ= ${PROG}.o DATA= TARGET= ${PROG} # -ALT_OBJ= -ALT_TARGET= +ALT_OBJ= ${PROG}.alt.o +ALT_TARGET= ${PROG}.alt ################# diff --git a/1995/garry/README.md b/1995/garry/README.md index fac3078bd..32d4a9e83 100644 --- a/1995/garry/README.md +++ b/1995/garry/README.md @@ -10,6 +10,7 @@ Germany make all ``` + ## To run: ```sh @@ -25,16 +26,32 @@ make all ./garry < README.md ``` +### Alternate code: + +While it may not have been the intention of the author, the +judges noted that the C pre-processed version (with the `#include`s +left intact) looked very much like a rat "dropping core". See +[garry.alt.c](garry.alt.c) and judge for yourself! + +[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed it +so that it will compile with modern compilers. The problem was a missing `int` for +the `f` variable. He felt it was important that it works because the layout does +indeed look to him like a rat is dropping core. Thank you Cody! + +To use try: + +```sh +make alt +``` + +Use `garry.alt` as you would `garry` above. + + ## Judges' remarks: -While it may not have been the intention of the submitter, the -judges noted that the C pre-processed version (with the `#include`s -left intact) looked very much like a rat "dropping core". See -`garry.cpp` and judge for yourself! - The author was kind enough to provide a less obfuscated version of -the source called `garry.fmt.c`. +the source called [garry.fmt.c](garry.fmt.c). ## Author's remarks: diff --git a/1995/garry/garry.cpp b/1995/garry/garry.alt.c similarity index 94% rename from 1995/garry/garry.cpp rename to 1995/garry/garry.alt.c index c97098d53..84501c055 100644 --- a/1995/garry/garry.cpp +++ b/1995/garry/garry.alt.c @@ -16,7 +16,7 @@ !c){return(y);}a=y;b=z;while(*a){if(*a!=D) *b++=*a ++;else{a++;c=strchr(a,D);if(c){*c=0;;if(strchr(a,32 )){*c=D;*b++=D;}else{;v=getenv(a);if(v){while(*v){if(* - v!=92)*b++=*v++;else{f=0;v++;if(*v<48||*v>57 + v!=92)*b++=*v++;else{int f=0;v++;if(*v<48||*v>57 )*b++=92;else{f=(*v++)-48;;if(*v<48||*v >57)*b++=f;else{f=(f<<3)+(*v++)-48;;*b++=( (*v<48||*v>57)?f:((f<<3)+(*v++)-48));}}}