convert spoiler language and towards deobfuscation language
This commit is contained in:
1 parent
50a2a6293c
commit
4d6009b58f
98 files changed
+195
-358
No files matched your search
@@ -162,7 +162,7 @@ and the call with current continuation `c`.
|
||||
is, how the state of the program is stored and how the Unlambda functions are
|
||||
implemented.
|
||||
|
||||
More on this in the **Spoilers** section.
|
||||
More on this in the **Deobfuscation** section.
|
||||
|
||||
|
||||
### Build notes:
|
||||
@@ -197,7 +197,7 @@ for storing `char`s for later printing. This might produce some warnings, but
|
||||
since it was developed using `char`s it should be always used safely.
|
||||
|
||||
|
||||
### Spoilers:
|
||||
### Deobfuscation:
|
||||
|
||||
- You can examine the [progSpoiler.c](%%REPO_URL%%/2019/adamovsky/progSpoiler.c) file. It is the original
|
||||
final version of the interpreter, before I started the downsizing. It accepts
|
||||
@@ -254,13 +254,13 @@ were shuffled both for `S` functions and Apply functions in the same way to hide
|
||||
the meaning of `f` and `r` prefixes.
|
||||
|
||||
|
||||
### Identification spoiler:
|
||||
### Identification deobfuscation:
|
||||
|
||||
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' spoilers:
|
||||
### Judges' debobfuscaiton:
|
||||
|
||||
It is not a bug, it is a feature. :)
|
||||
|
||||
|
||||
@@ -496,7 +496,7 @@ and the call with current continuation <code>c</code>.</li>
|
||||
is, how the state of the program is stored and how the Unlambda functions are
|
||||
implemented.</li>
|
||||
</ul>
|
||||
<p>More on this in the <strong>Spoilers</strong> section.</p>
|
||||
<p>More on this in the <strong>Deobfuscation</strong> section.</p>
|
||||
<h3 id="build-notes">Build notes:</h3>
|
||||
<p>The program does not require any special treatment by compilers. Some warnings
|
||||
had to be suppressed when compiling with <code>-Wall -Wextra -pedantic</code>. Those were
|
||||
@@ -524,7 +524,7 @@ world situation even when <code>size_t</code> is bigger than <code>long long</co
|
||||
for storing <code>char</code>s for later printing. This might produce some warnings, but
|
||||
since it was developed using <code>char</code>s it should be always used safely.</li>
|
||||
</ul>
|
||||
<h3 id="spoilers">Spoilers:</h3>
|
||||
<h3 id="deobfuscation">Deobfuscation:</h3>
|
||||
<ul>
|
||||
<li><p>You can examine the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/adamovsky/progSpoiler.c">progSpoiler.c</a> file. It is the original
|
||||
final version of the interpreter, before I started the downsizing. It accepts
|
||||
@@ -570,10 +570,10 @@ 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="identification-deobfuscation">Identification deobfuscation:</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-spoilers">Judges’ spoilers:</h3>
|
||||
<h3 id="judges-debobfuscaiton">Judges’ debobfuscaiton:</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
|
||||
|
||||
@@ -61,13 +61,13 @@ Compiles cleanly with:
|
||||
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):
|
||||
results: (The Makefile contains some deobfuscation information):
|
||||
|
||||
``` <!---sh-->
|
||||
out=cat ./check.sh ./prog
|
||||
```
|
||||
|
||||
Interestingly, and a spoiler here: macOS and FreeBSD implement the common
|
||||
Interestingly, and a bit of deobfuscation 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
|
||||
latter two also behave slightly differently on what they count as whitespace:
|
||||
|
||||
@@ -430,9 +430,9 @@ The output should look familiar.</p>
|
||||
<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>
|
||||
results: (The Makefile contains some deobfuscation information):</p>
|
||||
<pre><code> out=cat ./check.sh ./prog</code></pre>
|
||||
<p>Interestingly, and a spoiler here: macOS and FreeBSD implement the common
|
||||
<p>Interestingly, and a bit of deobfuscation 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
|
||||
latter two also behave slightly differently on what they count as whitespace:
|
||||
|
||||
@@ -225,7 +225,7 @@ 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:
|
||||
### Further deobfuscation, 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
|
||||
|
||||
@@ -565,7 +565,7 @@ 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>
|
||||
<h3 id="further-deobfuscation-engineering-and-obfuscation-galore">Further deobfuscation, 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
|
||||
|
||||
@@ -184,7 +184,9 @@ 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?
|
||||
|
||||
See also this [deobfuscation page](http://c-faq.com/ansi/constasconst.html>).
|
||||
|
||||
If your keyboard has no arrow keys, you can probably find alternate keys by
|
||||
reading the source code.
|
||||
|
||||
@@ -506,7 +506,8 @@ 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>See also this <a href="http://c-faq.com/ansi/constasconst.html%3E">deobfuscation page</a>.</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>
|
||||
|
||||
@@ -228,7 +228,7 @@ compilers. Small change in code can produce really unexpected results, i.e. the
|
||||
compiler can skip a few expressions or statements without obvious reason.
|
||||
|
||||
|
||||
### Major spoilers
|
||||
### Major deobfuscation
|
||||
|
||||
It is commonly believed that [Mike Keith's
|
||||
algorithm](http://www.cadaeic.net/calendar.htm) published in _Journal of
|
||||
|
||||
@@ -521,7 +521,7 @@ prime</a> is missing from output.</p>
|
||||
achieve exactly the same output from different optimization levels and
|
||||
compilers. Small change in code can produce really unexpected results, i.e. the
|
||||
compiler can skip a few expressions or statements without obvious reason.</p>
|
||||
<h3 id="major-spoilers">Major spoilers</h3>
|
||||
<h3 id="major-deobfuscation">Major deobfuscation</h3>
|
||||
<p>It is commonly believed that <a href="http://www.cadaeic.net/calendar.htm">Mike Keith’s
|
||||
algorithm</a> published in <em>Journal of
|
||||
Recreational Mathematics</em>, Vol. 22, No. 4, 1990, p. 280, is the shortest way to
|
||||
|
||||
Reference in new issue
Block a user