diff --git a/1993/plummer/.gitignore b/1993/plummer/.gitignore
index 0ce7bbccf..6d2000905 100644
--- a/1993/plummer/.gitignore
+++ b/1993/plummer/.gitignore
@@ -1 +1,2 @@
plummer
+plummer.alt
diff --git a/1993/plummer/Makefile b/1993/plummer/Makefile
index 34246f868..d67c1bdd9 100644
--- a/1993/plummer/Makefile
+++ b/1993/plummer/Makefile
@@ -57,7 +57,7 @@ ARCH=
# Defines that are needed to compile
#
-CDEFINE=
+CDEFINE= -DZ=200
# Include files that are needed to compile
#
@@ -112,8 +112,8 @@ OBJ= ${PROG}.o
DATA=
TARGET= ${PROG}
#
-ALT_OBJ=
-ALT_TARGET=
+ALT_OBJ= ${PROG}.alt.o
+ALT_TARGET= ${PROG}.alt
#################
@@ -136,6 +136,9 @@ ${PROG}: ${PROG}.c
alt: data ${ALT_TARGET}
@${TRUE}
+${PROG}.alt: ${PROG}.alt.c
+ ${CC} ${CFLAGS} $< -o $@ ${LIBS}
+
# data files
#
data: ${DATA}
diff --git a/1993/plummer/README.md b/1993/plummer/README.md
index cfbab66a7..b8c9c4771 100644
--- a/1993/plummer/README.md
+++ b/1993/plummer/README.md
@@ -11,6 +11,7 @@ US
make all
```
+
## To run:
```sh
@@ -22,6 +23,42 @@ where:
- number is a number (try 21701)
- arg is any argument
+NOTE: an alternate version exists. See Alternate code section below.
+
+## Try:
+
+```sh
+./plummer 01234567890876543210 xxx
+
+```
+
+### Alternate code:
+
+[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) added an alternate
+version which uses `usleep()` so you can see what is happening with faster
+systems. To use:
+
+
+```sh
+make alt
+```
+
+Use `plummer.alt` as you would `plummer`.
+
+If you wish to change the time to sleep (default `200`) you can do so like:
+
+```sh
+make clobber CDEFINE="-DZ=50" alt
+```
+
+#### Try:
+
+```sh
+./plummer.alt xyzzyzzyx 5555
+```
+
+Thank you Cody!
+
### INABIAF - it's not a bug it's a feature :-)
This entry will very likely crash or do something else if you run it without
@@ -41,32 +78,31 @@ specifies the number to start counting from and uses leading `0`s to
indicate the number of digits, the second argument can be anything
but must be present.
-Variable names are single characters chosen for their similarity to
-other characters (O for 0, l for 1, S for 5 in some fonts, and _
-for ... well nothing really, but it is easy to miss). To prevent
-the need for `strlen()`, the fact that argv is laid out sequentially
-is exploited (ie. `argv[i + 1] == argv[i] + strlen(argv[i]) + 1`).
-This is not portable (by the books), but it seems to work
-everywhere I try (actually, for VMS, that only holds for `i > 1`).
-Also, I depend on the fact that a carriage return causes the line
-just written to be overwritten. `lint` (and most compilers) complain
-that there is no control path leading to a return from `main()`. At
-125 characters, it still fits on a single line (for those of us who
-don't mind ruining our eyes with 132 column screens).
+Variable names are single characters chosen for their similarity to other
+characters (`O` for `0` (zero), `l` for `1` (one), `S` for `5` (five) in some
+fonts, and `_` for ... well nothing really, but it is easy to miss). To
+prevent the need for `strlen()`, the fact that argv is laid out sequentially is
+exploited (i.e. `argv[i + 1] == argv[i] + strlen(argv[i]) + 1`). This is not
+portable (by the books), but it seems to work everywhere I try (actually, for
+VMS, that only holds for `i > 1`). Also, I depend on the fact that a carriage
+return causes the line just written to be overwritten. `lint` (and most
+compilers) complain that there is no control path leading to a return from
+`main()`. At 125 characters, it still fits on a single line (for those of us
+who don't mind ruining our eyes with 132 column screens).
The first statement points the base of `l` (the argument vector) to
be the first argument by incrementing it. It then assigns `O` to
point to the character before the first character of the second
-argument which also happens to be the NULL termination of the first
+argument which also happens to be the NUL termination of the first
argument. `*O` gets a `\r` assigned to it. Finally `0` is assigned to
the first character of the second argument which has the effect of
-NULL terminating the first argument after the carriage return had
-removed its NULL termination. I really tried to make the last part
+NUL terminating the first argument after the carriage return had
+removed its NUL termination. I really tried to make the last part
of that statement part of the original expression, but the best I
could do was attach it with a comma (against the advice of K&R).
The for loop runs the next for loop continuously (actually until
the machine crashes or the user gets tired of seeing the
-counting). The next for loop is the meat of the program. In the
+counting). The next for loop is the meat of the program. In the
initialization statement, the string pointed to by `l` (the first
argument containing the digits used for counting followed by a `\r`)
is printed, and `_` is started at the least significant digit in the
diff --git a/1993/plummer/plummer.alt.c b/1993/plummer/plummer.alt.c
new file mode 100644
index 000000000..6bb7da8ac
--- /dev/null
+++ b/1993/plummer/plummer.alt.c
@@ -0,0 +1 @@
+char*_,*O;main(S,l)char**l;{*(O=*(l+++S-1)-1)=13,*l[1]=0;for(;;)for(printf(*l),_=O-1,usleep(Z);_>=*l&&++*_>(S+*O+S)*S;*_--=(S+*O)*S);}
diff --git a/1995/dodsond2/README.md b/1995/dodsond2/README.md
index 3cdde3163..fc6e87507 100644
--- a/1995/dodsond2/README.md
+++ b/1995/dodsond2/README.md
@@ -1,9 +1,6 @@
# Best Game
Don Dodson
-AG Communication Systems
-4101 W Union Hills Dr #1104
-Glendale, AZ 85308
US
## To build:
@@ -29,11 +26,10 @@ attempt.
### Interactive 3D Maze
-Step into a randomly generated 3D maze and try to get out alive!
-Use the vi movement keys (hjkl) to move on a level, and u or d
-to move (u)p or (d)own from a position with a U or D on the
-map. To simulate the feeling of being in an unknown labyrinth,
-areas which you have not visited cannot be seen.
+Step into a randomly generated 3D maze and try to get out alive! Use the vi
+movement keys (`hjkl`) to move on a level, and `u` or `d` to move (u)p or (d)own
+from a position with a `U` or `D` on the map. To simulate the feeling of being
+in an unknown labyrinth, areas which you have not visited cannot be seen.
Reach the north-west left corner of level 1 to exit.
diff --git a/2000/thadgavin/.gitignore b/2000/thadgavin/.gitignore
index c7930e680..5aeb20c6b 100644
--- a/2000/thadgavin/.gitignore
+++ b/2000/thadgavin/.gitignore
@@ -1 +1,2 @@
thadgavin
+thadgavin_sdl
diff --git a/2004/gavin/.gitignore b/2004/gavin/.gitignore
index 641d56fe3..3b272d8b3 100644
--- a/2004/gavin/.gitignore
+++ b/2004/gavin/.gitignore
@@ -1,6 +1,5 @@
-fs.tar
gavin
-kernel
sh
vi
gavin.o
+fs/
diff --git a/2004/gavin/README.md b/2004/gavin/README.md
index 1bfbdd932..d5ead237c 100644
--- a/2004/gavin/README.md
+++ b/2004/gavin/README.md
@@ -25,7 +25,7 @@ su
```
Make a floppy with an ext2 filesystem (`mke2fs /dev/fd0` replacing `fd0` with
-whatever the floppy device is!), mount it under `/mnt/floppy`. Then:
+whatever the floppy device is!), mount it under `/mnt/floppy` and then:
```sh
@@ -47,13 +47,13 @@ Move the window away from the corner.
vi gavin.c
```
-Scroll the file with up-arrow and down-arrow
+Scroll up and down the file with up-arrow and down-arrow.
```sh
sh
```
-Can have several shell windows:
+You can have several shell windows:
```sh
vi README.md
@@ -62,6 +62,15 @@ vi README.md
Press and hold any key.
+### Alternate method
+
+[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.
+
+Thank you Yusuke!
+
+
## Judges' remarks:
Over the years, we've seen a program that dumps core if executed on a "wrong"
diff --git a/2004/gavin/fs.tar b/2004/gavin/fs.tar
new file mode 100644
index 000000000..35a03f8bf
Binary files /dev/null and b/2004/gavin/fs.tar differ
diff --git a/2004/gavin/kernel b/2004/gavin/kernel
new file mode 100644
index 000000000..7f38294bb
Binary files /dev/null and b/2004/gavin/kernel differ
diff --git a/2014/birken/README.md b/2014/birken/README.md
index 8a14cb08f..68c105baa 100644
--- a/2014/birken/README.md
+++ b/2014/birken/README.md
@@ -27,6 +27,7 @@ make
./prog
./prog http://127.0.0.1:1701
+```
## Judges' remarks:
diff --git a/2014/maffiodo2/README.md b/2014/maffiodo2/README.md
index 220512a45..7da205bd9 100644
--- a/2014/maffiodo2/README.md
+++ b/2014/maffiodo2/README.md
@@ -24,17 +24,19 @@ cat image.rgb | ./prog ' .,:;!$#@'
## Judges' remarks:
-On the face of it :-) given what this program one might wonder what makes this winner special.
-But when you realize the source is small enough to tweet on twitter you understand.
+On the face of it :-) given what this program does one might wonder what makes
+this winner special. But when you realize the source is small enough to tweet
+on twitter you understand.
-Who will be the first to tweet this source? How many re-tweets will such tweet get?
-And how many people will really understand the tweet?
+Who will be the first to tweet this source? How many re-tweets will such tweet
+get? And how many people will really understand the tweet?
## Author's remarks:
### Remarks
-This program convert an image to an ASCII ART. The program reads a raw RGB image from **stdin** and print the ASCII ART to **stdout**.
+This program convert an image to an ASCII ART. The program reads a raw RGB image
+from **stdin** and print the ASCII ART to **stdout**.
The build process will raise some warnings about:
@@ -45,7 +47,8 @@ The program crash if run without parameters.
### Screen size
-If you have a terminal geometry than if different from the common 80x25 you can modify the *output width* by changing the value of the first variable:
+If you have a terminal geometry than is different from the common 80x25 you can
+modify the *output width* by changing the value of the first variable:
```c
d=80,
diff --git a/2015/yang/README.md b/2015/yang/README.md
index 283dc2743..e61a224b0 100644
--- a/2015/yang/README.md
+++ b/2015/yang/README.md
@@ -1,7 +1,7 @@
# Most Pointed Reaction
- Don Yang
-
+Don Yang
+
## To build:
@@ -65,7 +65,7 @@ echo IOCCC | ./fuuko_cpp98 > output_cpp98.c
```
Don't like dango either? Use a C++11 compiler to get just circles (or
-swiss cheese, if you prefer that).
+Swiss cheese, if you prefer that).
```sh
g++ -O3 -std=c++11 fuuko.c -lm -o fuuko_cpp11
@@ -106,7 +106,7 @@ Fuuko has been tested under these environments:
The most obscure parts are in detecting the subtle differences in
different dialects. The standard committees put a lot of effort into
-avoiding "quiet changes", but Fuuko is still able exploit a few of
+avoiding "quiet changes", but Fuuko is still able to exploit a few of
those. It should be an interesting exercise for the reader to figure
how she did it.