Merge pull request #1261 from xexyl/fixes-faq-todo
Fixes in FAQ and todo files
This commit is contained in:
2 files changed
+83
-38
No files matched your search
@@ -1,8 +1,8 @@
|
||||
<HTML>
|
||||
<BODY TEXT="#000000">
|
||||
|
||||
<center><img alt="IOCCC" SRC="png/ioccc.png"></center><br>
|
||||
<center><font size="6"><I>The International Obfuscated C Code Contest </I></font></center><br>
|
||||
<center><img alt="IOCCC" SRC="png/ioccc.png"></center>\
|
||||
<center><font size="6"><I>The International Obfuscated C Code Contest </I></font></center>\
|
||||
|
||||
<P>
|
||||
<CENTER>
|
||||
@@ -17,23 +17,27 @@
|
||||
<A HREF="years.html">Winning entries</A>
|
||||
<BR><BR>
|
||||
<A HREF="bugs.md">Known Bugs & (Mis)features</A> |
|
||||
<A HREF="how-to-bugfix.md">How to fix an IOCCC winner</A> |
|
||||
<A HREF="how-to-help.md">How to help</A> |
|
||||
<A HREF="thanks-for-fixes.md">Thanks for the fixes</A> |
|
||||
<A HREF="www-history.md">A bit of web site history</A>
|
||||
</CENTER>
|
||||
|
||||
<HR>
|
||||
|
||||
|
||||
# The IOCCC FAQ
|
||||
|
||||
|
||||
## Q: How many entries do you receive each year?
|
||||
|
||||
By tradition, we do not say.
|
||||
|
||||
|
||||
## Q: How many judging rounds do you have?
|
||||
|
||||
Are you trying to trick us? We will not say that either.
|
||||
|
||||
|
||||
## Q: What are the general Makefile rules used in order to clean and build entries for use?
|
||||
|
||||
In general the best way to compile everything in an entry directory is to run:
|
||||
@@ -80,6 +84,13 @@ clobber` depends on `clean` so running `make clobber` will invoke `make clean`.
|
||||
|
||||
Are there any other rules? You tell us!
|
||||
|
||||
NOTE about the above rules: the Makefile default assumes `cc` which might be a
|
||||
gcc-based compiler, or a clang-based compiler, or some other compiler. Only by
|
||||
forcing `CC=clang` or `CC=gcc` will one invoke a specific compiler to, say,
|
||||
enable or disable additional warnings or flags. Even so different versions or
|
||||
compilers might do different things, have different defects or other issues.
|
||||
|
||||
|
||||
## Q: How come some entries have code that is incongruent with what the author(s) wrote about the entry?
|
||||
|
||||
It is very likely in this case that the code was fixed to work for modern
|
||||
@@ -88,6 +99,7 @@ some entries you should look at the original code as in `winner.orig.c` or
|
||||
`prog.orig.c`. Sometimes the original is in an alt version like `winner.alt.c`
|
||||
or `prog.alt.c`.
|
||||
|
||||
|
||||
## Q: Why have some entries that originally used `gets()` been modified to use `fgets()`? Doesn't this tamper with the entry too much?
|
||||
|
||||
A fine line indeed has to be drawn here but it was decided that it is worth it
|
||||
@@ -125,6 +137,7 @@ does not. We're not sure how this is compatibility but either way it can cause a
|
||||
problem and it is this that has complicated most of the fixes though again some
|
||||
can look almost identical.
|
||||
|
||||
|
||||
## Q: How can I easily see what was changed in order to get an entry to work in modern systems?
|
||||
|
||||
Although the [thanks-for-fixes.md](/thanks-for-fixes.md) file sometimes gives
|
||||
@@ -210,6 +223,7 @@ make diff_alt_prog
|
||||
|
||||
and you'll see a single line changed and very simply.
|
||||
|
||||
|
||||
### Tip: if you have `colordiff` installed it's a lot easier to see the differences
|
||||
|
||||
To use these rules but provide a different `diff`, for instance `colordiff`,
|
||||
@@ -223,6 +237,7 @@ make DIFF=colordiff diff_alt_prog # for alt to prog diff
|
||||
Obviously if you want to view the alt code or the orig code you can just open
|
||||
the files as described above.
|
||||
|
||||
|
||||
## Q: Sometimes the author's or authors' remarks do not match the source! Why and what can I do about it?
|
||||
|
||||
This is very likely to happen when an entry was fixed for modern systems. When
|
||||
@@ -276,6 +291,7 @@ that works for modern systems but one can view the original code in the
|
||||
|
||||
Some entries should not have modern system versions replaced. See below.
|
||||
|
||||
|
||||
## Q: I can't get some entries to work in 64-bit systems that don't support 32-bit!
|
||||
|
||||
Unfortunately some older entries are non-portable and require 32-bit support of
|
||||
@@ -290,6 +306,7 @@ for 64-bit systems. Many were fixed to work with modern systems but some are
|
||||
supposed to only work with 32-bit systems so any updated version of these
|
||||
entries should be an alternate version.
|
||||
|
||||
|
||||
## Q: Under macOS I can't compile some entries and/or they don't work right. Why?
|
||||
|
||||
If the entry requires gcc and you did not explicitly install gcc in macOS you
|
||||
@@ -318,6 +335,7 @@ At the same time some entries are not designed to work with clang. There might
|
||||
be alternate code added at some point but as above this depends on free time and
|
||||
other things that have to be done plus remembering to do it.
|
||||
|
||||
|
||||
## Q: What is `cb` that is mentioned in some of the older entries?
|
||||
|
||||
This was a C beautifier for Unix, both AT&T and Berkeley, but it seems to no
|
||||
@@ -340,12 +358,14 @@ In macOS Mountain Lion and beyond to run X11 applications one needs to install
|
||||
[XQuartz](https://www.xquartz.org). This will let you compile, link and run X11
|
||||
applications.
|
||||
|
||||
|
||||
## Q: How do I compile and run entries that use SDL1/SDL2 ?
|
||||
|
||||
This depends on your operating system but below are instructions for linux and
|
||||
macOS with alternative methods for macOS and different package managers with
|
||||
linux.
|
||||
|
||||
|
||||
### Red Hat based linux
|
||||
|
||||
Execute one of the following as root or via sudo:
|
||||
@@ -370,6 +390,7 @@ export SDL2_INCLUDE_ROOT=/usr
|
||||
but this might not be necessary in more modern days especially as we use
|
||||
`sdl-config` and `sdl2-config` which should find the proper paths.
|
||||
|
||||
|
||||
### Debian based linux
|
||||
|
||||
Execute the following as root or via sudo:
|
||||
@@ -403,12 +424,14 @@ feature of the package manager to determine which packages you need to install.
|
||||
Note that you might have to install both the library and the developmental
|
||||
packages: one for compiling and one for linking / running.
|
||||
|
||||
|
||||
### macOS
|
||||
|
||||
If you're using macOS there are at least three ways to obtain it. You can
|
||||
download it from the SDL website and install the package. That will not
|
||||
work well for the IOCCC but these will:
|
||||
|
||||
|
||||
#### MacPorts
|
||||
|
||||
If you haven't already, install
|
||||
@@ -419,6 +442,7 @@ If you haven't already, install
|
||||
sudo port install libsdl libsdl2
|
||||
```
|
||||
|
||||
|
||||
#### Homebrew
|
||||
|
||||
If you have not already done so, install [Homebrew](https://brew.sh).
|
||||
@@ -430,13 +454,14 @@ brew install sdl2 sdl12-compat
|
||||
eval "$(/opt/homebrew/bin/brew shellenv)"
|
||||
```
|
||||
|
||||
##### NOTE: there might be extra SDL packages required
|
||||
### NOTE: there might be extra SDL packages required
|
||||
|
||||
In the case that some entries do not work even with SDL1/SDL2 installed it might
|
||||
be that you need additional SDL libraries. See the entry's README.md for
|
||||
details. If something is not noted you're welcome to report it as an issue or
|
||||
fix it and make a new pull request.
|
||||
|
||||
|
||||
## Q: How do I compile and run entries that use sound in macOS?
|
||||
|
||||
This might depend on the entry but in some cases like
|
||||
@@ -448,6 +473,7 @@ you can use either MacPorts or Homebrew. See below for instructions for each.
|
||||
Usually the README.md file will explain how to use it in linux so we do not
|
||||
include this here, at least for now.
|
||||
|
||||
|
||||
### MacPorts
|
||||
|
||||
If you haven't already, install
|
||||
@@ -458,6 +484,7 @@ If you haven't already, install
|
||||
sudo port install sox
|
||||
```
|
||||
|
||||
|
||||
### Homebrew
|
||||
|
||||
If you have not already done so, install [Homebrew](https://brew.sh).
|
||||
@@ -469,6 +496,7 @@ brew install sox
|
||||
eval "$(/opt/homebrew/bin/brew shellenv)"
|
||||
```
|
||||
|
||||
|
||||
## Q: How did entry XYZZY win? It breaks rule 2!
|
||||
|
||||
As entries have been fixed it is entirely possible that some of the entries no
|
||||
@@ -479,6 +507,7 @@ For the original version see the [/archive](/archive) directory where you can
|
||||
find all the original winning entries. In some cases the `winner.alt.c` is the
|
||||
original source code.
|
||||
|
||||
|
||||
## Q: I found a bug in a previous winner, what should I do?
|
||||
|
||||
We do not 'maintain' the contest winners as such. The code is made available on an 'AS
|
||||
@@ -498,6 +527,7 @@ More generally please see the file [how-to-bugfix.md](/how-to-bugfix.md). Note
|
||||
that this file is not a tutorial on how to fix X, Y and Z problems but rather
|
||||
what to do to get the fix in.
|
||||
|
||||
|
||||
## Q: Do you have a list of entries with known problems and/or features that might appear to be bugs but are not?
|
||||
|
||||
Yes! Please see [bugs.md](/bugs.md) for a list of known bugs and/or issues of a
|
||||
@@ -507,6 +537,7 @@ Note that just because an entry is not in the bugs file does not mean there is
|
||||
not an issue and note that some issues are simply missing files, dead URL(s) or
|
||||
something like that.
|
||||
|
||||
|
||||
## Q: Are there types of entries that are submitted so frequently that the judges get tired of them?
|
||||
|
||||
Yes, there are types of entries that show up over and over again.
|
||||
@@ -518,6 +549,7 @@ The [guidelines](guidelines.html) say:
|
||||
We like variety. However too often we see (please look at the winning examples
|
||||
given to be aware of the level of the competition):
|
||||
|
||||
|
||||
### maze generator
|
||||
- [1985/shapiro](years.html#1985_shapiro)
|
||||
|
||||
@@ -529,7 +561,8 @@ given to be aware of the level of the competition):
|
||||
|
||||
- [1998/bas1](years.html#1998_bas1)
|
||||
|
||||
### tic-tac-toe game
|
||||
|
||||
### tic-tac-toe/noughts and crosses/Xs and Os game
|
||||
|
||||
- [1991/westley](years.html#1991_westley)
|
||||
|
||||
@@ -537,6 +570,7 @@ given to be aware of the level of the competition):
|
||||
|
||||
- [2020/carlini](years.html#2020_carlini)
|
||||
|
||||
|
||||
### solitaire/Othello game
|
||||
|
||||
- [1987/lievaart](years.html#1987_lievaart)
|
||||
@@ -561,6 +595,7 @@ given to be aware of the level of the competition):
|
||||
_As you can see, just a list of primes (let alone small primes) does not cut it
|
||||
anymore._
|
||||
|
||||
|
||||
### self reproducing program
|
||||
|
||||
- [1990/scjones](years.html#1990_scjones)
|
||||
@@ -569,6 +604,7 @@ anymore._
|
||||
|
||||
- [2000/dhyang](years.html#2000_dhyang) - _unless you beat this one, your chances are slim_
|
||||
|
||||
|
||||
### entries that just print "Hello, world!"
|
||||
|
||||
- [1984/anonymous](years.html#1984_anonymous)
|
||||
@@ -587,6 +623,7 @@ anymore._
|
||||
|
||||
_**...it's so 20th century...**_
|
||||
|
||||
|
||||
### entries that use some complex state machine/table to print something
|
||||
|
||||
- [1988/isaak](years.html#1988_isaak)
|
||||
@@ -597,6 +634,7 @@ _**...it's so 20th century...**_
|
||||
|
||||
- [2018/giles](years.html#2018_giles)
|
||||
|
||||
|
||||
### rot13
|
||||
|
||||
- [1985/sicherman](years.html#1985_sicherman)
|
||||
@@ -607,6 +645,7 @@ _**...it's so 20th century...**_
|
||||
|
||||
- [1991/fine](years.html#1991_fine)
|
||||
|
||||
|
||||
### **pi** or **e** computation
|
||||
|
||||
- [1986/august](years.html#1986_august)
|
||||
@@ -617,6 +656,7 @@ _**...it's so 20th century...**_
|
||||
|
||||
- [1989/roemer](years.html#1989_roemer)
|
||||
|
||||
|
||||
#### Hints on overused themes
|
||||
|
||||
HINT: It is not fatal to send in those types of entries, it is just MUCH
|
||||
@@ -631,10 +671,12 @@ explain near the beginning of your remarks why you are submitting a entry based
|
||||
on an 'overused theme' and why the judges should not simply toss it out as being
|
||||
boring.
|
||||
|
||||
|
||||
## Q: What should I write in the 'remarks' (remarks.md) section of my entry, if anything at all?
|
||||
|
||||
As much or as little as you wish.
|
||||
|
||||
|
||||
### What helps:
|
||||
|
||||
- explaining what your entry does
|
||||
@@ -647,6 +689,7 @@ As much or as little as you wish.
|
||||
|
||||
- how it works (if you are really condescending)
|
||||
|
||||
|
||||
### What does not help:
|
||||
|
||||
- admitting that your entry is not very obfuscated (you see, the contest is
|
||||
@@ -695,18 +738,21 @@ which you should update and submit, using the instructions above if necessary.
|
||||
|
||||
There are none. There was no IOCCC in those years.
|
||||
|
||||
|
||||
## Q: What are the .orig.c files in the directories in winning entries ?
|
||||
|
||||
Due to the fact that the original code has sometimes had to change these files
|
||||
are the original winning entry or as close to as possible to the original that
|
||||
we can find.
|
||||
|
||||
|
||||
## Q: Why don't you publish non-winners?
|
||||
|
||||
Because the publication on the IOCCC site **_IS_**
|
||||
the award! Anyone is free to put their IOCCC hopefuls, lookalikes and/or
|
||||
non-winners on their web page for everyone to see.
|
||||
|
||||
|
||||
## Q: How much time does it take to judge the contest?
|
||||
|
||||
It takes a fair amount of time to setup, run, answer email, process entries,
|
||||
@@ -734,15 +780,18 @@ If it can compile and run on Windows and/or Mac (see
|
||||
even better. Being able to compile with other compilers like clang is also a
|
||||
good thing.
|
||||
|
||||
|
||||
## Q: I would like to mirror the IOCCC web site. May I do so?
|
||||
|
||||
We are not accepting mirror requests at this time, sorry.
|
||||
|
||||
|
||||
## Q: I want to publish some parts of the IOCCC in an article, or book, or newsletter, or use then in class/instructional notes, or quote from the IOCCC. May I do so?
|
||||
|
||||
Please ask the [IOCCC judges](/judges.html) first. Please send your request using the
|
||||
instructions on the [contacting the IOCCC Judges](/contact.html) page.
|
||||
|
||||
|
||||
## Q: What are the grand prize / Best of Show winners?
|
||||
|
||||
In 1984-1987, the grand prize winners are:
|
||||
@@ -790,6 +839,7 @@ from the judges, they used the following awards:
|
||||
These could be considered the 'best entry' for those years with 1 or
|
||||
more other entries that came in close behind.
|
||||
|
||||
|
||||
## Q: I managed to get entry XYZZY from year 19xx to compile; now it fails to run!
|
||||
|
||||
switch(19xx/XYZZY) {
|
||||
@@ -834,6 +884,7 @@ compilers.
|
||||
|
||||
}
|
||||
|
||||
|
||||
## Q: How did the IOCCC get started?
|
||||
|
||||
One day (23 March 1984 to be exact), Larry Bassel and I (Landon Curt
|
||||
@@ -922,11 +973,12 @@ for more details.
|
||||
<TD><a rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/"><img alt="Creative Commons License" style="border-width:0" src="/png/by-sa-3.0-88x31.png" /></a></TD>
|
||||
<TD><P>© Copyright 1984-2020,
|
||||
[Leo Broukhis, Landon Curt Noll](/judges.html)
|
||||
- All rights reserved<br>
|
||||
- All rights reserved\
|
||||
This work is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.</P></TD>
|
||||
<TD> <!--<a href="https://validator.w3.org/check?uri=referer"><img src="https://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Transitional" height="31" width="88"></a>--></TD>
|
||||
</TR></TABLE>
|
||||
|
||||
|
||||
## Q: Why do you sometimes use the first person plural?
|
||||
|
||||
As a precedent for [first person
|
||||
@@ -963,6 +1015,7 @@ p.s. Here is an image of F. D. C. Willard:
|
||||
|
||||
[F D C Willard](png/F.D.C.Willard.png)
|
||||
|
||||
|
||||
## Q: Why do Makefiles use `-Weverything` with `clang`? Don't you know that its use is not recommended by clang developers?
|
||||
|
||||
The use of `-Weverything` is limited to when one forces `CC=clang`. Users with
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# A todo list of known things to check and/or do
|
||||
*Last updated: Sat 21 Oct 2023 11:04:58 UTC*
|
||||
*Last updated: Thu 02 Nov 2023 12:32:15 UTC*
|
||||
|
||||
This document is primarily for [Cody Boone
|
||||
Ferguson](/winners.html#Cody_Boone_Ferguson) as he (that is I :-) ) wanted a way
|
||||
@@ -38,18 +38,9 @@ years through 2013 and up through 2014/endoh1 have been checked. As for the
|
||||
things have to be done in those years. These things, such as dealing with old
|
||||
email addresses and such, can likely be done with the typo pass (see below).
|
||||
|
||||
- *AFTER* the README.md files have been format fixed: check for typos in
|
||||
README.md files. Although I did up through I believe 2011 I have to do another
|
||||
pass through all except that as of 12 July 2023 I went through 1984 and 1985. At
|
||||
the same time the formatting has to be / is being checked.
|
||||
* UPDATE on 06 July 2023: some while back I noticed that _ALL_ years will
|
||||
have to be checked again but most of the years checked through 2011 (I think
|
||||
it is but I have this vague memory I did a couple more years - that will be
|
||||
checked when I return to this item) can be checked more quickly.
|
||||
* UPDATE on 06 July 2023: see below list under the item _Verify which
|
||||
README.md files have not been checked for correct formatting_ as well.
|
||||
* UPDATE on 06 July 2023: note that this does NOT include the
|
||||
`YYYY/README.md` files! See the below item for that.
|
||||
- Typo fix ALL markdown files. For the README.md files years 1984-1989 have been
|
||||
done (along with the format fixes) except that YYYY/README.md files have not
|
||||
been completed. See below item for details on that.
|
||||
|
||||
- Go through all year README.md files: that is 1984/README.md, 1985/README.md and
|
||||
so on. As of **Mon 16 Oct 11:22:52 UTC 2023** the following years have had a
|
||||
@@ -59,12 +50,15 @@ determined if this will be done with the typo pass (what should be the final
|
||||
pass) or not but it's very possible that it can be just to speed things along.
|
||||
|
||||
- Verify which README.md files have not been checked for correct formatting and
|
||||
fix any issues.
|
||||
fix any issues found.
|
||||
* This includes author information: not only at first column but making sure
|
||||
that the lines end with `<br>` so that the rendered output does not end up
|
||||
that the lines end with `\` so that the rendered output does not end up
|
||||
on one line only. Note that earlier spaces were being added to the end of
|
||||
the line but after discussion on GitHub it was decided it is preferable to
|
||||
have `<br>` instead.
|
||||
have `\` instead.
|
||||
NOTE that this has been done already BUT it was not done manually so
|
||||
there are some lines that should not end in `\` including some in code
|
||||
blocks.
|
||||
* [Cody Boone
|
||||
Ferguson](https://www.ioccc.org/winners.html#Cody_Boone_Ferguson) has done
|
||||
many and has some kind of record of what he's done but these can be added
|
||||
@@ -73,15 +67,18 @@ fix any issues.
|
||||
except that the years not checked / fixed should only need one pass (but
|
||||
probably will have a second pass anyway just to make sure things are good as
|
||||
seeing things a second time is a good way to find additional errors).
|
||||
* NOTE that as of some days ago (today being 02 November 2023) the years
|
||||
1984-1989 have been checked for formatting and other issues including typos.
|
||||
Whether a quick final pass will be made is not determined yet.
|
||||
|
||||
- Remove addresses from older winning entries but (if known) keep country code +
|
||||
add country code and name to the respective JSON file in the [author](/author)
|
||||
subdirectory. As of half past 4 Pacific time on 22 April 2023 only the years
|
||||
through 1986 have been done entirely. This should not take much time but I
|
||||
(Cody) am bored with it for now and would rather do other more important things.
|
||||
This will likely not be updated until after it's done (and when I remember to
|
||||
remove it - I expect that when I go for it I'll do it in one sitting or maybe a
|
||||
few sittings with a few brief breaks).
|
||||
- Remove addresses from older winning entries but (if known) keep country code
|
||||
and if known add it and the name to the respective JSON file in the
|
||||
[author](/author) subdirectory. As of half past 4 Pacific time on 22 April 2023
|
||||
only the years through 1986 have been done entirely. This should not take much
|
||||
time but I (Cody) am bored with it for now and would rather do other more
|
||||
important things. This will likely not be updated until after it's done (and
|
||||
when I remember to remove it - I expect that when I go for it I'll do it in one
|
||||
sitting or maybe a few sittings with a few brief breaks).
|
||||
|
||||
- NOTE: do this AFTER everything else is done! Verify that
|
||||
[2004/gavin](2004/gavin/)'s [img/fs.tar](2004/gavin/img/fs.tar) contains the
|
||||
@@ -137,18 +134,13 @@ entries in the respective README.md files. This cannot be done without examining
|
||||
each because some names are mentioned by the author. For instance I (Cody) can
|
||||
think of at least three where I have been mentioned explicitly by the author:
|
||||
one in 2018, one in 2019 and one in 2020.
|
||||
* NOTE: this _appears_ to be done as of some time back from this writing (02
|
||||
November 2023). This is being verified as each README.md file is checked.
|
||||
|
||||
- For the YYYY/README.md files where it refers to emailing the judges fixes
|
||||
instead change it to make pull requests. See the
|
||||
[1995/README.md](1995/README.md) file for example.
|
||||
|
||||
- Check the YYYY/README.md files for other things besides the GitHub pull
|
||||
requests rather thane mailing judges. This can be done on the final pass of the
|
||||
requests rather than emailing judges. This can be done on the final pass of the
|
||||
files.
|
||||
|
||||
- When adding to the FAQ about `make` rules `make sure` :-) that this text is
|
||||
added:
|
||||
> The Makefile default assumes `cc` which might be a gcc-based compiler, or a
|
||||
clang-based compiler, or some other compiler. Only by forcing `CC=clang` or
|
||||
`CC=gcc` will one invoke a specific compiler. Even so different versions or
|
||||
compilers might do different things, have different defects or other issues.
|
||||
Reference in new issue
Block a user