move fix thanks a file, update top level html links, rename CONTRIBUTING.md

The fix thank you's have been moved from `README.md` to
`thanks-for-fixes.md`.

**WARNING**: Some mistakes may have been made in doing this.
We presume later changes by others will correct any issues.

The `CONTRIBUTING.md` was renamed `how-to-enter.md`.

A 3rd line of links was added to top level html such as
`contact.html`, `index.html`, `judges.html`, `winners.html`,
and `years.html`.

Improved blank line use in a number (but not all) `README.md` files.
This commit is contained in:
Landon Curt Noll committed 2023-06-06 16:59:53 -07:00
1 parent 23f7ac0a49
commit ac41f07a83
92 files changed
+1326 -761

No files matched your search

+7 -60
View File
@@ -3,75 +3,21 @@
The author wishes to remain anonymous
Great Britain
## To build:
```sh
make
```
## To run:
```sh
./anonymous x86_program
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed both the
supplementary program and the program itself (both of which segfaulted and once
that was fixed only the binary was modified; it was not run but according to the
author's remarks it should be executed). 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, it's a feature_ inherent in what it does!
The following had to be done in order to get this to work:
- `#include <sys/mman.h>` for `mmap()` and `munmap()`.
- have `main()` call another function which is no longer a recursive function;
this prevented `main()` from entering an infinite recursive 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. 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
macOS and linux).
There was one other thing that had to be done though. Since the program used to
recursively call (infinite recursion, seemingly) `main()` and since that cannot
be done what had to be done instead is after the new function (`pain()` since it
was a pain to fix :-) ) returns to first call `munmap()` and `close()` (else one
would get text file busy error) and then the program can call `execv()` again
like the function `pain()` (was in `main()`) did but with a slight change. See
commit `2159caec4677e0f25ad704a74e04c8196fd6c343` for more details.
Notice that the location of the calls to `munmap()` and `close()` followed by
`execv()` _does matter_!
NOTE: there might be educational value to see the progress of this fix; if you
wish to see, try:
```sh
git diff d2a42f42e8f477f29e9d5ed09ce2bb349eaf7397..93aa8d79f208dcccc3c5a2370a727b5cf64e9c53 anonymous.c
git diff 93aa8d79f208dcccc3c5a2370a727b5cf64e9c53..c48629017117379a52b1a512ef8f2593ca9569c8 anonymous.c
git diff c48629017117379a52b1a512ef8f2593ca9569c8..efdee208a2bc650256637b9357ddfd0de82d2f41 anonymous.c
git diff efdee208a2bc650256637b9357ddfd0de82d2f41..e9a3f77ea3b209e63ac3f9c06bb84ad86e5ea706 anonymous.c
git diff d2a42f42e8f477f29e9d5ed09ce2bb349eaf7397..2159caec4677e0f25ad704a74e04c8196fd6c343 anonymous.c
git diff 2159caec4677e0f25ad704a74e04c8196fd6c343..4bc03de321612869aebf855850c6500df95cb6ef anonymous.c
```
Finally to see from start to finish:
```sh
git diff d2a42f42e8f477f29e9d5ed09ce2bb349eaf7397..4bc03de321612869aebf855850c6500df95cb6ef anonymous.c
```
Cody also added a [program](anonymous.bed.c) like [anonymous.ten.c](anonymous.ten.c)
[Ten Green Bottles](https://en.wikipedia.org/wiki/Ten_Green_Bottles) but which
sings [Ten in the Bed](https://allnurseryrhymes.com/ten-in-the-bed/). Why? For
fun and so that there's another program that is a bit different (it uses a `char
For fun and so that there's another program that is a bit different (it uses a `char
*[]` array for example) that this program will still work on. To use:
```sh
@@ -82,7 +28,6 @@ make anonymous.bed.64 # if unable to use -m32
./anonymous.bed.64
```
Thank you Cody for your assistance!
## Try:
@@ -102,6 +47,7 @@ program successfully after it without recompiling?
NOTE: if the 32-bit version cannot be compiled the script will at least run the
alternate version of the [anonymous.ten](anonymous.ten.c) program.
## Judges' remarks:
Is emulation the sincerest form of flattery? This small program does
@@ -121,9 +67,9 @@ the program will fail to execute it and might not even touch it.
### WARNING on note from the author
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
but others 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
that is?) but others did not notice any problems in using them. Perhaps it's
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
@@ -262,6 +208,7 @@ just C programs that generate C code as their output.
Enjoy and thanks!
## Copyright and CC BY-SA 4.0 License:
This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
+5 -31
View File
@@ -6,49 +6,20 @@ Fabrice Bellard
France
<https://bellard.org>
## To build:
```sh
make
```
## To run:
```sh
./bellard file
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) partially fixed this
but he notes that this will not work without (according to the author) i386
linux or else some skill in resolving the portability issues. As it is it
segfaults in 64-bit linux (and as expected macOS). He fixed an earlier segfault
so that at least the file can be opened (but perhaps that will be wrong in i386
linux?) and he also changed some of the macro used to what they evaluate to but
mostly he kept it the same.
Cody also fixed [bellard.otccex.c](bellard.otccex.c) so it does not segfault and
seemingly works okay (it did not work at all). The main problem was that some
ints were being used as pointers. Also the Fibonacci sequence (`fib()`) will
overflow at `n > 48` so this is checked prior to running the function. Either
way unfortunately this entry seems to not work in 64-bit linux or macOS. See
below portability notes. Thank you Cody for your assistance!
### Portability notes:
With a tip from [Yusuke Endoh](/winners.html#Yusuke_Endoh) we rediscovered the
author's [web page for this program](https://bellard.org/otcc/) where it is
stated that this will only work in i386 linux. The author also stated in the
remarks in this document that they used [gcc
2.95.2](https://ftp.gnu.org/gnu/gcc/gcc-2.95.2/gcc-everything-2.95.2.tar.gz) but
we don't know if that's relevant or not.
Yusuke offered a modification which is not needed with gcc but with some
versions of `clang` it is. With `gcc` we can get away with `-rdynamic -fno-pie
-Wl,-z,execstack` which solves the problem of execution in memory but any
compiler that does not support this would not work. Thus we use the modification
by Yusuke. Thank you Yusuke!
## Try:
@@ -56,10 +27,12 @@ by Yusuke. Thank you Yusuke!
./bellard bellard.otccex.c
```
## Judges' remarks:
`<JUDGES_COMMENTS>` :-)
## Author's remarks:
`OTCC` is an Obfuscated Tiny C Compiler for i386-linux. It generates
@@ -183,6 +156,7 @@ and some functions are used before being defined. `OTCC` uses the
dynamic linker to resolve symbols with `dlsym()`, so `-ldl` must
be used when you compile and link it.
## Copyright and CC BY-SA 4.0 License:
This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
+4 -7
View File
@@ -4,19 +4,13 @@ Raymond Cheong
US
<http://www.raymondcheong.com/index.html>
## To build:
```sh
make
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to work with
clang by adding another function that is allowed to have a third arg as an int,
not a `char **`. He chose pain() because it's a four letter word that would
match the format and because it's pain that clang forces this. :-) This fix
makes a point of the author's notes on portability no longer valid, btw. Thank
you Cody for your assistance!
## To run:
@@ -37,6 +31,7 @@ This program will very likely crash or do something different without an arg.
./cheong 05305265226926441255040573044986873789
```
## Judges' remarks:
Be sure to give an even number of digits in the argument. Add a
@@ -45,6 +40,7 @@ leading 0 if needed.
The source code is nice, compact, and self documenting
as all good programs should be! :-)
## Author's remarks:
### Operation
@@ -109,6 +105,7 @@ with fixed-width font)
Thanks goes out to Bobby Rohde for numerous suggestions on how to shorten
the program.
## Copyright and CC BY-SA 4.0 License:
This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
+5 -2
View File
@@ -7,18 +7,21 @@ ATTN : Pierre-Philippe Coupard
Lindon, UT 84042
US
## To build:
```sh
make
```
## To run:
```sh
./coupard
```
## Try:
```sh
@@ -35,8 +38,6 @@ something like:
./coupard | sox -q -traw -r8000 -b8 -e unsigned-integer - -tcoreaudio
```
Thanks go to [Yusuke Endoh](/winners.html#Yusuke_Endoh) for providing a proper
command line (see [/2013/endoh3/README.md](2013/endoh3/README.md).
## Judges' remarks:
@@ -44,6 +45,7 @@ You may need to run this a few times to understand exactly what is
being said. You might even need to look somewhere on your desktop,
your arm or the wall for confirmation.
## Author's remarks:
Past years' IOCCC entries do many marvellous things in small packages,
@@ -159,6 +161,7 @@ When linting the program with `lclint`, it complains about a huge list
of things that, if corrected to make lint happy, would probably double
the size of the source code.
## Copyright and CC BY-SA 4.0 License:
This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
+5 -4
View File
@@ -5,22 +5,20 @@ Chris King
Foster, RI, 02825
US
## To build:
```sh
make
```
## To run:
```sh
./ctk
```
The ANSI escape codes were no longer valid but [Yusuke
Endoh](/winners.html#Yusuke_Endoh) provided a patch to fix the ANSI escape
codes. This works with macOS as well. Thank you Yusuke!
## Try:
@@ -31,6 +29,7 @@ echo "Do or do not. There is no try."
Make sure to hit `q` to exit or else your terminal will be messed up (to restore
it you can try `stty sane` or `reset`).
## Judges' remarks:
No matter how careful you are, this guy eventually crashes. Most people
@@ -38,6 +37,7 @@ can make at least one successful road trip without crashing.
This is, of course, another of the retro games.
## Author's remarks:
This is a game based on an Apple ][ Print Shop Companion [Easter
@@ -57,6 +57,7 @@ vertically!).
[1]: https://en.wikipedia.org/wiki/Easter_egg_(media)#In_computing
## Copyright and CC BY-SA 4.0 License:
This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
+10 -5
View File
@@ -6,25 +6,27 @@ Southern Adventist University
Cleveland, TN 37312
US
## To build:
```sh
make
```
## To run:
```sh
./dgbeards
```
### Alternate code:
The author provided a way to speed it up a bit and also how to make it so it
doesn't crash on losing. [Cody Boone
Ferguson](/winners.html#Cody_Boone_Ferguson) made this alternate version with
the former change (the idea of crashing when losing is too good to fix in his
opinion). To compile:
doesn't crash on losing.
To compile:
```sh
make alt
@@ -33,16 +35,17 @@ make alt
Use `dgbeards.alt` as you would `dgbeards` above. Can you find a flaw in this
version that the author did not note?
## INABIAF - it's not a bug it's a feature! :-)
This game crashes if it loses.
## Try:
See if you can figure out how to make the computer always lose. It's a very
simple thing to do. Read the author's remarks for clues.
## Judges' remarks:
This is probably the worst AI we've ever seen. So, then, why did
@@ -57,6 +60,7 @@ I appreciate the realism.
BTW: if your goal is to lose and you do does that mean you win? :-) What does
winning mean in a game you're supposed to lose at?
## Author's remarks:
### FAQ
@@ -244,6 +248,7 @@ This bug can be fixed in a number of ways, but there is a way that adds only one
byte to the source code. In the statement `s=(e=-V(n-1,o))>s?Y=G,e:s;` change
the `>` to a `>=` and the bug will be gone.
## Copyright and CC BY-SA 4.0 License:
This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
+3 -10
View File
@@ -4,22 +4,13 @@ Immanuel Herrmann
Germany
<https://web.archive.org/web/20071018081145/http://pcpool.mathematik.uni-freiburg.de/~immi/>
## To build:
```sh
make
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to work with
both 64-bit and 32-bit compiles by changing most of the `int`s (all but that in
`main`) to `long`s. He also fixed it to compile with clang by changing the args
of main to be `int` and `char **` respectively and changing specific references
to the `argv` arg, casting to `long` (was `int` but the 64-bit fix requires
`long`) which was its old type. The original file, used for demonstration
purposes, as well as if you want to see if your system works with the original
code (in which case see below Alternate code section), is in
[herrmann2.alt.c](herrmann2.alt.c). Thank you Cody for your assistance!
## To run:
@@ -93,6 +84,7 @@ make alt
Use `herrmann2.alt` as you would `herrmann2` above.
## Judges' remarks:
Be careful when staring at the source code - your eyes might cross, but
@@ -264,6 +256,7 @@ the include files has to be provided. In the build script, I
assume that the path is `/usr/include`, but this can easily be
adapted.
## Copyright and CC BY-SA 4.0 License:
This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
+9 -8
View File
@@ -5,12 +5,14 @@ Australia<br>
<http://www.kev.pulo.com.au/><br>
Mastodon: <https://fosstodon.org/@devkev>
## To build:
```sh
make
```
## To run:
```sh
@@ -21,10 +23,8 @@ make
NOTE: each player's paddle is at the bottom and the opponent at the top.
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) slowed down the ball
just a tad as it went too fast for the speed at which the paddles move even when
holding down the movement keys. If you need to change the speed you can
reconfigure it like (say for over a network and not the same host):
If you need to change the speed you can reconfigure it like (say
for over a network and not the same host):
```sh
make clobber SPEED=50 all # default value which is very fast
@@ -33,6 +33,7 @@ make clobber SPEED=50 all # default value which is very fast
There is an alternate version which lets you use the arrow keys to control your
paddle. See below Alternate code.
## Try:
```sh
@@ -40,11 +41,10 @@ paddle. See below Alternate code.
./kev localhost
```
### Alternate code:
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) provided an alternate
version which lets you use the arrow keys on your keyboard instead of the more
awkward ',' and '.'. To use:
To use:
```sh
make alt
@@ -55,7 +55,6 @@ Use `kev.alt` as you would `kev`.
What happens if you use both, one in one terminal and the other in another
terminal?
Thank you Cody!
## Judges' remarks:
@@ -67,6 +66,7 @@ How many games come out at $50 and still require you to wait for a patch
to come out before you can play multiplayer? This one works out of the
box.
## Author's remarks:
@@ -214,6 +214,7 @@ architectures need to have the same character systems (i.e. don't
try mixing ASCII and EBCDIC). It is independent of endianness
though.
## Copyright and CC BY-SA 4.0 License:
This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
+9 -8
View File
@@ -4,30 +4,28 @@ Brian Westley
US
<http://www.westley.org>
## To build:
```sh
make
```
## To run:
```sh
./westley
```
## Try:
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) added the script
[westley.sh](westley.sh) to automate a heap of commands that we, the IOCCC
judges, suggested, as well as some additional ones that he thought would be fun.
These include the below sort and punch card versions that he added, described
below, based on the author's remarks. Thank you Cody!
## Try:
```sh
./westley.sh
```
### Alternate code:
An alternate version of this entry, [westley.alt.c](westley.alt.c), is provided.
@@ -51,8 +49,8 @@ Use `westley.sort` as you would `westley` above.
### Punch card code:
The author also stated that if you just sort the code you'll get the with
`sort`) version that just prints out the punch card. Cody put this in
[westley.punch.c](westley.punch.c) specifically so that Westley can punch
`sort`) version that just prints out the punch card. The
[westley.punch.c](westley.punch.c) code specifically so that Westley can punch
everyone in the face! :-) This is also compiled by default.
To use, try:
@@ -61,6 +59,7 @@ To use, try:
echo 'Brian Westley does it again!' | ./westley.punch 2>/dev/null
```
## Judges' remarks:
Try copying the source to a new file and changing around the
@@ -76,6 +75,7 @@ We find it amazing that with just 28 lines of code (not counting comments and
blank lines) there are `28!` or ``304,888,344,611,713,860,501,504,000,000``
versions of the program, all valid C!
## Author's remarks:
[Punch cards](https://en.wikipedia.org/wiki/Punched_card), or Hollerith cards,
@@ -206,6 +206,7 @@ all legal C.
\*\* all cards must be face down, nine-edge first, of course.
## Copyright and CC BY-SA 4.0 License:
This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.