diff --git a/1989/paul/README.md b/1989/paul/README.md index 3cf7b1925d..d245010c4b 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 a1e6b45f6c..bd8b72d54c 100644 --- a/1989/paul/index.html +++ b/1989/paul/index.html @@ -420,15 +420,17 @@

Alternate build:

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 3442cd15ba..1f436f1801 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 e08a74c413..4b0cb4f4cc 100644 --- a/1990/dg/index.html +++ b/1990/dg/index.html @@ -418,7 +418,11 @@

Judges’ remarks:

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 47f2cc0db7..30466fff17 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 476f8dfd8e..e5c9abf505 100644 --- a/1990/pjr/index.html +++ b/1990/pjr/index.html @@ -425,7 +425,11 @@

Judges’ remarks:

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 c34c8e869f..b88954d8c4 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 8a8af40089..608a3322fa 100644 --- a/1991/davidguy/index.html +++ b/1991/davidguy/index.html @@ -458,7 +458,11 @@

Authors’ remarks:

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 2df7c256de..1627e01775 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 2837478c5d..79717e591f 100644 --- a/1992/gson/index.html +++ b/1992/gson/index.html @@ -487,8 +487,12 @@

Obfuscatory notes

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 653c4578c9..4a55a6c270 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 696078dc21..9b88f63f84 100644 --- a/1993/plummer/index.html +++ b/1993/plummer/index.html @@ -481,7 +481,11 @@

Author’s remarks:

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 7f94673a07..4a4d0bcb26 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 000d0e281b..a552e5c36a 100644 --- a/1994/horton/index.html +++ b/1994/horton/index.html @@ -429,7 +429,11 @@

Author’s remarks:

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 @@

SPOILER:

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 fbc1cbbe61..c38dfef58c 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 72f3886a5a..b97d72533b 100644
--- a/1994/imc/index.html
+++ b/1994/imc/index.html
@@ -424,7 +424,11 @@ 

Author’s remarks:

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 7f0372fd2a..0961fcd2f7 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 3a88349e9b..c01fc60244 100644 --- a/1994/schnitzi/index.html +++ b/1994/schnitzi/index.html @@ -438,6 +438,10 @@

Judges’ remarks:

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 abb2227de5..2849f4b9cb 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 75a70fe51c..5d00f95bbe 100644 --- a/1994/tvr/index.html +++ b/1994/tvr/index.html @@ -416,8 +416,12 @@

Try:

    ./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 457d6beee5..7852c52c2f 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 26bb054539..4d4f423bd0 100644 --- a/1994/westley/index.html +++ b/1994/westley/index.html @@ -463,7 +463,10 @@

Original try:

    ./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 60835057e1..60f9b1414c 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 f055033d01..bad988a269 100644 --- a/1996/huffman/index.html +++ b/1996/huffman/index.html @@ -412,10 +412,13 @@

To use:

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 96dddf4802..9d4994a8d2 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 736d47882d..59000850fd 100644 --- a/1998/df/index.html +++ b/1998/df/index.html @@ -480,6 +480,11 @@

Author’s remarks:

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 @@

Author’s remarks:

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 cba30b4072..390a1125e4 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 9a2ab4fbe6..30bea39d45 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 004fd0d775..c1e875a9ae 100644 --- a/2012/tromp/index.html +++ b/2012/tromp/index.html @@ -743,8 +743,6 @@

Portability

and from a hardcoded sizeof of 4 to 8.

The program has been tested to work correctly on Linux/Solaris/MacOSX both in 32 and 64 bits.

-

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 @@

References

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 d187deb3e0..0a4c68ea12 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 093f49e583..4b40c3c391 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 1a9769c5f5..57ea5fc9f7 100644 --- a/2019/burton/index.html +++ b/2019/burton/index.html @@ -428,10 +428,15 @@

Synopsis:

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 5dee9abfe4..383afb6a72 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 3dedc1d564..e6bf872b95 100644 --- a/2019/lynn/index.html +++ b/2019/lynn/index.html @@ -443,10 +443,14 @@

Fibonacci numbers:

and shows GHC also accepts our subset of Haskell:

    ghc ghcfib.hs

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 f8fdf2ef3c..7f158676f7 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 db6c1f040e..d45605a263 100644 --- a/2019/poikola/index.html +++ b/2019/poikola/index.html @@ -521,7 +521,11 @@

Observations

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 41b12342d1..e7cffedd0d 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 1cb6b00fe1..16b23197cf 100644 --- a/2020/index.html +++ b/2020/index.html @@ -405,7 +405,7 @@

Remarks on some of the winning e 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 f0515913d7..1897a1976c 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 fd72f7fd4e..9708d4d720 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 e840fcd71f..7039724449 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 e840fcd71f..7039724449 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 2cbccb8b17..f7c83097ab 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