Files
ioccc/1990/pjr
Cody Boone Ferguson 265733ac88 Major FAQ updates
A number of question answers have been merged and shortened somewhat.

Fix link in the menu of all html pages and the inc/ files that was
broken due to renaming an anchor.

The guidelines and rules have had a link fix (to the FAQ) as well as
some additional points added about the mkiocccentry toolkit.

More work in the FAQ needs to be done, including with the how to enter
the IOCCC, but as so much work has been done already I have decided to
make the commit to get these many important changes out of the way.
2024-10-21 10:03:24 -07:00
..
2024-10-21 10:03:24 -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.