Prepare for the winners of **IOCCC28**. > However these are not the 2024 droids you are looking for. :-) The HTML menu (both JavaScript and non-JavaScript) has been updated. The `Status -> Rules and guidelines' have been replaced with two separate menus `Status -> IOCCC rules` and `Status -> IOCCC guidelines`. Added a new top level `social.html` page: built from a new `social.md`. Sorted rules for building specific web pages in the top level `Makefile`. Added `make social` to make the `social.html` page from `social.md`. The `bin/gen-top-html.sh` now is able to process a argument of **social** to process the new top level `social.html` page. Changed `bin/gen-top-html.sh` VERSION from "2.0.0 2025-03-13" to "2.0.1 2025-07-25". Below `About -> Home page` a new `About -> IOCCC social media` menu item as added. Because the menu change touched every HTML file, we changed the general copyright date range for HTML files from "1984-2024" to "1984-2025" due to the extensive changes made for **IOCCC28**. Those markdown files that were modified in 2025 had their copyright date range also changed from "1984-2024" to "1984-2025". Rebuilt tarballs and sitemap due to the extensive HTML rebuilding. Ran `make update` to perform the above.
To build:
make all
There is an unobfuscated and enhanced version provided by the author. See Alternate code below.
To use:
./horton A B C D
A, B, C and D are numeric arguments.
Try:
./try.sh
Alternate code:
This confuses cb greatly. See horton.alt.c for an unobfuscated and enhanced version.
Alternate build:
make alt
Alternate use:
./horton.alt A B C D
Where A, B, C and D are numbers, just like with horton.
Alternate try:
./try.alt.sh
Judges' remarks:
Try to figure out how this program prints, for a given slope, the right character. And for extra credit, try to figure out which character is at the bottom of this hint file. :-)
You might be interested in the author's article that they cite towards the end of their remarks, included as a PDF file for your convenience.
Author's remarks:
Run it with any 4 numeric arguments, e.g. ./horton 3 2 1 0. Play with the
numbers to get a pleasing result, or use it for your high school algebra
class.
NOTICE to those who wish for a greater challenge:
If you want a greater challenge, don't read any further: just try to understand the program via the source.
If you get stuck, come back and read below for additional hints and information.
What this entry does:
As should be obvious from 20 feet away, the program is a cubic plotter. It plots against certain arguments, splattering their cubes with graphs of their cubic equations. Those dastardly arguments are mere coefficients, cogs in the wheels of the grand plot to overthrow the cubics!
Oh, by the way, it uses a self-contained graphtab and frame buffer. It's easily modified to graph any 96x160 bitmap on a dumb terminal.
See the gtface program for another example. Try:
make gtface
./gtface < gtface.data
How this entry works:
For more information, see my article
Using GraphTab; USENIX ;login: Sept/Oct 1992, pages 28-31.
MMMM,M,MM"MM,,,
,,MMMMMMMMM"""""""",
,MMMMM""" ",
,MMM" "
MMM M
MM
MM" " M
M " , ,,,,, ,,,,,,,,,MM
"MMMM"M,MMMMM MMMM M M"MMM,
,M"MMMM"MM"MMM""M""MMMM""M"M
, MM M M,M M" "M",, M "M "
M ,M," ,M "M, ,,,", M
M , M"MMM",,M,M,,""" , ,
",," , " "MMMMMMMM " , "
,M , ""M,MMMMMMMM,M " ,,
,MM, MMMMMMMMMMMMMM,", M,
M,M,MM"M"M" """M"MM,M M
,MMMMMM M,MMMMM"M MM""M
M MMMMMM,M M"M"" M MMMM", ,
"M"MMMMMMMMMM"M ,MMMMM M ,,
"" MMMMMMM,M,MM,M,,,MMM"M ,
," , "MMMMMMM"MM"M,,,,MMMMM , ,,
M ," MMMMMM"MM""M ,MMMMM,M, M
, MMMM,MMMM"M"M"M,MM,M,", "