force use of pandoc version >= 3.1.12.2
The `bin/pandoc-wrapper.sh` tool will verify that the ssytem has a recent enough version of `pandoc(1)`. We explain why we insist on `pandoc(1)`. version >= 3.1.12.2 in comments where the $PANDOC_MIN_VERSION is set. Added `--wrap=preserve` as a default argument to `pandoc(1)`. While this change will impact every HTML file generated, we believe this will improve the ability of someone to look at the generated HTML and correlate with the original markdown. Changed `bin/pandoc-wrapper.sh` VERSION from "1.4.2 2024-03-17" to "1.4.3 2024-03-18". Performed `make www` to achieve all of the above and to generate HTML using the new `--wrap=preserve` `pandoc(1)` mode.
This commit is contained in:
1 parent
9eb7a54e9f
commit
b0b212acb1
402 files changed
+37061
-55132
No files matched your search
+49
-77
@@ -129,9 +129,9 @@
|
||||
|
||||
<h2 id="author"><a name="author"></a>Author:</h2>
|
||||
<ul>
|
||||
<li>Name: <a href="../../authors.html#Arne_Heizmann">Arne Timwi
|
||||
Heizmann</a><br> Location: <a href="../../location.html#DE">DE</a> -
|
||||
<em>Federal Republic of Germany</em> (<em>Germany</em>) <br><br></li>
|
||||
<li>Name: <a href="../../authors.html#Arne_Heizmann">Arne Timwi Heizmann</a><br>
|
||||
Location: <a href="../../location.html#DE">DE</a> - <em>Federal Republic of Germany</em> (<em>Germany</em>)
|
||||
<br><br></li>
|
||||
</ul>
|
||||
|
||||
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
|
||||
@@ -146,106 +146,78 @@ Heizmann</a><br> Location: <a href="../../location.html#DE">DE</a> -
|
||||
<h2 id="try">Try:</h2>
|
||||
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./try.sh</span></span></code></pre></div>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>Unlike most <a href="https://en.wikipedia.org/wiki/Brainfuck">BF</a>
|
||||
interpreters that we have been receiving for the last few years, this
|
||||
one, in our opinion, is the most obfuscated albeit the most discourteous
|
||||
to the language it interprets. A simple 3-character fix will make it
|
||||
slightly less so.</p>
|
||||
<p>Quite a few BF programs found on the Net expect byte-based memory,
|
||||
quite a few exceed the capacity of this interpreter, but there are many
|
||||
that work. Some small <a
|
||||
href="https://en.wikipedia.org/wiki/Quine_(computing)">quines</a> work,
|
||||
some don’t.</p>
|
||||
<p>Unlike most <a href="https://en.wikipedia.org/wiki/Brainfuck">BF</a> interpreters that we
|
||||
have been receiving for the last few years, this one, in our opinion, is the
|
||||
most obfuscated albeit the most discourteous to the language it interprets. A
|
||||
simple 3-character fix will make it slightly less so.</p>
|
||||
<p>Quite a few BF programs found on the Net expect byte-based memory, quite a few
|
||||
exceed the capacity of this interpreter, but there are many that work. Some
|
||||
small <a href="https://en.wikipedia.org/wiki/Quine_(computing)">quines</a> work, some don’t.</p>
|
||||
<p>Why?</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<p>This is an interpreter for the programming language <a
|
||||
href="https://en.wikipedia.org/wiki/Brainfuck">BrainFuck</a> (BF).</p>
|
||||
<p>Input must be provided in the following format: First a sequence of
|
||||
integers separated by whitespace (this will be the input to the BF
|
||||
program), then a <code>:</code> (colon), then the BF program itself.</p>
|
||||
<p>This is an interpreter for the programming language
|
||||
<a href="https://en.wikipedia.org/wiki/Brainfuck">BrainFuck</a> (BF).</p>
|
||||
<p>Input must be provided in the following format: First a sequence of integers
|
||||
separated by whitespace (this will be the input to the BF program), then a <code>:</code>
|
||||
(colon), then the BF program itself.</p>
|
||||
<p>You must not pass any command-line arguments.</p>
|
||||
<h3 id="features">Features</h3>
|
||||
<ul>
|
||||
<li><p>Supports the complete set of 8 BF instructions
|
||||
(<code>+-<>[].,</code>).</p></li>
|
||||
<li><p>Supports the use of alternative characters for some of those
|
||||
instructions. Use this to obfuscate your BF programs!</p>
|
||||
<li><p>Supports the complete set of 8 BF instructions (<code>+-<>[].,</code>).</p></li>
|
||||
<li><p>Supports the use of alternative characters for some of those instructions.
|
||||
Use this to obfuscate your BF programs!</p>
|
||||
<p>For a challenge, figure out what this obfuscated BF program does:</p>
|
||||
<pre><code> J4mzt?Vazexx-20d~&&~AxdUV!x(~Jz&V)x*(P=J)JUN(dizz)xx_!xx'0&{Vz;}&Jj</code></pre>
|
||||
<p>It takes two integers as input and outputs one integer.</p></li>
|
||||
<li><p>Ignores all whitespace (newlines, spaces and tabs) in the input
|
||||
program.</p></li>
|
||||
<li><p>Ignores all whitespace (newlines, spaces and tabs) in the input program.</p></li>
|
||||
</ul>
|
||||
<h3 id="limitations">Limitations</h3>
|
||||
<p>Since the program, naturally, uses <code>int</code>s, the
|
||||
calculations must not exceed the range of an <code>int</code>. (But then
|
||||
again, you can use the integer overflow to further obfuscate your BF
|
||||
programs in creative ways!)</p>
|
||||
<p>You are limited to 3125 input integers and 3125 instructions. If you
|
||||
exceed one of these limits, the behaviour is undefined.</p>
|
||||
<p>Since the program, naturally, uses <code>int</code>s, the calculations must not exceed the
|
||||
range of an <code>int</code>. (But then again, you can use the integer overflow to further
|
||||
obfuscate your BF programs in creative ways!)</p>
|
||||
<p>You are limited to 3125 input integers and 3125 instructions. If you exceed
|
||||
one of these limits, the behaviour is undefined.</p>
|
||||
<h3 id="obfuscations">Obfuscations</h3>
|
||||
<p>Some of the superficial obfuscations are pretty obvious: I’m using
|
||||
<code>#define</code>s to make everything look nice and lineal, and the
|
||||
program is merely a recursive <code>main()</code> function with only a
|
||||
single <code>return</code> statement which uses nested ternary operators
|
||||
to make even the pre-processed code unreadable.</p>
|
||||
<p>However, the more subtle obfuscations relate to the way the program
|
||||
works. After applying the pre-processing, you will see a lot of
|
||||
<code>1+1+1</code>…etc., and even if you replace these with their
|
||||
result, those numbers will still not represent (or even relate to) the
|
||||
ASCII codes of the BF instructions.</p>
|
||||
<p>The program will first read in all the input integers, but it will
|
||||
begin execution immediately and only read program instructions as they
|
||||
are needed. Yet there is no global variable storing how far it has read!
|
||||
Perhaps the hardest thing to figure out is how it finds the matching
|
||||
square brackets.</p>
|
||||
<h2 id="copyright-and-cc-by-sa-4.0-license">Copyright and CC BY-SA 4.0
|
||||
License:</h2>
|
||||
<p>This file is Copyright (c) 2023 by Landon Curt Noll. All Rights
|
||||
Reserved. You are free to share and adapt this file under the terms of
|
||||
this license:</p>
|
||||
<p>Some of the superficial obfuscations are pretty obvious: I’m using <code>#define</code>s to
|
||||
make everything look nice and lineal, and the program is merely a recursive
|
||||
<code>main()</code> function with only a single <code>return</code> statement which uses nested ternary
|
||||
operators to make even the pre-processed code unreadable.</p>
|
||||
<p>However, the more subtle obfuscations relate to the way the program works.
|
||||
After applying the pre-processing, you will see a lot of <code>1+1+1</code>…etc., and
|
||||
even if you replace these with their result, those numbers will still not
|
||||
represent (or even relate to) the ASCII codes of the BF instructions.</p>
|
||||
<p>The program will first read in all the input integers, but it will begin
|
||||
execution immediately and only read program instructions as they are needed.
|
||||
Yet there is no global variable storing how far it has read! Perhaps the
|
||||
hardest thing to figure out is how it finds the matching square brackets.</p>
|
||||
<h2 id="copyright-and-cc-by-sa-4.0-license">Copyright and CC BY-SA 4.0 License:</h2>
|
||||
<p>This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
|
||||
You are free to share and adapt this file under the terms of this license:</p>
|
||||
<pre><code>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</code></pre>
|
||||
<p>For more information, see:
|
||||
https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
<!-- START: this line starts content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
|
||||
|
||||
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
|
||||
|
||||
<h1 id="inventory-for-2005timwi"><a name="inventory"></a>Inventory for
|
||||
2005/timwi</h1>
|
||||
<h1 id="inventory-for-2005timwi"><a name="inventory"></a>Inventory for 2005/timwi</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/timwi/timwi.c">timwi.c</a>
|
||||
- entry source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/timwi/Makefile">Makefile</a>
|
||||
- entry Makefile</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/timwi/timwi.orig.c">timwi.orig.c</a>
|
||||
- original source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/timwi/try.sh">try.sh</a>
|
||||
- how to run</li>
|
||||
<li><a href="2005_timwi.tar.bz2">2005_timwi.tar.bz2</a> - download entry
|
||||
source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/timwi/timwi.c">timwi.c</a> - entry source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/timwi/Makefile">Makefile</a> - entry Makefile</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/timwi/timwi.orig.c">timwi.orig.c</a> - original source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/timwi/try.sh">try.sh</a> - how to run</li>
|
||||
<li><a href="2005_timwi.tar.bz2">2005_timwi.tar.bz2</a> - download entry source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/timwi/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/timwi/.gitignore">.gitignore</a>
|
||||
- list of files that should not be committed under git</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/timwi/.entry.json">.entry.json</a> - description of entry in JSON</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/timwi/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
|
||||
<li><a href=".path">.path</a> - directory path from top directory</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/timwi/README.md">README.md</a>
|
||||
- markdown source for index.html</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/timwi/README.md">README.md</a> - markdown source for index.html</li>
|
||||
</ul>
|
||||
|
||||
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
|
||||
|
||||
Reference in new issue
Block a user