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:
1 parent
7af7a80cca
commit
2e2ae5f132
112 files changed
+845
-216
No files matched your search
+10
-3
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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).
|
||||
|
||||
@@ -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 < 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"MM,,,
|
||||
|
||||
+10
-1
@@ -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
@@ -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>
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
@@ -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
@@ -416,8 +416,12 @@ code</a> below.</p>
|
||||
<pre><code> ./try.color.sh # for colour displays
|
||||
./try.bw.sh # for Black & 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 < colormapfile</code></pre>
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 < huffman.c 2>/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
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
@@ -466,11 +466,19 @@ text that can be reversibly Morsified, i.e.</li>
|
||||
<pre><code> ./dorssel < dorssel.c | ./dorssel | ./dorssel | ./dorssel</code></pre>
|
||||
<p>is the same as</p>
|
||||
<pre><code> ./dorssel < 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 < 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 < dorssel.md</code></pre>
|
||||
<!--
|
||||
|
||||
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 > 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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -481,7 +481,11 @@ the game entertaining, see if you can find</p>
|
||||
<pre><code> the fish scales Q)++j<
|
||||
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>
|
||||
|
||||
@@ -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
@@ -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.
|
||||
|
||||
@@ -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>
|
||||
|
||||
File renamed without changes.
@@ -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 :-)
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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_(graphics)), but a "[sphere
|
||||
|
||||
@@ -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
@@ -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_(earthworks) 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_(earthworks) 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
@@ -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
@@ -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:
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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).
|
||||
|
||||
@@ -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>
|
||||
<!--
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 < 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>
|
||||
<!--
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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:
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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 < 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 < 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
@@ -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
|
||||
|
||||
@@ -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. :)
|
||||
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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)) & ((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
@@ -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.
|
||||
|
||||
@@ -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
Reference in new issue
Block a user