add notices to those who wish for a greater challenge

We add the following level-3 header to help people identify text
they may wish to skip if they wish for a greater challenge:

```
```

After that notice we add:

```
**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.
```

And sometimes follow with:

```
```

Or sometimes follow with:

```
```

Where the alt code impacts a "greater challenge", we add instead:

```
**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.
```

And where a given command impacts a "greater challenge", we add instead:

```
**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:
```

Perform `make www` to perform the above and test under macOS.
This commit is contained in:
Landon Curt Noll committed 2024-07-07 00:25:20 -07:00
1 parent 7af7a80cca
commit 2e2ae5f132
112 files changed
+845 -216

No files matched your search

+10 -3
View File
@@ -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
+5 -3
View File
@@ -420,15 +420,17 @@ better debugger or trace could easily be added.</p>
<h3 id="alternate-use">Alternate use:</h3>
<pre><code> ./paul.alt</code></pre>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>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.</p>
<p>The author’s comments is a detailed program explanation, if you wish to learn more about the obfuscation method used.</p>
<h3 id="historical-note">Historical note:</h3>
<p>The original source contained a long line which caused many mailers to barf.
The original file may be re-constructed by removing the trailing <code>\</code> on line 12
and joining lines 12 and 13 together without a space.</p>
<p>However as this is no longer a problem the trailing <code>\</code> has been restored in all
versions, both the original and the fixed for modern systems version.</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>This programs computes and prints Fibonacci numbers by
simulating a Turing machine with the proper program.
+10 -1
View File
@@ -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
+5 -1
View File
@@ -418,7 +418,11 @@ which we have done for the wider audience.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>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”.</p>
<h3 id="obfuscation-spoiler">Obfuscation spoiler:</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>This is another rot13 job (believe it or not) - the <code>#define</code>s are a
novel way of adding tokens: <code>#define b12(x) 12 x</code> means that at
some point in the source a <code>12</code> is followed by the compressed nested
+9 -1
View File
@@ -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:
+5 -1
View File
@@ -425,7 +425,11 @@ well.</p>
it is done?</p>
<p>By use of pointers to functions returning a struct of pointers
to functions!</p>
<h3 id="spoiler">Spoiler:</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="what-this-entry-does">What this entry does:</h3>
<p>This program prints out the string:</p>
<blockquote>
<p>the quick brown fox jumped over the lazy dog</p>
+10 -1
View File
@@ -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
+5 -1
View File
@@ -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.</p></li>
</ol>
<h3 id="quasi-spoiler-on-internals">Quasi-spoiler on internals:</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>The program plays <a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Conway’s Game of
Life</a> in the root window’s
background pixmap. It starts by setting the background to random
+10 -2
View File
@@ -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
+6 -2
View File
@@ -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.</p>
<h3 id="how-it-works">How it works:</h3>
algorithms are outlined the section below.</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>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.</p>
+10 -1
View File
@@ -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
+5 -1
View File
@@ -481,7 +481,11 @@ return causes the line just written to be overwritten. <code>lint</code> (and mo
compilers) complain that there is no control path leading to a return from
<code>main()</code>. 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).</p>
<h3 id="obfuscation">Obfuscation:</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>The first statement points the base of <code>l</code> (the argument vector) to
be the first argument by incrementing it. It then assigns <code>O</code> to
point to the character before the first character of the second
+12 -1
View File
@@ -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).
+6 -1
View File
@@ -429,7 +429,11 @@ newsletter and a PDF file of just the pages cited.</p>
<p>Run it with any 4 numeric arguments, e.g. <code>./horton 3 2 1 0</code>. Play with the
numbers to get a pleasing result, or use it for your high school algebra
class.</p>
<h3 id="spoiler">SPOILER:</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="what-this-entry-does">What this entry does:</h3>
<p>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 <em>any</em> 96x160 bitmap on a dumb terminal.</
<p>See the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/gtface.c">gtface</a> program for another example. Try:</p>
<pre><code> make gtface
./gtface &lt; gtface.data</code></pre>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>For more information, see my article</p>
<p><a href="login_sept92-pp28-31.pdf">Using GraphTab; USENIX ;login: Sept/Oct 1992, pages 28-31</a>.</p>
<pre><code> MMMM,M,MM&quot;MM,,,
+10 -1
View File
@@ -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
+5 -1
View File
@@ -424,7 +424,11 @@ other functions (apart from <code>main()</code>).</p>
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.</p>
<h3 id="obfuscation">OBFUSCATION:</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>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)?</p>
+8
View File
@@ -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'
+4
View File
@@ -438,6 +438,10 @@ is different, but there is more than meets the <code>diff</code>’s eye. Can yo
find out why?</p>
<p>You might also wish to redirect the output to another file,
compile it and compare how it works to the original code.</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>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
+9 -1
View File
@@ -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.
``` <!---sh-->
make alt
```
+5 -1
View File
@@ -416,8 +416,12 @@ code</a> below.</p>
<pre><code> ./try.color.sh # for colour displays
./try.bw.sh # for Black &amp; White displays</code></pre>
<h2 id="alternate-code">Alternate code:</h2>
<p>The author provided us a spoiler version that might be of interest to some.</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program without looking at the Alternate code.</p>
<p>If you get stuck, come back and look at the Alternate code.</p>
<h3 id="alternate-build">Alternate build:</h3>
<p>The author provided us a less obfuscated version that might be of interest to some.</p>
<pre><code> make alt</code></pre>
<h3 id="alternate-use">Alternate use:</h3>
<pre><code> ./tvr.alt altmode screensize/2 &lt; colormapfile</code></pre>
+7 -1
View File
@@ -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:
+4 -1
View File
@@ -463,7 +463,10 @@ arguments:</p>
<pre><code> ./try.sh</code></pre>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>Not all compiler errors are bad.</p>
<p>For spoilers see the end of the notes from the author below.</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>This program, in accordance with the rules, compiles into a legal
C program without human intervention. However, it simply compiles
+13
View File
@@ -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.
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+6
View File
@@ -550,6 +550,12 @@ even want to explain what it does. You’ve been warned!</p>
<li>to <a href="https://en.wikipedia.org/wiki/Hydrogen">Hydrogen</a> for having 2 more
<a href="https://en.wikipedia.org/wiki/Isotope">isotopes</a>.</li>
</ul>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="secret-switch">Secret switch</h3>
<p>See [secret.html[(secret.html) for a bit if secret switch information.</p>
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+8
View File
@@ -33,6 +33,14 @@ For more detailed information see [1995/vanschnitz in bugs.html](../../bugs.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 without looking at the Alternate code.
If you get stuck, come back and look at the Alternate code.
## Alternate code:
The authors provided a deobfuscated version of the program. Originally uuencoded we
+4
View File
@@ -418,6 +418,10 @@ in 2023. See <a href="#alternate-code">Alternate code</a> below.</p>
<pre><code> ./vanschnitz</code></pre>
<h2 id="try">Try:</h2>
<pre><code> ./try.sh</code></pre>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program without looking at the Alternate code.</p>
<p>If you get stuck, come back and look at the Alternate code.</p>
<h2 id="alternate-code">Alternate code:</h2>
<p>The authors provided a deobfuscated version of the program. Originally uuencoded we
have decoded it for the wider audience in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1995/vanschnitz/vanschnitz.alt.c">vanschnitz.alt.c</a>.</p>
+8 -2
View File
@@ -32,12 +32,18 @@ For more detailed information see [1996/huffman in bugs.html](../../bugs.html#19
## 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:
``` <!---sh-->
./huffman < huffman.c 2>/dev/null
+5 -2
View File
@@ -412,10 +412,13 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
<h2 id="try">Try:</h2>
<pre><code> ./try.sh</code></pre>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>If you are still confused and want to read a spoiler, check out
<p>If you are still confused, check out
the source and it will be clear as mud!</p>
<p>And for a misleading hint, consider who won! :-)</p>
<p>And if you really can’t see what is going on, here is an extra spoiler:</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program without running the command below.</p>
<p>If you get stuck, come back and run the following command:</p>
<pre><code> ./huffman &lt; huffman.c 2&gt;/dev/null</code></pre>
<p>This entry was very well received at the IOCCC BOF.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
+11 -3
View File
@@ -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:
<hr style="width:10%;text-align:left;margin-left:0">
This paragraph is not part of the author's remarks, but is a helpful
+5 -1
View File
@@ -480,6 +480,11 @@ some restrictions on the file name:</p>
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.</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>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 :-)</p>
<h2 id="obfuscation-information">Obfuscation information:</h2>
<hr style="width:10%;text-align:left;margin-left:0">
<p>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
+18 -2
View File
@@ -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:
``` <!---sh-->
./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:
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+9 -1
View File
@@ -466,11 +466,19 @@ text that can be reversibly Morsified, i.e.</li>
<pre><code> ./dorssel &lt; dorssel.c | ./dorssel | ./dorssel | ./dorssel</code></pre>
<p>is the same as</p>
<pre><code> ./dorssel &lt; dorssel.c | ./dorssel</code></pre>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program without running the command below.</p>
<p>If you get stuck, come back and run the following command:</p>
<pre><code> ./dorssel &lt; dorssel.md</code></pre>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge-1">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<ul>
<li>The file <a href="dorssel.html">dorssel.html</a> contains all the information needed to
understand this program. For spoiler information, try:</li>
</ul>
<pre><code> ./dorssel &lt; dorssel.md</code></pre>
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+8
View File
@@ -116,6 +116,14 @@ looping. To see the resulting program run, redirect the output from
and then compile it.
### 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 hints:
The big key to this program is figuring out what the names of the
+4
View File
@@ -470,6 +470,10 @@ looping. To see the resulting program run, redirect the output from
<code>schnitzi</code> into another file, like this</p>
<pre><code> ./schnitzi 4 &gt; sort.c</code></pre>
<p>and then compile it.</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="obfuscation-hints">Obfuscation hints:</h3>
<p>The big key to this program is figuring out what the names of the
functions ought to be; a bit of research may allow you to guess at
+9 -1
View File
@@ -99,7 +99,15 @@ Count the number of non-whitespace characters in the source
file to find out what dark force drove me to write this ;-).
### 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:
First of all, if you run a C beautifier on the program (thereby of course losing
the nice code shape I worked so hard on ;-) ) the code will become a bit more
+5 -1
View File
@@ -445,7 +445,11 @@ valid exit value to indicate failure (replace them with <code>EOF</code> resp.
<h3 id="special-notes">Special notes</h3>
<p>Count the number of non-whitespace characters in the source
file to find out what dark force drove me to write this ;-).</p>
<h3 id="obfuscation">Obfuscation</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>First of all, if you run a C beautifier on the program (thereby of course losing
the nice code shape I worked so hard on ;-) ) the code will become a bit more
readable.</p>
+8 -1
View File
@@ -34,7 +34,6 @@ NOTE: `n` is an integer.
## Judges' remarks:
Don't read the author's remarks until you're ready for the spoiler.
Just stop and read the program; it won't take long. Once you've figured
out what it does, run it. It may surprise you.
@@ -42,6 +41,14 @@ This entry won, not because the obfuscation is impenetrable, but because
it successfully fooled half of the judges, including me.
### 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:
### Description
+5 -2
View File
@@ -413,11 +413,14 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
<h2 id="try">Try:</h2>
<pre><code> ./try.sh</code></pre>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>Don’t read the author’s remarks until you’re ready for the spoiler.
Just stop and read the program; it won’t take long. Once you’ve figured
<p>Just stop and read the program; it won’t take long. Once you’ve figured
out what it does, run it. It may surprise you.</p>
<p>This entry won, not because the obfuscation is impenetrable, but because
it successfully fooled half of the judges, including me.</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="description">Description</h3>
<p>For 15 years, IOCCC entries have obfuscated programs using esoteric,
+9 -1
View File
@@ -117,7 +117,15 @@ the game entertaining, see if you can find
in the source code.)
### GAME STRATEGY 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.
### GAME STRATEGY
The trick, of course, is to drop items in empty rooms to mark them. That way
you usually know if you're in a room you've seen before. It greatly aids
+5 -1
View File
@@ -481,7 +481,11 @@ the game entertaining, see if you can find</p>
<pre><code> the fish scales Q)++j&lt;
the shooting star -~- ~ -~i +</code></pre>
<p>in the source code.)</p>
<h3 id="game-strategy-spoiler">GAME STRATEGY SPOILER</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="game-strategy">GAME STRATEGY</h3>
<p>The trick, of course, is to drop items in empty rooms to mark them. That way
you usually know if you’re in a room you’ve seen before. It greatly aids
mapping.</p>
+2 -2
View File
@@ -130,12 +130,12 @@
"entry_text" : "hibachi-start.sh declarations"
},
{
"file_path" : "src/localhost/CHANGES-SPOILER.TXT",
"file_path" : "src/localhost/CHANGELOG.TXT",
"inventory_order" : 200,
"OK_to_edit" : true,
"display_as" : "text",
"display_via_github" : false,
"entry_text" : "spoiler change log"
"entry_text" : "obfuscation change log"
},
{
"file_path" : "2004_hibachi.tar.bz2",
+14 -1
View File
@@ -159,7 +159,7 @@ style](https://wiki.c2.com/?OneTrueBraceStyle).
* `Hibachi` can serve [www.ioccc.org](https://www.ioccc.org).
* Commented spoiler information available.
* Commented obfuscation change log information available.
### Known Issues
@@ -179,6 +179,19 @@ style](https://wiki.c2.com/?OneTrueBraceStyle).
* Winner of The Far Too Much Free Time Award
### 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 change log
For additional hints about how the source was obfuscated, read [src/localhost/CHANGELOG.TXT](src/localhost/CHANGELOG.TXT).
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+8 -2
View File
@@ -486,7 +486,7 @@ style</a>.</p></li>
<li><p><code>HTTP/1.0 200 OK</code> == <code>HTTP/1.1 200 OK CRLF Connection: close</code> ?</p></li>
<li><p><code>getenv()</code> == <code>putenv()</code> ?</p></li>
<li><p><code>Hibachi</code> can serve <a href="https://www.ioccc.org">www.ioccc.org</a>.</p></li>
<li><p>Commented spoiler information available.</p></li>
<li><p>Commented obfuscation change log information available.</p></li>
</ul>
<h3 id="known-issues">Known Issues</h3>
<ul>
@@ -503,6 +503,12 @@ paragraph 3 sentence 2, and so fails to display responses from
<li>Best Interpretation of RFC 2616</li>
<li>Winner of The Far Too Much Free Time Award</li>
</ul>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="obfuscation-change-log">Obfuscation change log</h3>
<p>For additional hints about how the source was obfuscated, read <a href="src/localhost/CHANGELOG.TXT">src/localhost/CHANGELOG.TXT</a>.</p>
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
@@ -543,7 +549,7 @@ paragraph 3 sentence 2, and so fails to display responses from
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2004/hibachi/src/localhost/test/perl/yahoo-ticker.pl">src/localhost/test/perl/yahoo-ticker.pl</a> - stock price fetch example in Perl</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2004/hibachi/src/configure.in">src/configure.in</a> - GNU Autoconf script</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2004/hibachi/src/hibachi-start.sh.in">src/hibachi-start.sh.in</a> - hibachi-start.sh declarations</li>
<li><a href="src/localhost/CHANGES-SPOILER.TXT">src/localhost/CHANGES-SPOILER.TXT</a> - spoiler change log</li>
<li><a href="src/localhost/CHANGELOG.TXT">src/localhost/CHANGELOG.TXT</a> - obfuscation change log</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
+8
View File
@@ -281,6 +281,14 @@ It probably will also compile and work on many (all?) other \*nix platforms as
well. How does it achieve this incredible feat?
### 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
Read the following only if you give up figuring it out :-)
+4
View File
@@ -578,6 +578,10 @@ on the following architectures:</p>
</ul>
<p>It probably will also compile and work on many (all?) other *nix platforms as
well. How does it achieve this incredible feat?</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="obfuscation">OBFUSCATION</h3>
<p>Read the following only if you give up figuring it out :-)</p>
<h4 id="the-evil-hack">The Evil Hack</h4>
+8
View File
@@ -248,6 +248,14 @@ changing the definitions of `W`, `H` and `I` at the beginning of the code.
parameter.
### 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
Sure, I don't want to deprive you of the pleasure of digging
+4
View File
@@ -553,6 +553,10 @@ numbers.</li>
<li>There should be some way to switch from Mandelbrot to Julia with chosen
parameter.</li>
</ul>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="obfuscation">Obfuscation</h3>
<p>Sure, I don’t want to deprive you of the pleasure of digging
into the infernal mess created by my corrupted mind (writing
+9 -1
View File
@@ -222,7 +222,15 @@ In Unix the min 0 on `stty` is required but circa 2001
it was not required.
### How it works (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 `l` array contains the 64K memory; it is initialized with a boot image
loaded from the `C` file. The [program
+5 -1
View File
@@ -534,7 +534,11 @@ is not what is needed.</p>
<p>On PC/DOS you need to add <code>ANSI.SYS</code> to <code>CONFIG.SYS</code>.</p>
<p>In Unix the min 0 on <code>stty</code> is required but circa 2001
it was not required.</p>
<h3 id="how-it-works-obfuscation">How it works (obfuscation)</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>The <code>l</code> array contains the 64K memory; it is initialized with a boot image
loaded from the <code>C</code> file. The <a href="https://en.wikipedia.org/wiki/Program_counter">program
counter</a> is the <code>c</code> pointer and
+9 -1
View File
@@ -199,7 +199,15 @@ Just say
(Btw, tcc has its roots in IOCCC...)
### 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 initialized char array includes the source code of the real program,
as well as its name and commands to build and run it, all
+5 -1
View File
@@ -536,7 +536,11 @@ C99, or long lines as an extension. This code has been tested on:</p></li>
<li><p>AIX 5.3, IBM eServer p5-550, gcc 3.3.3 and AIX CC Version 6</p>
<p>(Btw, tcc has its roots in IOCCC…)</p></li>
</ul>
<h3 id="obfuscation">Obfuscation</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<ul>
<li>The initialized char array includes the source code of the real program,
as well as its name and commands to build and run it, all
+9 -1
View File
@@ -110,7 +110,15 @@ the actual `argv` strings to be writable, though.
- Some seemingly redundant code works to eliminate warnings and evade a gcc bug.
### 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:
The parser parses function names, subtraction, and division as single-letter
unary operators. A bitmask encoded hash table is used to check no-ops/digits
+5 -1
View File
@@ -462,7 +462,11 @@ the actual <code>argv</code> strings to be writable, though.</li>
<li>This program doesn’t work with <code>%e</code> style numbers like <code>1e-4</code>.</li>
<li>Some seemingly redundant code works to eliminate warnings and evade a gcc bug.</li>
</ul>
<h3 id="spoilers">Spoilers</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>The parser parses function names, subtraction, and division as single-letter
unary operators. A bitmask encoded hash table is used to check no-ops/digits
and another hash function maps the ASCII to a function ordinal, which is then
+9 -1
View File
@@ -153,7 +153,15 @@ reflection ray at an object's surface, given the incoming
direction and surface normal.
#### Further details:
### 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 is not quite a traditional [ray
tracer](https://en.wikipedia.org/wiki/Ray_tracing_&#x28;graphics&#x29;), but a "[sphere
+5 -1
View File
@@ -480,7 +480,11 @@ by the source code itself: the geometric construction of a
reflection ray at an object’s surface, given the incoming
direction and surface normal.</p></li>
</ul>
<h4 id="further-details">Further details:</h4>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>The program is not quite a traditional <a href="https://en.wikipedia.org/wiki/Ray_tracing_(graphics)">ray
tracer</a>, but a “<a href="sphere-tracing.pdf">sphere
tracer</a>” which uses distance fields to encode proximity to
+40 -31
View File
@@ -259,7 +259,46 @@ a usage of `I` (complex's imaginary unit), but I bet this is cygwin's issue;
it is surely a C99 feature.
### Obfuscation
### Notes about Additional Files
[logo.txt](logo.txt) is a source of the logo in this remark file.
[column.txt](column.txt) is a water column collapse, which is a popular demo of SPH.
[pour-out.txt](pour-out.txt) pours you a cup of tea.
[tanada.txt](tanada.txt) simulates "Terrace farming". ("Tanada" means a
"[terraced rice](https://en.wikipedia.org/wiki/Terrace_&#x28;earthworks&#x29; fields)" in Japanese.)
[clock.txt](clock.txt) is a "water" clock created by HAMANO Tsukasa.
Other `*.txt` files are from the judges.
[endoh1_color.c](%%REPO_URL%%/2012/endoh1/endoh1_color.c) is a variant that shows the density by using terminal 256
colors.
### Acknowledgments
I would like to thank my wife @hirekoke for her teaching me the SPH method.
The judges <del>ordered</del> suggested creating a color version
after the contest.
The judges and HAMANO Tsukasa (The silver medalist at this IOCCC) kindly
provided many configuration files.
### 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:
First of all, the source code itself serves as an initial configuration.
Preprocessing directives (such as `#include`)'s `#` serve as walls.
@@ -283,36 +322,6 @@ extract "integer part of real part" from a complex value by assigning (and
casting) it to an integer-type variable.
### Notes about Additional Files
[logo.txt](logo.txt) is a source of the logo in this remark file.
[column.txt](column.txt) is a water column collapse, which is a popular demo of SPH.
[pour-out.txt](pour-out.txt) pours you a cup of tea.
[tanada.txt](tanada.txt) simulates "Terrace farming". ("Tanada" means a
"[terraced rice](https://en.wikipedia.org/wiki/Terrace_&#x28;earthworks&#x29; fields)" in Japanese.)
[clock.txt](clock.txt) is a "water" clock created by HAMANO Tsukasa.
Other `*.txt` files are from the judges.
[endoh1_color.c](%%REPO_URL%%/2012/endoh1/endoh1_color.c) is a variant that shows the density by using terminal 256
colors.
### Acknowledgments
I would like to thank my wife @hirekoke for her teaching me the SPH method.
The judges <del>ordered</del> suggested creating a color version
after the contest.
The judges and HAMANO Tsukasa (The silver medalist at this IOCCC) kindly
provided many configuration files.
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+20 -16
View File
@@ -554,22 +554,6 @@ used to clear screen and move cursor to home.</p>
and gcc-4.5.3 and clang-3.1 on Cygwin. On Cygwin, gcc and clang complain about
a usage of <code>I</code> (complex’s imaginary unit), but I bet this is cygwin’s issue;
it is surely a C99 feature.</p>
<h3 id="obfuscation">Obfuscation</h3>
<p>First of all, the source code itself serves as an initial configuration.
Preprocessing directives (such as <code>#include</code>)’s <code>#</code> serve as walls.</p>
<p>This program uses <code>double complex</code> to represent any 2D vector. But, note that
the <code>x-axis</code> and <code>y-axis</code> are swapped (real axis = y-axis, imaginary axis =
x-axis). The purpose of swapping is not only obfuscation, but also short
coding: for example, to add gravity to total force, <code>force += G</code> suffices,
rather than <code>force += G*I</code>.</p>
<p>(Incidentally, you can exert horizontal gravity by using for instance <code>-DG=I</code>)</p>
<p>Every five entries of <code>double complex a[]</code> contain information of one particle:
position, wall-flag, density, force, and velocity, in turn.</p>
<p>You can use <code>G</code>, <code>P</code>, and <code>V</code> as a guide to find the calculation code of
gravity, pressure, and viscosity forces.</p>
<p>Though some assignments may look meaningless, they are actually meaningful; they
extract “integer part of real part” from a complex value by assigning (and
casting) it to an integer-type variable.</p>
<h3 id="notes-about-additional-files">Notes about Additional Files</h3>
<p><a href="logo.txt">logo.txt</a> is a source of the logo in this remark file.</p>
<p><a href="column.txt">column.txt</a> is a water column collapse, which is a popular demo of SPH.</p>
@@ -586,6 +570,26 @@ colors.</p>
after the contest.</p>
<p>The judges and HAMANO Tsukasa (The silver medalist at this IOCCC) kindly
provided many configuration files.</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>First of all, the source code itself serves as an initial configuration.
Preprocessing directives (such as <code>#include</code>)’s <code>#</code> serve as walls.</p>
<p>This program uses <code>double complex</code> to represent any 2D vector. But, note that
the <code>x-axis</code> and <code>y-axis</code> are swapped (real axis = y-axis, imaginary axis =
x-axis). The purpose of swapping is not only obfuscation, but also short
coding: for example, to add gravity to total force, <code>force += G</code> suffices,
rather than <code>force += G*I</code>.</p>
<p>(Incidentally, you can exert horizontal gravity by using for instance <code>-DG=I</code>)</p>
<p>Every five entries of <code>double complex a[]</code> contain information of one particle:
position, wall-flag, density, force, and velocity, in turn.</p>
<p>You can use <code>G</code>, <code>P</code>, and <code>V</code> as a guide to find the calculation code of
gravity, pressure, and viscosity forces.</p>
<p>Though some assignments may look meaningless, they are actually meaningful; they
extract “integer part of real part” from a complex value by assigning (and
casting) it to an integer-type variable.</p>
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+9 -1
View File
@@ -150,7 +150,15 @@ The design of the program explicitly allows for `EOF` even if it does not equal
endian-independent.
### 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:
Many obfuscations used are typical for standard IOCCC entries:
+5 -1
View File
@@ -493,7 +493,11 @@ character set and two’s complement representation.</li>
<code>-1</code> (it has to be negative per the standard but not necessarily <code>-1</code>) and both
<code>signed char</code> and <code>unsigned char</code>, for example. Furthermore it is
endian-independent.</p>
<h3 id="obfuscation">Obfuscation</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>Many obfuscations used are typical for standard IOCCC entries:</p>
<ul>
<li>Two arguments from <code>main()</code> function are reused as normal variables.</li>
+8
View File
@@ -193,6 +193,14 @@ Note that on MingW, `stdin` and `stdout` are not opened in binary mode by
default, this means `Nyaruko` may not faithfully encode files on MingW.
### 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.
### Extra files
[obfuscation.html](obfuscation.html) - Contains full recording of how the code went from
+4
View File
@@ -523,6 +523,10 @@ combinations:</p>
</ul>
<p>Note that on MingW, <code>stdin</code> and <code>stdout</code> are not opened in binary mode by
default, this means <code>Nyaruko</code> may not faithfully encode files on MingW.</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="extra-files">Extra files</h3>
<p><a href="obfuscation.html">obfuscation.html</a> - Contains full recording of how the code went from
blank state to an obfuscated program, gzipped to fit under 1MB. Requires
+13 -5
View File
@@ -520,11 +520,6 @@ 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](how.html).
### Acknowledgements
Christopher Hendrie, Bertram Felgenhauer, Alex Stangl, Seong-hoon Kang,
@@ -547,6 +542,19 @@ 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](how.html).
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+4
View File
@@ -383,6 +383,10 @@
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- BEFORE: 1st line of markdown file: 2012/tromp/how.md -->
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h1 id="obfuscation">Obfuscation</h1>
<p>The program implements a so called <a href="https://en.wikipedia.org/wiki/Krivine_machine">Krivine
machine</a>, enhanced with a <a href="https://en.wikipedia.org/wiki/BIOS">basic
+8
View File
@@ -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
+6 -2
View File
@@ -743,8 +743,6 @@ separate <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/
and from a hardcoded sizeof of 4 to 8.</p>
<p>The program has been tested to work correctly on Linux/Solaris/MacOSX both in 32
and 64 bits.</p>
<h3 id="how-the-program-works">How the program works</h3>
<p>See the file <a href="how.html">how.html</a>.</p>
<h3 id="acknowledgements">Acknowledgements</h3>
<p>Christopher Hendrie, Bertram Felgenhauer, Alex Stangl, Seong-hoon Kang,
and <a href="../../authors.html#Yusuke_Endoh">Yusuke Endoh</a> 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.
<a href="http://www.pps.univ-paris-diderot.fr/~krivine/articles/lazymach.pdf" class="uri">http://www.pps.univ-paris-diderot.fr/~krivine/articles/lazymach.pdf</a></p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>See the file <a href="how.html">how.html</a>.</p>
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+11 -3
View File
@@ -106,7 +106,7 @@ and to satisfy IOCCC's size rule.
These led to the good obfuscation.
See the [obfuscation section](#obfuscation) in detail, if you need.
See the [How this entry works section](#how_this_entry_works) in detail, if you need.
### Limitation
@@ -120,7 +120,7 @@ Also, it requires a space between identifiers. In short, use `(S K)` instead of
Huge memory may be required to compile the program (about 300 MB on my machine).
In addition, there are some limitations (and workarounds) mentioned in
the [obfuscation section](#obfuscation).
the [How this entry works section](#how_this_entry_works).
But I think it would only matter when you run the attached programs.
@@ -156,7 +156,15 @@ run it as a standalone program, at least. In fact, tcc does not support the
macro, but does work.
### 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 whole program is interpreted by macro expansion.
For example, `S (K I)` is translated to a normal C code, `(s)((k)(i))`, or
+7 -3
View File
@@ -450,7 +450,7 @@ and to satisfy IOCCC’s size rule.</p>
<li>Short coding.</li>
</ul>
<p>These led to the good obfuscation.</p>
<p>See the <a href="#obfuscation">obfuscation section</a> in detail, if you need.</p>
<p>See the <a href="#how_this_entry_works">How this entry works section</a> in detail, if you need.</p>
<h3 id="limitation">Limitation</h3>
<p>This program supports only “Combinator-calculus style notation” of Lazy K.
“Unlambda style” and “Iota and Jot” style are not supported.</p>
@@ -458,7 +458,7 @@ and to satisfy IOCCC’s size rule.</p>
<code>(SK)</code>, “`sk”, <code>**i*i*i*ii*i*i*ii</code>, or <code>11111100011100</code>.</p>
<p>Huge memory may be required to compile the program (about 300 MB on my machine).</p>
<p>In addition, there are some limitations (and workarounds) mentioned in
the <a href="#obfuscation">obfuscation section</a>.</p>
the <a href="#how_this_entry_works">How this entry works section</a>.</p>
<p>But I think it would only matter when you run the attached programs.</p>
<h3 id="portability">Portability</h3>
<p>I confirmed that the program successfully worked with the following compilers:</p>
@@ -486,7 +486,11 @@ It is a gcc extension, and also supported by clang. If your compiler does not
support it, you cannot use the program as a library. But you can compile and
run it as a standalone program, at least. In fact, tcc does not support the
macro, but does work.</p>
<h3 id="obfuscation-1">Obfuscation</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>The whole program is interpreted by macro expansion.
For example, <code>S (K I)</code> is translated to a normal C code, <code>(s)((k)(i))</code>, or
simply <code>s(k(i))</code>.</p>
+9 -1
View File
@@ -181,7 +181,15 @@ For the same reason, do not post a score that contains only `z1092`.
You know, it is ["the famous song"](http://en.wikipedia.org/wiki/4%E2%80%B233%E2%80%B3).
### 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:
Here is a magical expression which I found by brute-force:
+5 -1
View File
@@ -516,7 +516,11 @@ such as <code>C2E2</code>.</p>
But I do not attach it to protect you from W****r.</p>
<p>For the same reason, do not post a score that contains only <code>z1092</code>.
You know, it is <a href="http://en.wikipedia.org/wiki/4%E2%80%B233%E2%80%B3">“the famous song”</a>.</p>
<h3 id="spoiler">Spoiler</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>Here is a magical expression which I found by brute-force:</p>
<pre><code> (c % 32 + 5) * 9 / 5 % 13 + n / 32 * 12 - 22</code></pre>
<p>Interestingly, it converts an ASCII number of ABC notes
+9 -1
View File
@@ -192,7 +192,15 @@ quite memory consuming, requires IEEE754-compliant `double`, and assumes `int` t
doesn't copy saved sessions across different endianness.
### 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:
```
3225 3225 3225 9 9 3225 3225
+5 -1
View File
@@ -538,7 +538,11 @@ quite memory consuming, requires IEEE754-compliant <code>double</code>, and assu
<li>Though technically endian-dependent, <code>a.c</code> remains portable providing that one
doesn’t copy saved sessions across different endianness.</li>
</ul>
<h3 id="spoiler">Spoiler</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<pre><code> 3225 3225 3225 9 9 3225 3225
1 1 1 1 1 1 1 1 1 1
4225 1226 1 1 1 1 1222 1226
+8
View File
@@ -62,6 +62,14 @@ more than 1000 words.
You may want to use a large display with a very small terminal font.
### 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
See [quine-qr.html](quine-qr.html).
+4
View File
@@ -432,6 +432,10 @@ more than 1000 words.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="remarks">Remarks</h3>
<p>You may want to use a large display with a very small terminal font.</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="quiner-code-generator">Q(uine)R code generator</h3>
<p>See <a href="quine-qr.html">quine-qr.html</a>.</p>
<!--
+4
View File
@@ -383,6 +383,10 @@
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- BEFORE: 1st line of markdown file: 2014/endoh1/quine-qr.md -->
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h1 id="quiner-code-generator">Q(uine)R code generator</h1>
<h2 id="what-is-difficult">What is difficult?</h2>
<p>As you may know, QR code (specification: ISO/IEC 18004) is quite complex. It
+8
View File
@@ -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?
+9
View File
@@ -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).
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+4
View File
@@ -528,6 +528,10 @@ To stifle these complaints:</p>
This allows for a convenient test suite:</p>
<pre><code> ln -sf prog eprog
PATH=. eprog &lt; test.in | diff - test.out</code></pre>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="obfuscation">Obfuscation:</h3>
<p>If you do not want to puzzle out how it works, see <a href="obfuscation.html">obfuscation.html</a>.</p>
<!--
+8
View File
@@ -204,6 +204,14 @@ X86 architectures indeed SSE/AVX is used for the long longs. Following is some
obfuscation information, So if you want to play tough, stop reading at this point.
### 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.
### Portable SIMD programming:
So how is this done? Quite simply by using the whole `long long` arithmetic's
+4
View File
@@ -527,6 +527,10 @@ in a portable way without ever using any SSE/AVX or other non-portable compiler
inline functions! The irony though, is that when compiling the program on modern
X86 architectures indeed SSE/AVX is used for the long longs. Following is some
obfuscation information, So if you want to play tough, stop reading at this point.</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="portable-simd-programming">Portable SIMD programming:</h3>
<p>So how is this done? Quite simply by using the whole <code>long long</code> arithmetic’s
capability. I think the C99 standard assures us that <code>long long</code> has at least 64
+10 -2
View File
@@ -64,7 +64,15 @@ the source code from all angles..
* Find `main()` function.
### 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 is a joke PDP-11 emulator. ("ll-dpd" is embedded in the code.
Read it upside down.)
@@ -80,7 +88,7 @@ You got it? This program is supposed to be used in this way:
You can enjoy the legendary winning entry of the first IOCCC, again.
### Internal
### How this entry works:
This program uses `__attribute__((constructor))`, which is a GCC extension, to
hijack the `main()` function call. And then it interprets `main()` as an
+6 -2
View File
@@ -438,7 +438,11 @@ the same reason. But I believe it is reasonably portable.</li>
the source code from all angles..</li>
<li>Find <code>main()</code> function.</li>
</ul>
<h3 id="spoiler">Spoiler</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="what-this-entry-does">What this entry does:</h3>
<p>This program is a joke PDP-11 emulator. (“ll-dpd” is embedded in the code.
Read it upside down.)</p>
<p>You got it? This program is supposed to be used in this way:</p>
@@ -446,7 +450,7 @@ Read it upside down.)</p>
clang -o prog prog.c mullender.c
./prog</code></pre>
<p>You can enjoy the legendary winning entry of the first IOCCC, again.</p>
<h3 id="internal">Internal</h3>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>This program uses <code>__attribute__((constructor))</code>, which is a GCC extension, to
hijack the <code>main()</code> function call. And then it interprets <code>main()</code> as an
instruction sequence.</p>
+1 -1
View File
@@ -40,7 +40,7 @@ The [Most likely to be awarded - 2018/ciura](ciura/index.html) has an amazing vo
There are also nods to entries of the years [2000/bellard](../2000/bellard/index.html),
[2015/yang](../2015/yang/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!
### Historical note:
+8 -2
View File
@@ -64,10 +64,16 @@ This code has been compiled and tested on:
* UNIX V7 pcc (Johnson's C compiler) on a [simulated PDP-11/45](http://simh.trailing-edge.com/)
(see the "**SPOILER** section below for further detail)
<div style="margin-bottom:60em;margin-top:4em"><strong>Spoiler below; scroll down.</strong></div>
### 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.
### SPOILER:
### How this entry works:
This started life as a personal challenge: write the shortest hex dump utility
in C.
+5 -4
View File
@@ -434,10 +434,11 @@ It adds several nice-to-have features, and allows salt-to-taste customizability.
<li>UNIX V7 pcc (Johnson’s C compiler) on a <a href="http://simh.trailing-edge.com/">simulated PDP-11/45</a>
(see the “<strong>SPOILER</strong> section below for further detail)</li>
</ul>
<div style="margin-bottom:60em;margin-top:4em">
<strong>Spoiler below; scroll down.</strong>
</div>
<h3 id="spoiler">SPOILER:</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>This started life as a personal challenge: write the shortest hex dump utility
in C.</p>
<p>The self-imposed ground rules in the hunt for shortest:</p>
+1 -1
View File
@@ -412,7 +412,7 @@ It is something completely different.</p>
<p>The <a href="ciura/index.html">Most likely to be awarded - 2018/ciura</a> has an amazing vocabulary!</p>
<p>There are also nods to entries of the years <a href="../2000/bellard/index.html">2000/bellard</a>,
<a href="../2015/yang/index.html">2015/yang</a>, …</p>
<p>…We’ll stop spouting spoilers now. Have fun exploring all the entries!</p>
<p>…We’ll stop spouting too many details now. Have fun exploring all the entries!</p>
<h3 id="historical-note">Historical note:</h3>
<p>In 2023-2024 the IOCCC website was drastically changed with the same look for
every year and this changed the styling as well. But in 2018 different years had
+10 -2
View File
@@ -65,7 +65,15 @@ So I had to sit down and solve those tricky questions with Nano and a C
compiler.
### Little 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.
### Little hints:
Basically, the program draws animated ASCII art of the Big Dipper using Annie
Jump Cannon's spectral classification system of stars and I think the colors of
@@ -121,7 +129,7 @@ mostly is okay. YMMV, as they say.
Please do not feed little babies chocolate.
### Major spoilers:
### Major hints:
I incorporated the [Fletcher 16 checksum
algorithm](https://en.wikipedia.org/wiki/Fletcher%27s_checksum) into the source
+6 -2
View File
@@ -429,7 +429,11 @@ file <em>poikola.pdf</em>.</p>
this star and may I have some Easter eggs?”</p>
<p>So I had to sit down and solve those tricky questions with Nano and a C
compiler.</p>
<h3 id="little-spoilers">Little spoilers:</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="little-hints">Little hints:</h3>
<p>Basically, the program draws animated ASCII art of the Big Dipper using Annie
Jump Cannon’s spectral classification system of stars and I think the colors of
the output are as accurate as possible.</p>
@@ -467,7 +471,7 @@ show anything at all. In other cases it won’t show all the colours right but
mostly is okay. YMMV, as they say.</p>
<h3 id="warnings-and-restrictions-required-by-law">Warnings and restrictions required by law:</h3>
<p>Please do not feed little babies chocolate.</p>
<h3 id="major-spoilers">Major spoilers:</h3>
<h3 id="major-hints">Major hints:</h3>
<p>I incorporated the <a href="https://en.wikipedia.org/wiki/Fletcher%27s_checksum">Fletcher 16 checksum
algorithm</a> into the source
for security reasons; it might be challenging to make changes without breaking
+12 -15
View File
@@ -169,17 +169,16 @@ generated5.c: ${PROG}.c right shift
@${RM} -f $@
./shift < $< | ./right > $@
############
# spoilers #
############
########################
# detailed information #
########################
spoiler: spoilers
details:
@echo "Really show the detailed information? If you must see it run:"
@echo
@echo " make i_give_up_show_me_the_details"
spoilers:
@echo "Really show spoilers? Please build this target to confirm:"
@echo " i_give_up_show_me_the_spoilers"
i_give_up_show_me_the_spoilers: msg3 msg4 msg5 msg6 msg7 msg8 msg9
i_give_up_show_me_the_details: msg3 msg4 msg5 msg6 msg7 msg8 msg9
msg3: generated6.c
$(CC) $(CFLAGS) $< -o $@
@@ -229,13 +228,11 @@ generated11.c: generated10.c right shift
generated12.c: msg7
./msg7 > $@
####################################
# spoilers for the truly impatient #
####################################
#####################################################
# final information message for the truly impatient #
#####################################################
spoiler_for_the_truly_impatient: i_just_want_to_see_the_final_message
i_just_want_to_see_the_final_message: msg11.txt
the_last_word: msg11.txt
@${CAT} $<
msg11.txt: msg11 ${PROG}.c
+28 -9
View File
@@ -42,15 +42,6 @@ reveal messages and one more tool that can be used to reveal the final message
hidden in the original source. All of these can be created using combinations
of `./left`, `./right` and `./shift` and the additionally generated programs.
The final message can be revealed using
``` <!---sh-->
./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:
``` <!---sh-->
./msg9 < prog.c
```
But what combinations will generate `./msg3`, `./msg4`, `./msg5`, `./msg6`,
`./msg7`, `./msg8` and finally `./msg9`?
For more hints try:
``` <!---sh-->
make details
```
And for the last word, try:
``` <!---sh-->
make the_last_word
```
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+11 -4
View File
@@ -424,10 +424,6 @@ that this remark is completely misleading.</p>
reveal messages and one more tool that can be used to reveal the final message
hidden in the original source. All of these can be created using combinations
of <code>./left</code>, <code>./right</code> and <code>./shift</code> and the additionally generated programs.</p>
<p>The final message can be revealed using</p>
<pre><code> ./msg9 &lt; prog.c</code></pre>
<p>But what combinations will generate <code>./msg3</code>, <code>./msg4</code>, <code>./msg5</code>, <code>./msg6</code>,
<code>./msg7</code>, <code>./msg8</code> and finally <code>./msg9</code>?</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="tools-usage">Tools’ usage:</h3>
<p><code>Nuko</code> is a text rotator: given some text in <code>stdin</code>, <code>Nuko</code> will write the
@@ -509,6 +505,17 @@ will look weird after rotation, for example.</p>
</ul>
<p><code>Nuko</code> compiles without warnings with all compilers above, even with
<code>-Wall -Wextra -pedantic</code> for gcc and clang.</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program without running the command below.</p>
<p>If you get stuck, come back and run the following command:</p>
<pre><code> ./msg9 &lt; prog.c</code></pre>
<p>But what combinations will generate <code>./msg3</code>, <code>./msg4</code>, <code>./msg5</code>, <code>./msg6</code>,
<code>./msg7</code>, <code>./msg8</code> and finally <code>./msg9</code>?</p>
<p>For more hints try:</p>
<pre><code> make details</code></pre>
<p>And for the last word, try:</p>
<pre><code> make the_last_word</code></pre>
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+1 -1
View File
@@ -38,7 +38,7 @@ These nods to not run afoul of the guideline:
because the entry [2019/dogon](dogon/index.html) appropriately pays homage
to past entries without blatantly reusing their code.
...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
+10 -2
View File
@@ -254,13 +254,21 @@ were shuffled both for `S` functions and Apply functions in the same way to hide
the meaning of `f` and `r` prefixes.
### Identification 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.
### Identification
The alternative build path `make identify` output commemorates a [previous IOCCC
winning entry][9] which uses similar methods to mess with the size tool.
### Judges' spoiler:
### How this entry works:
It is not a bug, it is a feature. :)
+6 -2
View File
@@ -570,10 +570,14 @@ continuation and exit functions were swapped. The names of <code>S</code> and Ap
were shuffled both for <code>S</code> functions and Apply functions in the same way to hide
the meaning of <code>f</code> and <code>r</code> prefixes.</p></li>
</ul>
<h3 id="identification-spoiler">Identification spoiler:</h3>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="identification">Identification</h3>
<p>The alternative build path <code>make identify</code> output commemorates a <a href="../../2014/birken/index.html" title="Best use of port 1701">previous IOCCC
winning entry</a> which uses similar methods to mess with the size tool.</p>
<h3 id="judges-spoiler">Judges’ spoiler:</h3>
<h3 id="how-this-entry-works">How this entry works:</h3>
<p>It is not a bug, it is a feature. :)</p>
<p>The crash is caused by a stack overflow. Conventional Unlabmda interpreters
implement the Unlambda execution stack using data structures on the heap. This
+13 -3
View File
@@ -59,14 +59,24 @@ Compiles cleanly with:
### 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](%%REPO_URL%%/2019/burton/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:
``` <!---sh-->
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
+8 -3
View File
@@ -428,10 +428,15 @@ The output should look familiar.</p>
cc -Wall -Wextra -Weverything -pedantic $WARN -include stdio.h -o prog prog.c</code></pre>
<h3 id="description">Description:</h3>
<p>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 <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/burton/check.sh">check.sh</a> script can simply output the
results: (The Makefile contains the spoiler):</p>
programs, it is silent upon success; any output demonstrates an error.</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program without running the command below.</p>
<p>If you get stuck, come back and run the following command:</p>
<pre><code> out=cat ./check.sh ./prog</code></pre>
<p>Instead of checking correctness, the
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/burton/check.sh">check.sh</a> script can simply
output the results:</p>
<p>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
+22 -14
View File
@@ -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)`!
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+15 -11
View File
@@ -565,17 +565,6 @@ resulting <code>F</code> in hexadecimal…</p>
<p>And yes, the layout hint involves a mix of the most trendy typographical
character juxtaposed against a very ancient one, not to mention the program
includes some famous name dropping and documents itself as usual.</p>
<h3 id="further-spoilers-engineering-and-obfuscation-galore">Further spoilers, engineering, and obfuscation galore:</h3>
<p>Those wait for you, curious and intrepid reader, in the attached
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/dogon/apholife.c">apholife.c</a> 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 <code>ldexp()</code>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 <code>gets(3)</code>!</p>
<h3 id="special-thanks">Special thanks:</h3>
<p>To Tom Rockiki, the original co-writer of Golly, a personal friend and hashlife
master, who reviewed some earlier versions of the entry and freely shared some
@@ -589,6 +578,21 @@ most obfuscated way of calculating the GOL function on a 64 bits <code>8*8</code
(ts1 | s1)) &amp; ((ts0 ^ s0) | a); }</code></pre>
<p>This uses only 19 bitwise operations and six shifts to calculate the inner 6x6
next generation bits of the input 8x8 !</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="further-information-engineering-and-obfuscation-galore">Further information, engineering, and obfuscation galore:</h3>
<p>Those wait for you, curious and intrepid reader, in the attached
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/dogon/apholife.c">apholife.c</a> 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 <code>ldexp()</code>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 <code>gets(3)</code>!</p>
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+14 -1
View File
@@ -184,7 +184,7 @@ You will probably have a hard time analyzing this entry, because:
### A few more things:
Did you notice the `enum` declaration? Could it be just an `int` or `const int`
variable, instead? (spoiler: <http://c-faq.com/ansi/constasconst.html>)
variable, instead?
If your keyboard has no arrow keys, you can probably find alternate keys by
reading the source code.
@@ -250,6 +250,19 @@ maybe not reduce consumption, but consume them differently... And I obtained
it works on macOS too! I must confess it was challenging to remain below the
size limit with this little change.
### 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.
### For more information
See <http://c-faq.com/ansi/constasconst.html> for more information.
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+7 -1
View File
@@ -506,7 +506,7 @@ background color?</em></li>
</ul>
<h3 id="a-few-more-things">A few more things:</h3>
<p>Did you notice the <code>enum</code> declaration? Could it be just an <code>int</code> or <code>const int</code>
variable, instead? (spoiler: <a href="http://c-faq.com/ansi/constasconst.html" class="uri">http://c-faq.com/ansi/constasconst.html</a>)</p>
variable, instead?</p>
<p>If your keyboard has no arrow keys, you can probably find alternate keys by
reading the source code.</p>
<h3 id="limits-portability">Limits, Portability:</h3>
@@ -551,6 +551,12 @@ maybe not reduce consumption, but consume them differently… And I obtained
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/duble/prog.c">prog.c</a>. With this version, no need to touch <code>sysctl</code> parameters, and
it works on macOS too! I must confess it was challenging to remain below the
size limit with this little change.</p>
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge</h3>
<p><strong>If you want a greater challenge, don’t read any further</strong>:
just try to understand the program via the source.</p>
<p>If you get stuck, come back and read below for additional hints and information.</p>
<h3 id="for-more-information">For more information</h3>
<p>See <a href="http://c-faq.com/ansi/constasconst.html" class="uri">http://c-faq.com/ansi/constasconst.html</a> for more information.</p>
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
Loaded 100 of 112 files, more files were not shown because too many files have changed in this diff. Show more