diff --git a/2015/muth/machine_gcd.h b/2015/muth/machine_gcd.h
index b1b4c3796..660c5e187 100644
--- a/2015/muth/machine_gcd.h
+++ b/2015/muth/machine_gcd.h
@@ -1,7 +1,7 @@
/*
* greatest common divisor
*
- * based on http://www.ioccc.org/2001/herrmann1.gcd
+ * based on http://www.ioccc.org/2001/herrmann1/herrmann1.gcd
*/
// try tape_15_50.h or tape_77_55.h
diff --git a/2015/muth/machine_times2.h b/2015/muth/machine_times2.h
index c7dbd7fbc..0f6fa100f 100644
--- a/2015/muth/machine_times2.h
+++ b/2015/muth/machine_times2.h
@@ -1,7 +1,7 @@
/*
* multiply by 2
*
- * based on http://www.ioccc.org/2001/herrmann1.times2
+ * based on http://www.ioccc.org/2001/herrmann1/herrmann1.times2
*/
// try tape_five.h
diff --git a/2018/burton2/discrepancies b/2018/burton2/discrepancies
index 86f2fa388..7ad219ddf 100644
--- a/2018/burton2/discrepancies
+++ b/2018/burton2/discrepancies
@@ -3,20 +3,20 @@ The values below are the field-by-field difference iocccsize - ioc.
cl: lines, cw: words, cc: chars, ci: rule2, ts: saved, kw: keywords, ks: kw_saved
cl 0 cw -4 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/1986/pawka.c
-cl -45 cw -55 cc -617 ci -463 ts -85 kw -26 ks -69 src/obc/1990/theorem.c
+cl -45 cw -55 cc -617 ci -463 ts -85 kw -26 ks -69 src/obc/1990/theorem/theorem.c
ioc is correct; cl is correct even in compat (91) due to comments eating newlines
iocccsize fails at "z;/*/", eating everything until the following "/**/main("
looks to be due to mis-identification of a comment closing block as opening block
-cl 0 cw -2 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/1991/westley.c
-cl 0 cw -3 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/1992/adrian.c
-cl 0 cw -3 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/1992/adrian.orig.c
-cl 0 cw -1 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/1994/shapiro.c
-cl 0 cw -2 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/1996/gandalf.c
-cl 0 cw -1 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/1996/schweikh1.c
-cl 0 cw -2 cc 0 ci -2 ts 0 kw 1 ks 2 src/obc/1998/df.c
+cl 0 cw -2 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/1991/westley/westley.c
+cl 0 cw -3 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/1992/adrian/adrian.c
+cl 0 cw -3 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/1992/adrian/adrian.orig.c
+cl 0 cw -1 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/1994/shapiro/shapiro.c
+cl 0 cw -2 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/1996/gandalf/gandalf.c
+cl 0 cw -1 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/1996/schweikh1/schweikh1.c
+cl 0 cw -2 cc 0 ci -2 ts 0 kw 1 ks 2 src/obc/1998/df/df.c
iocccsize counts as keyword __##int##__, and saving two characters
but int is not a plausible keyword
-cl 0 cw -1 cc 3 ci 2 ts 1 kw 0 ks 0 src/obc/2001/herrmann1.c
+cl 0 cw -1 cc 3 ci 2 ts 1 kw 0 ks 0 src/obc/2001/herrmann1/herrmann1.c
the text:
d M Y(O)/* state to */
d
@@ -28,14 +28,14 @@ cl 0 cw -1 cc 3 ci 2 ts 1 kw 0 ks 0 src/obc/2001/herrmann1.c
* E E * ,/) F
but iocccsize counts this as * E E *,/) F, whereas ANSI C says comments are
replaced with a single space equivalent (non-portable token-paste with comments)
-cl 0 cw -2 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/2004/arachnid.c
-cl 0 cw -2 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/2004/arachnid.orig.c
-cl 0 cw 0 cc 0 ci -4 ts 0 kw 2 ks 4 src/obc/2004/hoyle.c
-cl 0 cw 0 cc 0 ci -4 ts 0 kw 2 ks 4 src/obc/2004/hoyle.orig.c
+cl 0 cw -2 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/2004/arachnid/arachnid.c
+cl 0 cw -2 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/2004/arachnid/arachnid.orig.c
+cl 0 cw 0 cc 0 ci -4 ts 0 kw 2 ks 4 src/obc/2004/hoyle/hoyle.c
+cl 0 cw 0 cc 0 ci -4 ts 0 kw 2 ks 4 src/obc/2004/hoyle/hoyle.orig.c
ioccccsize counts as two keywords the token-pasted int##if (e.g int1)
thus the kw 2, and another bug in iocccsize counts #if as a keyword to 1
thus saving 2 bytes on int, and 2 more on #if, when neither is a plausible keyword
-cl 0 cw -1 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/2004/omoikane.c
+cl 0 cw -1 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/2004/omoikane/omoikane.c
cl 0 cw -1 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/2005/chia/chia.c
cl 0 cw -1 cc 0 ci 0 ts 0 kw 0 ks 0 src/obc/2005/mikeash/mikeash.c
cl 0 cw 0 cc 0 ci 1 ts 1 kw 0 ks 0 src/obc/2005/toledo/toledo.c
diff --git a/2020/ferguson2/hint.text b/2020/ferguson2/hint.text
index 2ac448fd4..269fca36f 100644
--- a/2020/ferguson2/hint.text
+++ b/2020/ferguson2/hint.text
@@ -660,8 +660,8 @@ don't think there need be any addition to the recode program - at least not
that.
-[1992 Worst Abuse of the Rules]: http://www.ioccc.org/1992/nathan.hint
-[1998 ASCII / Morse code translator]: http://www.ioccc.org/1998/dorssel.hint
+[1992 Worst Abuse of the Rules]: http://www.ioccc.org/1992/nathan/nathan.hint
+[1998 ASCII / Morse code translator]: http://www.ioccc.org/1998/dorssel/dorssel.hint
[2014 Morse audio transcoder]: http://www.ioccc.org/2014/vik/hint.text
[Enigma Message Procedures]: http://users.telenet.be/d.rijmenants/en/enigmaproc.htm
[Interactive Enigma Machine]: http://enigmaco.de/enigma/enigma.html
diff --git a/faq.html b/faq.html
index 862685544..e78bf0a5b 100644
--- a/faq.html
+++ b/faq.html
@@ -445,7 +445,7 @@ Now, Microsoft makes AT&T look mild and kind in comparison. :-( (IMHO) ).
BTW:
See the story about the ''
Bill
+HREF="/1993/cmills/cmills.hint">Bill
Gates'' award. :-)
diff --git a/winners.html b/winners.html
index c3931c2fd..1a47335f0 100644
--- a/winners.html
+++ b/winners.html
@@ -76,7 +76,7 @@ Contest
arachnid - Curses maze displayer/navigator with only line-of-sight visibility
burley - A Poker game
gavare - A ray tracer
gavin - Mini-OS
hibachi - A CGI capable HTTP server
hoyle - Curses based polynomial graphing with auto-scale
jdalbec - Conway's look'n'say sequence split into elements
kopczynski - OCR of 8, 9, 10 and 11
newbern - Renders arbitary bitmapped fonts
omoikane - A CRC inserter
schnitzi - Editor animation
sds - Space/tab/linefeed steganography
vik1 - X Windows car racing game
vik2 - Calculates prime numbers using only CPP
bellard - A C subset programming system for x86
cheong - Computes arbitrary-precision square root
coupard - Outputs current time as a sound file
ctk - A driver game
dgbeards - Plays suicide chess
herrmann1 - A Turing machine using preprocessor
herrmann2 - A SIRDS/3D generator, the source is SIRDS/3D itself
jason - An Adventure-like game
kev - A Pong game across network
ollinger - Prints primes with a sieve graph
rosten - Makes X mouse pointer have inertia or anti-inertia
schweikh - Shell glob matcher
westley - Sorts/scrambles, outputs as text/punch-cards
williams - Plays X-based missile command
bellard - Prints M6972593 (2^6972593-1) by Modular Fast Fourier Transform
bmeyer - An image compressor
briddlebane - Verbally abuses the user
dhyang - Saitou Hajime image that prints a prog that prints a prog ...
dlowe - A dc-style calculator that uses embedded Perl
jarijyrki - An X-based spreadsheet program with graphing features!
natori - Phase of the moon
primenum - Source with English words that looks like a prime tester
rince - Plots the positions of the four Galilean moons of Jupiter
robison - Highly Compressed Program for Playing Hygienic Checkers
schneiderwent - Prints the aproximate time in words
thadgavin - Prints a dazzeling moving image under multiple interfaces
tomx - C source, shell program and Makefile
bas1 - Outputs a gziped 3D beam maze in Postscript
bas2 - determines the size of stdin under IOCCC sizing rules
chaos - Rotates and zooms an object using ASCII graphics
df - A word guessing game
dlowe - Pootifies stdin (useful to view Microsoft html files)
dloweneil - A very addictive ASCII poot game
dorssel - ASCII / Morse code translator
fanf - Translates Lambda expressions into combinator expressions
schnitzi - Prints a C program that sorts arguments using strange functions
schweikh1 - Tests to see if your compiler and headers are standard
schweikh3 - Finds duplicate files that waste disk space
tomtorfs - CRC generator
dalbec - Generator of strong probable-primes to a given base
eldby - Flying 3D spheres in an ASCII display
gandalf - Displays the ASCII and 8 bit character tables
huffman - Braille to ASCII and vice versa
jonth - X based dual player tic-tac-toe game
rcm - Gunzip equivalent
schweikh1 - Calculates Easter dates from 1582 to 2199 AD
schweikh2 - Search for a limited class of expressions that equal a constant
schweikh3 - Determins the memory allocation honesty of the OS
westley - Shows the time on clock with a configurable face and style
dodsond1 - Text to "Pig Latin" translator
dodsond2 - Interactive 3D Maze
esde - Searches for words in a file which have the same Soundex code
garry - Environment-expansion and binary output via escaped env vars
heathbar - 16 bit addition the easy/hard way
leo - Output interesting patterns and cycles in PostScript
makarios - Emits the base 8 representation of prime palindromic in base 8
savastio - Infinite-precision factorial calculator
schnitzi - Find divisors: where a core dump is a feature, not a bug
spinellis - Abusing the rules
vanschnitz - Towers of Hanoi via the C pre-processor
dodsond2 - Hunt the Wumpus (gziped source)
horton - Plot cubic equations on a tty
imc - print a random n by n magic square
ldb - print a random line from stdin
schnitzi - flips stdin along a diagonal (source mirrored along diagonal)
shapiro - print time of day on an tty
smr - world's smallest self reproducing program
tvr - interactive fractals for the X Window System
weisberg - prints prime numbers
westley - Adventure/Dungeon like game played via the C pre-processor
cmills - X11 program that shatters and bounces windows
dgibson - plays the game of like using cpp
ejb - tower of Hanoi and patience pizzle
jonth - game of Tetris
leo - game of mastermind (cows & bulls)
lmfjyh - source is the filename, prints value of __FILE__
plummer - prints numbers up to a given value
rince - game state machine language, comes with a number of games
schnitzi - answers questions about English text in a file
vanb - calculator that prints in octal
albert - factors multi-precision numbers with factors < MAX_LONG
ant - make utility
buzzard.1 - print factorial, gcd or prime test using a Babbage-like engine
buzzard.2 - forth-like stack machine
gson - anagram generator
imc - Mandelbrot/Julia drawer
kivinen - X11 space invaders, dropout and knockout games
lush - prints "Hello, World" using error messages
marangon - game to balance a grid of digits to all 5's
nathan - obfuscation by (trivial) encryption (source not exported)
Brian Westley decided to just ``screw the (US) government'' and make the real @@ -3055,17 +3055,17 @@ archive with a copy of the source ported bywestley - print ASCII world map and mark a location by lat/long
8th International Obfuscated C Code Contest (1991)
@@ -3073,75 +3073,75 @@ archive with a copy of the source ported by- README
- Makefile
- rules -
- ansi.mk -
- common.mk +
- ansi.mk +
- common.mk
- 1991.tar.bz2 - all of the data for 1991 (35.4 KiB)
ant - compressed vi-like editor
brnstnd - sorta stack language
buzzard - walk thru a maze from a first person point of view
cdupont - prints a message without vowels
davidguy - plays life on a root window, doesn't need Xlib or include files
The fix is applied to the original entry; merging it with the presented code is left +
The fix is applied to the original entry; merging it with the presented code is left as an exercise for the reader.
As before, you need to turn off access control of the X11 server, and to use a window manager that does not obscure the root window. @@ -3150,42 +3150,42 @@ a window manager that does not obscure the root window.
dds - basic compiler, heavily compressed
fine - rot13s lines of input
rince - game with sprites, boulders, dimonds, and keys
westley - plays tic-tac-toe, compile output for next move, prints board
baruch - short prog to solve N-queens problem
cmills - squished blackjack game
dds - basic interpreter, heavily compressed
dg - rot13 done with strange cpp macros
jaw - compress & atob standins
pjr - the quick brown fox... cppd, structs of functions
scjones - trigraph-abusing self-reproducing program
stig - nested-comment tester (all on command line)
tbr - simple compressed shell, silly layout
theorem - numerically solves the equation y'=f(x,y)
westley - poetic exchange between lovers, prints "luvs me, luvs not"
jar.1 - char*_="Hello world.\n";
jar.2 - lisp interpreter, compressed
ovdluhe - monkey-typer following template, 'APE' identifiers
paul - print fibonacci base 2 by simulating turing machine
robison - apl-expression interpreter (binary), written in C--
roemer - prints e, script-pi shaped layout, _31415 identifiers
tromp - squished tetris
vanb - one-liner prints all subsets of arguments
westley - reversible, rot13able program that reverses and/or rot13s.
isaak - table driven table of the elements; cpp, self-inclusion
phillipps - 'first day of christmas', tables, heavily main() calling
reddy - prints name of 'char *(*(foo[16])();', compressed
robison - print e in any base, uses only --, >=, and while()
spinellis - #include "/dev/tty"
westley - prints '3.141', circle made of '_-_-_-_' in layout
arachnid
burley
gavare
gavin
hibachi
hoyle
jdalbec
kopczynski
newbern
omoikane
schnitzi
sds
vik1
vik2
bellard
cheong
coupard
ctk
dgbeards
herrmann1
herrmann2
jason
kev
ollinger
rosten
schweikh
westley
williams
bellard
bmeyer
briddlebane
dhyang
dlowe
jarijyrki
natori
primenum
rince
robison
schneiderwent
thadgavin
tomx
bas1
bas2
chaos
df
dlowe
dloweneil
dorssel
fanf
schnitzi
schweikh1
schweikh3
tomtorfs
dalbec
eldby
gandalf
huffman
jonth
rcm
schweikh1
schweikh2
schweikh3
westley
dodsond1
dodsond2
esde
garry
heathbar
leo
makarios
savastio
schnitzi
spinellis
vanschnitz
dodsond2
horton
imc
ldb
schnitzi
shapiro
smr
tvr
weisberg
westley
cmills
dgibson
ejb
jonth
leo
lmfjyh
plummer
rince
schnitzi
vanb
albert
buzzard.1
buzzard.2
gson
imc
kivinen
lush
marangon
nathan
westley
ant
brnstnd
buzzard
cdupont
davidguy
dds
fine
rince
westley
baruch
cmills
dds
dg
jaw
pjr
scjones
stig
tbr
theorem
westley
jar.1
jar.2
ovdluhe
paul
robison
roemer
tromp
vanb
westley
isaak
phillipps
reddy
robison
spinellis
westley