Author:
Award: Consistently constant award
To build:
make all
Try:
./prog | cat
./prog > out
cat -v out
Judges’ remarks:
A little poem, no AI - just free,
something from us, for all to see:
Beneath the hush of calculus’ breath,
Where limits dance with range and depth;
There stirs a number, whose exponent is there,
With complex cycles, and digits to spare.
With compound interest, from balance may rise,
That swells beneath the banker’s eyes;
A meager value that starts out small,
With time expands and value grows tall.
So set the terms: at a rate of one per span,
Compounded n times, then let n ascend;
Whose decimal digits, one may behold,
That goes on without end, no matter how old.
View the source, a variable you see,
Single and clean, not needing three;
Base 10 digits grow vast, a boundless sea,
Follow that number, what will it be?
A fun challenge
Fun challenge 0
Are you able to explain why prog.c prints only a limited number of digits of the **constant*?
The above fun challenge is still open. See the “Fun challenge Info” section for details.
Fun challenge 1
Given the “constant” that is printed, explain the last line of output:
./prog | tail -1
The above fun challenge is still open. See the “Fun challenge Info” section for details.
Fun challenge 2
Generate an alternative version of prog.c, named prog.alt.c,
that prints IOCCC 2025 at the very end, in honor of the contest year in which it won, instead of IOCCC 2026.
The above fun challenge is still open. See the “Fun challenge Info” section for details.
Fun challenge 3
Additionally, observe the try.sh script uses the following display the program’s output:
./prog | cat
However, the following may, for some environments, will print what seems like garbage:
./prog
Explain why this command:
./prog | cat > foo
may produce, for some environments, different output than the following command:
./prog > bar
The above fun challenge is still open. See the “Fun challenge Info” section for details.
Author’s remarks:
A little song (and no dance)
What this program does is plain to see, as the only one variable it uses is e. No other identifiers there you’ll discern, except the required printf, calloc, and main.
The constant is printed, to quite a few digits, yet there’s none in the source, you’d better believe it. Yes, “Where are the constants inside?” you may wonder, No Zero, nor One, and none any other.
“What of string constants?” You might indeed ask. So many printfs, they must have formats, but none will you find, no there is no trick, All prints are achieved by some arithmetic.
The program’s a bit longer than it should be, as it tries to support also big endianity. Though try it does, there is a small snag, there’s no CCOI contest, I guess it’s a bug!
And some history
An earlier version of the entry was written more than a decade ago, and failed to make it. The only simple simple change in the output updating 2015 to 2026 was quite a bit of a challenge, which means indeed the level of obfuscation is considerable.
The remarks song was written a decade ago too, so, no AI chatbot was abused, and its an entirely original work.
Indeed, the program is treading some familiar themes and there’s been the 1989/roemer entry, but it had lots more variables and constants. I’d say this entry is the C programming constrained writing OuLiPo inverse of Perecs A void.
A note about the layout
This was the other main change of the original. Indeed the layout is quite extremely sparse and has to be viewed with tabstop 8, and a rather big terminal. And then take limit at infinity :)
Inventory for 2025/dogon
Primary files
- prog.c - entry source code
- Makefile - entry Makefile
- prog.orig.c - original source code
- try.sh - script to try entry
Secondary files
- 2025_dogon.tar.bz2 - download entry tarball
- README.md - markdown source for this web page
- .entry.json - entry summary and manifest in JSON
- .gitignore - list of files that should not be committed under git
- .path - directory path from top level directory
- .date-range - copyright date range for this directory
- index.html - this web page
Jump to: top
