diff --git a/1989/paul/README.md b/1989/paul/README.md index 3cf7b1925..d245010c4 100644 --- a/1989/paul/README.md +++ b/1989/paul/README.md @@ -41,9 +41,8 @@ better debugger or trace could easily be added. ## Judges' remarks: -The author's comments is a detailed program explanation and spoiler. If you -want a real challenge, don't read any further and try to understand the program -via the source. +The author's comments is a detailed program explanation, if you wish to learn more about the obfuscation method used. + ### Historical note: @@ -55,6 +54,14 @@ However as this is no longer a problem the trailing `\` has been restored in all versions, both the original and the fixed for modern systems version. +### 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. + + ## Author's remarks: This programs computes and prints Fibonacci numbers by diff --git a/1989/paul/index.html b/1989/paul/index.html index a1e6b45f6..bd8b72d54 100644 --- a/1989/paul/index.html +++ b/1989/paul/index.html @@ -420,15 +420,17 @@ better debugger or trace could easily be added.

Alternate use:

    ./paul.alt

Judges’ remarks:

-

The author’s comments is a detailed program explanation and spoiler. If you -want a real challenge, don’t read any further and try to understand the program -via the source.

+

The author’s comments is a detailed program explanation, if you wish to learn more about the obfuscation method used.

Historical note:

The original source contained a long line which caused many mailers to barf. The original file may be re-constructed by removing the trailing \ on line 12 and joining lines 12 and 13 together without a space.

However as this is no longer a problem the trailing \ has been restored in all versions, both the original and the fixed for modern systems version.

+

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.

Author’s remarks:

This programs computes and prints Fibonacci numbers by simulating a Turing machine with the proper program. diff --git a/1990/dg/README.md b/1990/dg/README.md index 3442cd15b..1f436f180 100644 --- a/1990/dg/README.md +++ b/1990/dg/README.md @@ -43,7 +43,16 @@ which we have done for the wider audience. If my preprocessor could hack it, I could write this as one single line rather than 4, but when I do that I get a complaint "defines nested too deeply". -### Obfuscation spoiler: + +### 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. + + +### How this entry works: This is another rot13 job (believe it or not) - the `#define`s are a novel way of adding tokens: `#define b12(x) 12 x` means that at diff --git a/1990/dg/index.html b/1990/dg/index.html index e08a74c41..4b0cb4f4c 100644 --- a/1990/dg/index.html +++ b/1990/dg/index.html @@ -418,7 +418,11 @@ which we have done for the wider audience.

Author’s remarks:

If my preprocessor could hack it, I could write this as one single line rather than 4, but when I do that I get a complaint “defines nested too deeply”.

-

Obfuscation spoiler:

+

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.

+

How this entry works:

This is another rot13 job (believe it or not) - the #defines are a novel way of adding tokens: #define b12(x) 12 x means that at some point in the source a 12 is followed by the compressed nested diff --git a/1990/pjr/README.md b/1990/pjr/README.md index 47f2cc0db..30466fff1 100644 --- a/1990/pjr/README.md +++ b/1990/pjr/README.md @@ -55,7 +55,15 @@ By use of pointers to functions returning a struct of pointers to functions! -### Spoiler: +### 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: diff --git a/1990/pjr/index.html b/1990/pjr/index.html index 476f8dfd8..e5c9abf50 100644 --- a/1990/pjr/index.html +++ b/1990/pjr/index.html @@ -425,7 +425,11 @@ well.

it is done?

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

-

Spoiler:

+

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

diff --git a/1991/davidguy/README.md b/1991/davidguy/README.md index c34c8e869..b88954d8c 100644 --- a/1991/davidguy/README.md +++ b/1991/davidguy/README.md @@ -86,7 +86,16 @@ In other words, even if we took steps to present the algorithm clearly, (we haven't) the relation of the computation performed to the specification of what the program was supposed to do would still be hard to understand. -### Quasi-spoiler on internals: + +### 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. + + +### How this entry works: The program plays [Conway's Game of Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) in the root window's diff --git a/1991/davidguy/index.html b/1991/davidguy/index.html index 8a8af4008..608a3322f 100644 --- a/1991/davidguy/index.html +++ b/1991/davidguy/index.html @@ -458,7 +458,11 @@ In other words, even if we took steps to present the algorithm clearly, (we haven’t) the relation of the computation performed to the specification of what the program was supposed to do would still be hard to understand.

-

Quasi-spoiler on internals:

+

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.

+

How this entry works:

The program plays Conway’s Game of Life in the root window’s background pixmap. It starts by setting the background to random diff --git a/1992/gson/README.md b/1992/gson/README.md index 2df7c256d..1627e0177 100644 --- a/1992/gson/README.md +++ b/1992/gson/README.md @@ -142,10 +142,18 @@ eliminated. As AG also refrains from abusing the preprocessor, it doesn't really have much to offer in terms of "surface obfuscation". Instead, it tries to achieve both its speed and its obscurity through a careful choice of algorithms. Some of the finer points of those -algorithms are outlined in the spoiler below. +algorithms are outlined the section below. -### How it works: +### 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. + + +### How this entry works: Here follows a description of some of the data structures and algorithms used by AG. It is by no means complete, but it may help diff --git a/1992/gson/index.html b/1992/gson/index.html index 2837478c5..79717e591 100644 --- a/1992/gson/index.html +++ b/1992/gson/index.html @@ -487,8 +487,12 @@ eliminated. As AG also refrains from abusing the preprocessor, it doesn’t really have much to offer in terms of “surface obfuscation”. Instead, it tries to achieve both its speed and its obscurity through a careful choice of algorithms. Some of the finer points of those -algorithms are outlined in the spoiler below.

-

How it works:

+algorithms are outlined the section below.

+

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.

+

How this entry works:

Here follows a description of some of the data structures and algorithms used by AG. It is by no means complete, but it may help you get an idea about the general principles.

diff --git a/1993/plummer/README.md b/1993/plummer/README.md index 653c4578c..4a55a6c27 100644 --- a/1993/plummer/README.md +++ b/1993/plummer/README.md @@ -125,7 +125,16 @@ compilers) complain that there is no control path leading to a return from `main()`. At 125 characters, it still fits on a single line (for those of us who don't mind ruining our eyes with 132 column screens). -### Obfuscation: + +### 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. + + +### How this entry works: The first statement points the base of `l` (the argument vector) to be the first argument by incrementing it. It then assigns `O` to diff --git a/1993/plummer/index.html b/1993/plummer/index.html index 696078dc2..9b88f63f8 100644 --- a/1993/plummer/index.html +++ b/1993/plummer/index.html @@ -481,7 +481,11 @@ return causes the line just written to be overwritten. lint (and mo compilers) complain that there is no control path leading to a return from main(). At 125 characters, it still fits on a single line (for those of us who don’t mind ruining our eyes with 132 column screens).

-

Obfuscation:

+

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.

+

How this entry works:

The first statement points the base of l (the argument vector) to be the first argument by incrementing it. It then assigns O to point to the character before the first character of the second diff --git a/1994/horton/README.md b/1994/horton/README.md index 7f94673a0..4a4d0bcb2 100644 --- a/1994/horton/README.md +++ b/1994/horton/README.md @@ -68,7 +68,15 @@ numbers to get a pleasing result, or use it for your high school algebra class. -### SPOILER: +### 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 artists, splattering their cubes with graphs @@ -85,6 +93,9 @@ See the [gtface](%%REPO_URL%%/1994/horton/gtface.c) program for another example. ./gtface < gtface.data ``` + +### How this entry works: + For more information, see my article [Using GraphTab; USENIX ;login: Sept/Oct 1992, pages 28-31](login_sept92-pp28-31.pdf). diff --git a/1994/horton/index.html b/1994/horton/index.html index 000d0e281..a552e5c36 100644 --- a/1994/horton/index.html +++ b/1994/horton/index.html @@ -429,7 +429,11 @@ newsletter and a PDF file of just the pages cited.

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.

-

SPOILER:

+

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 artists, splattering their cubes with graphs of their cubic equations. Those dastardly arguments are mere coefficients, @@ -439,6 +443,7 @@ 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,,,
diff --git a/1994/imc/README.md b/1994/imc/README.md
index fbc1cbbe6..c38dfef58 100644
--- a/1994/imc/README.md
+++ b/1994/imc/README.md
@@ -44,7 +44,16 @@ parameter or an invalid parameter is given, then 5 is assumed.  The
 maximum parameter is determined only by the amount of CPU time, virtual
 memory and display (or file) space available.
 
-### OBFUSCATION:
+
+### 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.
+
+
+### How this entry works:
 
 OK, so you have probably seen magic square printers before.  But what
 about one that deals with even sizes as well as odd ones, or one that
diff --git a/1994/imc/index.html b/1994/imc/index.html
index 72f3886a5..b97d72533 100644
--- a/1994/imc/index.html
+++ b/1994/imc/index.html
@@ -424,7 +424,11 @@ other functions (apart from main()).

parameter or an invalid parameter is given, then 5 is assumed. The maximum parameter is determined only by the amount of CPU time, virtual memory and display (or file) space available.

-

OBFUSCATION:

+

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.

+

How this entry works:

OK, so you have probably seen magic square printers before. But what about one that deals with even sizes as well as odd ones, or one that prints out a different one each time (or attempts to, at any rate)?

diff --git a/1994/schnitzi/README.md b/1994/schnitzi/README.md index 7f0372fd2..0961fcd2f 100644 --- a/1994/schnitzi/README.md +++ b/1994/schnitzi/README.md @@ -83,6 +83,14 @@ You might also wish to redirect the output to another file, compile it and compare how it works to the original code. +### 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. + + ## Author's remarks: This is a program which takes any text file as input and 'flips' diff --git a/1994/schnitzi/index.html b/1994/schnitzi/index.html index 3a88349e9..c01fc6024 100644 --- a/1994/schnitzi/index.html +++ b/1994/schnitzi/index.html @@ -438,6 +438,10 @@ is different, but there is more than meets the diff’s eye. Can yo find out why?

You might also wish to redirect the output to another file, compile it and compare how it works to the original code.

+

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.

Author’s remarks:

This is a program which takes any text file as input and ‘flips’ the input file along a diagonal running from the top left corner diff --git a/1994/tvr/README.md b/1994/tvr/README.md index abb2227de..2849f4b9c 100644 --- a/1994/tvr/README.md +++ b/1994/tvr/README.md @@ -39,11 +39,19 @@ Mode may be a value from 0 to 12. ## Alternate code: -The author provided us a spoiler version that might be of interest to some. + +### 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 without looking at the Alternate code. + +If you get stuck, come back and look at the Alternate code. ### Alternate build: +The author provided us a less obfuscated version that might be of interest to some. + ``` make alt ``` diff --git a/1994/tvr/index.html b/1994/tvr/index.html index 75a70fe51..5d00f95bb 100644 --- a/1994/tvr/index.html +++ b/1994/tvr/index.html @@ -416,8 +416,12 @@ code below.

    ./try.color.sh              # for colour displays
     ./try.bw.sh                 # for Black & White displays

Alternate code:

-

The author provided us a spoiler version that might be of interest to some.

+

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 without looking at the Alternate code.

+

If you get stuck, come back and look at the Alternate code.

Alternate build:

+

The author provided us a less obfuscated version that might be of interest to some.

    make alt

Alternate use:

    ./tvr.alt altmode screensize/2 < colormapfile
diff --git a/1994/westley/README.md b/1994/westley/README.md index 457d6beee..7852c52c2 100644 --- a/1994/westley/README.md +++ b/1994/westley/README.md @@ -111,7 +111,13 @@ To see the game from start to complete, try: Not all compiler errors are bad. -For spoilers see the end of the notes from the author below. + +### 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. ## Author's remarks: diff --git a/1994/westley/index.html b/1994/westley/index.html index 26bb05453..4d4f423bd 100644 --- a/1994/westley/index.html +++ b/1994/westley/index.html @@ -463,7 +463,10 @@ arguments:

    ./try.sh

Judges’ remarks:

Not all compiler errors are bad.

-

For spoilers see the end of the notes from the author below.

+

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.

Author’s remarks:

This program, in accordance with the rules, compiles into a legal C program without human intervention. However, it simply compiles diff --git a/1995/leo/README.md b/1995/leo/README.md index 60835057e..60f9b1414 100644 --- a/1995/leo/README.md +++ b/1995/leo/README.md @@ -254,6 +254,19 @@ Special thanks: [isotopes](https://en.wikipedia.org/wiki/Isotope). +### 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. + + +### Secret switch + +See [secret.html[(secret.html) for a bit if secret switch information. + + ./huffman < huffman.c 2>/dev/null diff --git a/1996/huffman/index.html b/1996/huffman/index.html index f055033d0..bad988a26 100644 --- a/1996/huffman/index.html +++ b/1996/huffman/index.html @@ -412,10 +412,13 @@ Location: US - United States of America

Try:

    ./try.sh

Judges’ remarks:

-

If you are still confused and want to read a spoiler, check out +

If you are still confused, check out the source and it will be clear as mud!

And for a misleading hint, consider who won! :-)

-

And if you really can’t see what is going on, here is an extra spoiler:

+

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 without running the command below.

+

If you get stuck, come back and run the following command:

    ./huffman < huffman.c 2>/dev/null

This entry was very well received at the IOCCC BOF.

Author’s remarks:

diff --git a/1998/df/README.md b/1998/df/README.md index 96dddf480..9d4994a8d 100644 --- a/1998/df/README.md +++ b/1998/df/README.md @@ -110,6 +110,17 @@ My first private version would only run when compiled on a Friday. I decided it would be better this way... These restrictions have been removed for your convenience. + +### 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. + + +### How this entry works: + The following lines describe how this program works; if you don't want to know it at this time, please skip them. If this entry would by some mistake win the contest, please do not rot13 this - I hate @@ -118,9 +129,6 @@ reverse them. Anyone out there should have enough discipline and rot13 shouldn't be required, really. After all, we are not children anymore :-) - -## Obfuscation information: -
This paragraph is not part of the author's remarks, but is a helpful diff --git a/1998/df/index.html b/1998/df/index.html index 736d47882..59000850f 100644 --- a/1998/df/index.html +++ b/1998/df/index.html @@ -480,6 +480,11 @@ some restrictions on the file name:

My first private version would only run when compiled on a Friday. I decided it would be better this way… These restrictions have been removed for your convenience.

+

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.

+

How this entry works:

The following lines describe how this program works; if you don’t want to know it at this time, please skip them. If this entry would by some mistake win the contest, please do not rot13 this - I hate @@ -487,7 +492,6 @@ rot13 spoilers since it is somewhat complicated on a Mac to reverse them. Anyone out there should have enough discipline and rot13 shouldn’t be required, really. After all, we are not children anymore :-)

-

Obfuscation information:


This paragraph is not part of the author’s remarks, but is a helpful gift from the judges; if you read too fast to stop yourself, this should diff --git a/1998/dorssel/README.md b/1998/dorssel/README.md index cba30b407..390a1125e 100644 --- a/1998/dorssel/README.md +++ b/1998/dorssel/README.md @@ -111,14 +111,30 @@ is the same as ./dorssel < dorssel.c | ./dorssel ``` -- The file [dorssel.html](dorssel.html) contains all the information needed to -understand this program. For spoiler information, try: + +### 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 without running the command below. + +If you get stuck, come back and run the following command: ``` ./dorssel < dorssel.md ``` +### 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. + +- The file [dorssel.html](dorssel.html) contains all the information needed to +understand this program. For spoiler information, try: + + +

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.

Obfuscation

The program implements a so called Krivine machine, enhanced with a basic diff --git a/2012/tromp/how.md b/2012/tromp/how.md index 9a2ab4fbe..30bea39d4 100644 --- a/2012/tromp/how.md +++ b/2012/tromp/how.md @@ -1,3 +1,11 @@ +### 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. + + # Obfuscation The program implements a so called [Krivine diff --git a/2012/tromp/index.html b/2012/tromp/index.html index 004fd0d77..c1e875a9a 100644 --- a/2012/tromp/index.html +++ b/2012/tromp/index.html @@ -743,8 +743,6 @@ separate How the program works -

See the file how.html.

Acknowledgements

Christopher Hendrie, Bertram Felgenhauer, Alex Stangl, Seong-hoon Kang, and Yusuke Endoh have contributed ideas and @@ -759,6 +757,12 @@ Cambridge Tracts in Theoretical Computer Science, Cambridge University Press, Oc A call-by-name lambda-calculus machine Higher Order Symbol. Comput. 20, 3 (September 2007), 199-207. http://www.pps.univ-paris-diderot.fr/~krivine/articles/lazymach.pdf

+

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.

+

How this entry works:

+

See the file how.html.

+

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.

Q(uine)R code generator

What is difficult?

As you may know, QR code (specification: ISO/IEC 18004) is quite complex. It diff --git a/2014/endoh1/quine-qr.md b/2014/endoh1/quine-qr.md index d187deb3e..0a4c68ea1 100644 --- a/2014/endoh1/quine-qr.md +++ b/2014/endoh1/quine-qr.md @@ -1,3 +1,11 @@ +### 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. + + # Q(uine)R code generator ## What is difficult? diff --git a/2015/burton/README.md b/2015/burton/README.md index 093f49e58..4b40c3c39 100644 --- a/2015/burton/README.md +++ b/2015/burton/README.md @@ -228,10 +228,19 @@ This allows for a convenient test suite: ``` +### 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. + + ### Obfuscation: If you do not want to puzzle out how it works, see [obfuscation.html](obfuscation.html). + - ./msg9 < prog.c -``` - -But what combinations will generate `./msg3`, `./msg4`, `./msg5`, `./msg6`, -`./msg7`, `./msg8` and finally `./msg9`? - ## Author's remarks: @@ -169,6 +160,34 @@ will look weird after rotation, for example. `Nuko` compiles without warnings with all compilers above, even with `-Wall -Wextra -pedantic` for gcc and clang. + +### 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 without running the command below. + +If you get stuck, come back and run the following command: + +``` + ./msg9 < prog.c +``` + +But what combinations will generate `./msg3`, `./msg4`, `./msg5`, `./msg6`, +`./msg7`, `./msg8` and finally `./msg9`? + +For more hints try: + +``` + make details +``` + +And for the last word, try: + +``` + make the_last_word +``` + + out=cat ./check.sh ./prog ``` +Instead of checking correctness, the +[check.sh](%%REPO_URL%%/2019/burton/check.sh) script can simply +output the results: + Interestingly, and a spoiler here: macOS and FreeBSD implement the common utility "correctly". CentOS and Ubuntu both share a "flawed" utility that changes output format based upon input redirection or pipeline(!). As well, the diff --git a/2019/burton/index.html b/2019/burton/index.html index 1a9769c5f..57ea5fc9f 100644 --- a/2019/burton/index.html +++ b/2019/burton/index.html @@ -428,10 +428,15 @@ The output should look familiar.

cc -Wall -Wextra -Weverything -pedantic $WARN -include stdio.h -o prog prog.c

Description:

Included is a test script, useful for the corner cases. As in all good Unix -programs, it is silent upon success; any output demonstrates an error. Instead -of checking correctness, the check.sh script can simply output the -results: (The Makefile contains the spoiler):

+programs, it is silent upon success; any output demonstrates an error.

+

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 without running the command below.

+

If you get stuck, come back and run the following command:

    out=cat ./check.sh ./prog
+

Instead of checking correctness, the +check.sh script can simply +output the results:

Interestingly, and a spoiler here: macOS and FreeBSD implement the common utility “correctly”. CentOS and Ubuntu both share a “flawed” utility that changes output format based upon input redirection or pipeline(!). As well, the diff --git a/2019/dogon/README.md b/2019/dogon/README.md index 5dee9abfe..383afb6a7 100644 --- a/2019/dogon/README.md +++ b/2019/dogon/README.md @@ -225,20 +225,6 @@ character juxtaposed against a very ancient one, not to mention the program includes some famous name dropping and documents itself as usual. -### Further spoilers, engineering, and obfuscation galore: - -Those wait for you, curious and intrepid reader, in the attached -[apholife.c](%%REPO_URL%%/2019/dogon/apholife.c) file, which is a partially obfuscated version of the -program I wrote with a lot of helpful annotations and comments for myself and -posterity, revealing some of the magic under the hood. This program is also a -somewhat improved version which uses `ldexp()`s in the draw routine and has -bigger constants, so it can zoom up to level 1024 if memory allows, and it tries -its best to avoid dumping core on the poor user when its memory runs out, rather -it enters freeze mode where you can still travel in calculated frozen -space-time. Well, it's not nice and tame, it even has an escape key, usage -message, and to top it all it even avoids `gets(3)`! - - ### Special thanks: To Tom Rockiki, the original co-writer of Golly, a personal friend and hashlife @@ -258,6 +244,28 @@ most obfuscated way of calculating the GOL function on a 64 bits `8*8` leaf: This uses only 19 bitwise operations and six shifts to calculate the inner 6x6 next generation bits of the input 8x8 ! + +### 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. + + +### Further information, engineering, and obfuscation galore: + +Those wait for you, curious and intrepid reader, in the attached +[apholife.c](%%REPO_URL%%/2019/dogon/apholife.c) file, which is a partially obfuscated version of the +program I wrote with a lot of helpful annotations and comments for myself and +posterity, revealing some of the magic under the hood. This program is also a +somewhat improved version which uses `ldexp()`s in the draw routine and has +bigger constants, so it can zoom up to level 1024 if memory allows, and it tries +its best to avoid dumping core on the poor user when its memory runs out, rather +it enters freeze mode where you can still travel in calculated frozen +space-time. Well, it's not nice and tame, it even has an escape key, usage +message, and to top it all it even avoids `gets(3)`! + (./prog < hint.hs ; cat prog.c) > hint.c make hint diff --git a/2019/lynn/index.html b/2019/lynn/index.html index 3dedc1d56..e6bf872b9 100644 --- a/2019/lynn/index.html +++ b/2019/lynn/index.html @@ -443,10 +443,14 @@ includes Self-hosting compiler: -

To avoid spoiling this entry by revealing the original Haskell source, we +

To avoid revealing the original Haskell source, we instead provide hint.hs, the output of a certain stage of the compiler when run on itself. This intermediate output is hopefully difficult to understand, yet is accepted by our compiler:

+

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 without running the command below.

+

If you get stuck, come back and run the following command:

    (./prog < hint.hs ; cat prog.c) > hint.c
     make hint
     ./hint
diff --git a/2019/poikola/README.md b/2019/poikola/README.md index f8fdf2ef3..7f158676f 100644 --- a/2019/poikola/README.md +++ b/2019/poikola/README.md @@ -228,7 +228,15 @@ compilers. Small change in code can produce really unexpected results, i.e. the compiler can skip a few expressions or statements without obvious reason. -### Major spoilers +### 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. + + +### How this entry works: It is commonly believed that [Mike Keith's algorithm](http://www.cadaeic.net/calendar.htm) published in _Journal of diff --git a/2019/poikola/index.html b/2019/poikola/index.html index db6c1f040..d45605a26 100644 --- a/2019/poikola/index.html +++ b/2019/poikola/index.html @@ -521,7 +521,11 @@ prime is missing from output.

achieve exactly the same output from different optimization levels and compilers. Small change in code can produce really unexpected results, i.e. the compiler can skip a few expressions or statements without obvious reason.

-

Major spoilers

+

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.

+

How this entry works:

It is commonly believed that Mike Keith’s algorithm published in Journal of Recreational Mathematics, Vol. 22, No. 4, 1990, p. 280, is the shortest way to diff --git a/2020/README.md b/2020/README.md index 41b12342d..e7cffedd0 100644 --- a/2020/README.md +++ b/2020/README.md @@ -27,7 +27,7 @@ and [Snake - 2020/ferguson1](ferguson1/index.html). An entry, [kurdyukov1](kurdyukov1/index.html), pays homage to the previous entry [2015/hou](../2015/hou/index.html). -...We'll stop spouting spoilers now. Have fun exploring all the entries! +...We'll stop spouting too many details now. Have fun exploring all the entries! ## Remarks on some of submissions that did not win diff --git a/2020/index.html b/2020/index.html index 1cb6b00fe..16b23197c 100644 --- a/2020/index.html +++ b/2020/index.html @@ -405,7 +405,7 @@ IOCCC list!

and Snake - 2020/ferguson1.

An entry, kurdyukov1, pays homage to the previous entry 2015/hou.

-

…We’ll stop spouting spoilers now. Have fun exploring all the entries!

+

…We’ll stop spouting too many details now. Have fun exploring all the entries!

Remarks on some of submissions that did not win

As a rule, we try to compile the entries on a variety of platforms. Quite a few entries this year could not be built or executed on some of them due to reliance diff --git a/tmp/manifest.csv b/tmp/manifest.csv index f0515913d..1897a1976 100644 --- a/tmp/manifest.csv +++ b/tmp/manifest.csv @@ -1905,7 +1905,7 @@ 2004,hibachi,src/localhost/test/perl/yahoo-ticker.pl,150,true,perl,true,stock price fetch example in Perl 2004,hibachi,src/configure.in,200,true,shellscript,true,GNU Autoconf script 2004,hibachi,src/hibachi-start.sh.in,200,true,shellscript,true,hibachi-start.sh declarations -2004,hibachi,src/localhost/CHANGES-SPOILER.TXT,200,true,text,false,spoiler change log +2004,hibachi,src/localhost/CHANGELOG.TXT,200,true,text,false,obfuscation change log 2004,hibachi,2004_hibachi.tar.bz2,1415926535,false,tbz2,false,download entry tarball 2004,hibachi,README.md,4000000000,true,markdown,true,markdown source for this web page 2004,hibachi,.entry.json,4000000000,true,json,true,entry summary and manifest in JSON diff --git a/tmp/manifest.numbers b/tmp/manifest.numbers index fd72f7fd4..9708d4d72 100644 Binary files a/tmp/manifest.numbers and b/tmp/manifest.numbers differ diff --git a/tmp/path_list.found.txt b/tmp/path_list.found.txt index e840fcd71..703972444 100644 --- a/tmp/path_list.found.txt +++ b/tmp/path_list.found.txt @@ -1902,8 +1902,8 @@ 2004/hibachi/src/configure.in 2004/hibachi/src/hibachi-start.sh 2004/hibachi/src/hibachi-start.sh.in +2004/hibachi/src/localhost/CHANGELOG.TXT 2004/hibachi/src/localhost/CHANGES-OBFUSCATED.TXT -2004/hibachi/src/localhost/CHANGES-SPOILER.TXT 2004/hibachi/src/localhost/Img/cygwin-icon.gif 2004/hibachi/src/localhost/Img/freebsd.gif 2004/hibachi/src/localhost/Img/hibachi-256-oc-nc-300x150.gif diff --git a/tmp/path_list.manifest.txt b/tmp/path_list.manifest.txt index e840fcd71..703972444 100644 --- a/tmp/path_list.manifest.txt +++ b/tmp/path_list.manifest.txt @@ -1902,8 +1902,8 @@ 2004/hibachi/src/configure.in 2004/hibachi/src/hibachi-start.sh 2004/hibachi/src/hibachi-start.sh.in +2004/hibachi/src/localhost/CHANGELOG.TXT 2004/hibachi/src/localhost/CHANGES-OBFUSCATED.TXT -2004/hibachi/src/localhost/CHANGES-SPOILER.TXT 2004/hibachi/src/localhost/Img/cygwin-icon.gif 2004/hibachi/src/localhost/Img/freebsd.gif 2004/hibachi/src/localhost/Img/hibachi-256-oc-nc-300x150.gif diff --git a/tmp/path_list.required.txt b/tmp/path_list.required.txt index 2cbccb8b1..f7c83097a 100644 --- a/tmp/path_list.required.txt +++ b/tmp/path_list.required.txt @@ -1259,8 +1259,8 @@ 2004/hibachi/src/configure.in 2004/hibachi/src/hibachi-start.sh 2004/hibachi/src/hibachi-start.sh.in +2004/hibachi/src/localhost/CHANGELOG.TXT 2004/hibachi/src/localhost/CHANGES-OBFUSCATED.TXT -2004/hibachi/src/localhost/CHANGES-SPOILER.TXT 2004/hibachi/src/localhost/Img/cygwin-icon.gif 2004/hibachi/src/localhost/Img/freebsd.gif 2004/hibachi/src/localhost/Img/hibachi-256-oc-nc-300x150.gif