Regarding use of `temp-test-ioccc` in current repo files: We will ignore files under `tmp/` as they are going away. We will ignore files under `bin/` as they will have their default `REPO_URL` value changed during the later parts of the **Great Fork Merge**. We will ignore `*.html` files as the above changes to `bin/` tool will also change them during the later parts of the **Great Fork Merge**. We will ignore `sitemap.xml` as the it will change during the later parts of the **Great Fork Merge**. So this leaves for our consideration the files printed by this command: ```sh find * -type f ! -name '*.html' ! -name sitemap.xml ! -path 'tmp/*' ! -path 'bin/*' -print0 | xargs -0 grep -l 'temp-test-ioccc' ``` We see 5 (3 sir), 3 cases: * README.md index.md The reference to `temp-test-ioccc` will be removed when a given section goes away as part of the later parts of the **Great Fork Merge**. Nothing needs to be dome here other than to add some **XXX** comments to help remind us of what needs to be done in later parts of the **Great Fork Merge**. * bugs.md faq.md news.md var.mk The use of `temp-test-ioccc` is outside of a blob. Here `https://github.com/ioccc-src/temp-test-ioccc/` may be be replaced by `https://github.com/ioccc-src/winner/` in anticipation of the **Great Fork Merge**. There is an exception: The historic discussion abouts the history of the `temp-test-ioccc` repo needs to retain their `https://github.com/ioccc-src/temp-test-ioccc/` strings in `faq.md` and `news.md`. * 2005/sykes/README.md The markdown links that start with `https://github.com/ioccc-src/temp-test-ioccc/blob/master/` should instead start with `%%REPO_URL%%/`. After the **Great Fork Merge**, the `%%REPO_URL%%/` value will refer to `https://github.com/ioccc-src/winner/blob/master/` instead. * 2020/ferguson1/snake.1 There is not a tool to "pre-process" cat pages like there is for markdown files: no should there be. The cat page refers to a markdown file when instead it should refer to a HTML page. In this case we suggest that `https://github.com/ioccc-src/temp-test-ioccc/blob/` be replaced by `https://www.isthe.com/`, and `.md` be replaced by `.html` in anticipation of what it will need to be after the **Great Fork Merge**. * YYYY/entry_dir/*.sh The shell scripts references by the above command are "helper shell scripts. Like man pages, there is no "pre-processor" for shell scripts, nor should there be. Looking at these helper shell script files in detail: ```sh find * -name '*.sh' ! -path 'tmp/*' ! -path 'bin/*' -print0 | xargs -0 grep 'temp-test-ioccc/blob/master' ``` We see that they all make references to `faq.md#something.`. This is wrong in 2 ways: 0) They should not refer to the markdown file `faq.md` but rather to the HTML file `faq.html`. 1) They punctuate a literal string (with one exception) by adding a final period (".") to a string that requires somebody to copy and paste and exclude the final period ("."). Since these echo commands are suggesting that the user view something within the FAQ, we recommend that `echo "Tip: see https://github.com/ioccc-src/temp-test-ioccc/blob/master/faq.md#` be replaced by `echo "Tip: see https://www.ioccc.org/faq.html#` AND that the final period (".") be removed. Thus they too will anticipate what they will need to be after the **Great Fork Merge**.
Sixteenth International Obfuscated C Code Contest
Standard IOCCC stuff
View the index.html web page for the given winning entry for information on how
on how to compile it and how to run the winning program.
Look at the winning source and try to figure how it does what it does!
You may then wish to look at the Author's remarks for even more details.
The IOCCC has a web site and now has a number of international mirrors. The primary site can be found at www.ioccc.org.
Use make to compile entries. It is possible that on non-Unix / non-Linux
systems the Makefile needs to be changed. See the Makefile for details.
Read over the Makefile for compile/build issues. Your system may
require certain changes (add or remove a library, add or remove a
#define i.e. the -D flag).
Some ANSI C compilers are not quite as good as they should be. If yours is lacking, you may need to compile using gcc instead of your local compiler.
Remarks on some of the entries
There were some outstanding entries that did not win. Unfortunately some very good entries lost because they:
- depended too much on non-portable side effects in expressions;
- depended too much on a particular byte order;
- required the use of a special script, data file or pseudo-machine language that was not supplied with the entry.
We hope the authors of some of those entries will fix and re-submit them for the next IOCCC.
We believe you will be impressed with this year's winning entries The Best of Show is a fine example of obfuscation. But don't ignore the other entries! There are games, programs that speak, ones that compile code and one that might run binaries you already have.
The Best/Worst Abuse of the Rules is technically allowed by the rules. This year we awarded it again, but don't assume you can get away with using the same technique next time ... :-)
This year there were several repeat authors. This is understating the achievement a little - one person has won 8 times before! (Please note that judging is done completely anonymously.)
Why has it taken so long to post the winning source?
This is somewhat my (Simon Cooper's) fault. I do apologize to the IOCCC community for this! Judging does take quite a lot of time, and I over-committed myself several times this year. Without divulging too much, we do look at and work out what every entry does.
Final Comments
Please send us comments and suggestions what we have expressed above. Also include anything else that you would like to see in future contests. Send such email to:
questions@ioccc.org
IMPORTANT NOTE: The email addresses found above are for historical purposes only, and should not be used today. See contact.html for up to date contact details as well as details on how to provide fixes to any of the entries. See also the IOCCC FAQ for additional information on the IOCCC.