IOCCC image by Matt Zucker

The International Obfuscated C Code Contest

1989/fubar - Best self-modifying program

first entry ↑ 1989 ↑ jar.1 → C code Makefile Inventory





Author:

To build:

make all

Bugs and (Mis)features:

The current status of this entry is:

STATUS: known bug - please help us fix

For more detailed information see 1989 fubar bugs.

To use:

./fubar <number>

Try:

./try.sh # run on 1 - 7

./fubar.sh 2 # run via script
./fubar 2 # run directly

Judges’ remarks:

Run this with a single digit argument (or wait a long time and risk an infinite loop as described in the 1989 fubar bugs file).

The blank line at the beginning of the source is mandatory. Do you know why?

NOTE: the file ouroboros.c is created by the program itself so this is why it is not in the repository.

Author’s remarks:

In a nutshell, this is probably the slowest and most obnoxious factorial program ever written. Unfortunately, the name of the C source must be ouroboros.c; the name is hard-coded into the program.

The source is a legal shell script and a legal C program. The shell script compiles itself, and then executes the resulting binary, giving the source as input. The program works by successively modifying #define lines each pass through.

Both indent and cb will damage the program, indent much more so.

Inventory for 1989/fubar

Jump to top

Primary files

Secondary files