Files
ioccc/1990/pjr
Landon Curt Noll c78bda6c0f update tarballs due to recent commits
The commit a1c86c8a7a modified
the navigation bars to include "Original C", so all tarballs
had be update, sorry (tm Canada 🇨🇦).  In particular:

The navigation bar for a winning entry now has a "_Original C_" link
(between the ✅ and the Inventory on the right hand side) so that one
may easily view the original C code that was submitted for IOCCC judging.

In addition, a number of other commits since that time
modified other winning entries.

Ran `make update` to perform the above.
2025-08-18 16:30:59 -07:00
..
2023-11-03 09:09:31 -07:00
2022-09-18 23:37:49 -07:00
2023-07-06 21:49:38 -07:00

To build:

    make all

There is an alternate version that does something different that can be used if your compiler is incapable of compiling X=g()... in main(). It can be used for another purpose too.

To use:

    ./pjr

Alternate code:

Note that some compilers will be unable to compile the expression X=g()... in main() due to lack of temporary stack space. One might want to try replacing main() with:

    main(){X=s().v().o().o().l().S().d().l().i().o().w().N();}

if this is a problem, which is what this alternate code is.

NOTE: it prints something else and it is what the author suggested one try as well.

Alternate build:

    make alt

Alternate use:

    ./pjr.alt

Judges' remarks:

This program prints out a string. Can you figure out how it is done?

By use of pointers to functions returning a struct of pointers to functions!

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:

This program prints out the string:

the quick brown fox jumped over the lazy dog

Author's remarks:

It is simple to make the program print other strings. Each alphabetical character from a to z is printed out as its opposite:

    a->z b->y c->x etc

To encode a new string input the string as it is meant to come out:

    X=s().v().o().o().l().S().d().l().i().o().w().N();

Note: S() represents a space and N() a newline. This will now produce...

    hello world

By the way, there is actually a piece of code which is not used in the original program! I leave it as an intellectual exercise to the reader to find out what it is.