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
+50
-80
@@ -130,8 +130,8 @@
|
||||
<h2 id="author"><a name="author"></a>Author:</h2>
|
||||
<ul>
|
||||
<li>Name: <a href="../../authors.html#Don_Yang">Don Yang</a><br>
|
||||
Location: <a href="../../location.html#US">US</a> - <em>United States of
|
||||
America</em> (<em>United States</em>) <br><br></li>
|
||||
Location: <a href="../../location.html#US">US</a> - <em>United States of America</em> (<em>United States</em>)
|
||||
<br><br></li>
|
||||
</ul>
|
||||
|
||||
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
|
||||
@@ -146,48 +146,41 @@ America</em> (<em>United States</em>) <br><br></li>
|
||||
<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>Before analysing the code in detail we were able to guess two out of
|
||||
four tests this entry uses to tell the 5 languages/flavors apart. Can
|
||||
you find all four?</p>
|
||||
<p>The way the text is encoded in the output doesn’t cease to amaze. Can
|
||||
you tell why an array of 512 elements is needed?</p>
|
||||
<p>NOTE: the author calls the program <code>Fuuko</code> and so the
|
||||
source file referred to in their remarks uses <code>fuuko.c</code>. The
|
||||
<a href="Makefile">Makefile</a> will compile everything so you need not
|
||||
worry about this.</p>
|
||||
<p>Before analysing the code in detail we were able to guess two out of four tests
|
||||
this entry uses to tell the 5 languages/flavors apart. Can you find all four?</p>
|
||||
<p>The way the text is encoded in the output doesn’t cease to amaze. Can you tell
|
||||
why an array of 512 elements is needed?</p>
|
||||
<p>NOTE: the author calls the program <code>Fuuko</code> and so the source file referred to in
|
||||
their remarks uses <code>fuuko.c</code>. The <a href="Makefile">Makefile</a> will compile everything
|
||||
so you need not worry about this.</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<p><code>Fuuko</code> is a <a
|
||||
href="https://en.wikipedia.org/wiki/Starfish">sea star</a> generator.
|
||||
Feed her some input through <code>stdin</code> to get lots of sea star
|
||||
patterns on <code>stdout</code>.</p>
|
||||
<p><code>Fuuko</code> is a <a href="https://en.wikipedia.org/wiki/Starfish">sea star</a> generator. Feed
|
||||
her some input through <code>stdin</code> to get lots of sea star patterns on <code>stdout</code>.</p>
|
||||
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="fu">cc</span> <span class="at">-O3</span> <span class="at">-std</span><span class="op">=</span>c90 fuuko.c <span class="at">-lm</span> <span class="at">-o</span> fuuko_c90</span>
|
||||
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a><span class="bu">echo</span> IOCCC <span class="kw">|</span> <span class="ex">./fuuko_c90</span> <span class="op">></span> output_c90.c</span></code></pre></div>
|
||||
<p>If you compile with a C99 compiler instead of C90, the sea stars will
|
||||
have eyes.</p>
|
||||
<div class="sourceCode" id="cb5"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="fu">cc</span> <span class="at">-O3</span> <span class="at">-std</span><span class="op">=</span>c99 fuuko.c <span class="at">-lm</span> <span class="at">-o</span> fuuko_c99</span>
|
||||
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="bu">echo</span> IOCCC <span class="kw">|</span> <span class="ex">./fuuko_c99</span> <span class="op">></span> output_c99.c</span></code></pre></div>
|
||||
<p>Don’t like <a href="https://en.wikipedia.org/wiki/Starfish">sea
|
||||
stars</a>? Use a C++98 compiler to get a <a
|
||||
href="https://en.wikipedia.org/wiki/Dango">dango</a> instead.</p>
|
||||
<p>Don’t like <a href="https://en.wikipedia.org/wiki/Starfish">sea stars</a>? Use a C++98
|
||||
compiler to get a <a href="https://en.wikipedia.org/wiki/Dango">dango</a> instead.</p>
|
||||
<div class="sourceCode" id="cb6"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="ex">g++</span> <span class="at">-O3</span> <span class="at">-std</span><span class="op">=</span>c++98 fuuko.c <span class="at">-lm</span> <span class="at">-o</span> fuuko_cpp98</span>
|
||||
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a><span class="bu">echo</span> IOCCC <span class="kw">|</span> <span class="ex">./fuuko_cpp98</span> <span class="op">></span> output_cpp98.c</span></code></pre></div>
|
||||
<p>Don’t like <a href="https://en.wikipedia.org/wiki/Dango">dango</a>
|
||||
either? Use a C++11 compiler to get just <a
|
||||
href="https://en.wikipedia.org/wiki/Circle">circles</a> (or <a
|
||||
href="https://en.wikipedia.org/wiki/Swiss_cheeses_and_dairy_products">Swiss
|
||||
cheese</a>, if you prefer that).</p>
|
||||
<p>Don’t like <a href="https://en.wikipedia.org/wiki/Dango">dango</a> either? Use a C++11
|
||||
compiler to get just <a href="https://en.wikipedia.org/wiki/Circle">circles</a> (or <a href="https://en.wikipedia.org/wiki/Swiss_cheeses_and_dairy_products">Swiss
|
||||
cheese</a>, if you
|
||||
prefer that).</p>
|
||||
<div class="sourceCode" id="cb7"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="ex">g++</span> <span class="at">-O3</span> <span class="at">-std</span><span class="op">=</span>c++11 fuuko.c <span class="at">-lm</span> <span class="at">-o</span> fuuko_cpp11</span>
|
||||
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a><span class="bu">echo</span> IOCCC <span class="kw">|</span> <span class="ex">./fuuko_cpp11</span> <span class="op">></span> output_cpp11.c</span></code></pre></div>
|
||||
<p>Don’t like any of these patterns? Use a C11 compiler and there will
|
||||
be no extra pattern.</p>
|
||||
<p>Don’t like any of these patterns? Use a C11 compiler and there will be
|
||||
no extra pattern.</p>
|
||||
<div class="sourceCode" id="cb8"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">cc</span> <span class="at">-O3</span> <span class="at">-std</span><span class="op">=</span>c11 fuuko.c <span class="at">-lm</span> <span class="at">-o</span> fuuko_c11</span>
|
||||
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a><span class="bu">echo</span> IOCCC <span class="kw">|</span> <span class="ex">./fuuko_c11</span> <span class="op">></span> output_c11.c</span></code></pre></div>
|
||||
<p>Regardless of which of these C/C++ dialects you choose, the output
|
||||
will all be valid C90 code that reproduces original input on
|
||||
<code>stdout</code>, filled with pointer dereferences (C stars).</p>
|
||||
will all be valid C90 code that reproduces original input on <code>stdout</code>,
|
||||
filled with pointer dereferences (C stars).</p>
|
||||
<p>Next time people ask you for a few pointers on C, you can run their
|
||||
question through <code>Fuuko</code> and give them pointers all day
|
||||
long.</p>
|
||||
question through <code>Fuuko</code> and give them pointers all day long.</p>
|
||||
<h3 id="compatibility">Compatibility</h3>
|
||||
<p><code>Fuuko</code> has been tested under these environments:</p>
|
||||
<ul>
|
||||
@@ -205,76 +198,53 @@ probably cygwin bug)</li>
|
||||
<h3 id="features">Features</h3>
|
||||
<p>The most obscure parts are in detecting the subtle differences in
|
||||
different dialects. The standard committees put a lot of effort into
|
||||
avoiding “quiet changes”, but <code>Fuuko</code> is still able to
|
||||
exploit a few of those. It should be an interesting exercise for the
|
||||
reader to figure how she did it.</p>
|
||||
<p>Output patterns are usually random (except for C11). The built-in
|
||||
random number generator is seeded using <a
|
||||
href="https://en.wikipedia.org/wiki/Address_space_layout_randomization">ASLR</a>.
|
||||
On systems where ASLR is not so random (such as cygwin), you can
|
||||
introduce randomness by changing number of command line arguments to
|
||||
<code>Fuuko</code>.</p>
|
||||
avoiding “quiet changes”, but <code>Fuuko</code> is still able to exploit a few of
|
||||
those. It should be an interesting exercise for the reader to figure
|
||||
how she did it.</p>
|
||||
<p>Output patterns are usually random (except for C11). The built-in random number
|
||||
generator is seeded using
|
||||
<a href="https://en.wikipedia.org/wiki/Address_space_layout_randomization">ASLR</a>. On
|
||||
systems where ASLR is not so random (such as cygwin), you can introduce
|
||||
randomness by changing number of command line arguments to <code>Fuuko</code>.</p>
|
||||
<p>Output is somewhat robust: corruption on most of the lines will
|
||||
usually result in a compiler warning. This is because the output is
|
||||
vastly redundant: For ~1K of input, expect output to be on the order of
|
||||
~1MB, and take ~500MB of RAM to compile.</p>
|
||||
<p><a
|
||||
href="https://en.wikipedia.org/wiki/Computation_of_cyclic_redundancy_checks#CRC-32_algorithm">CRC32</a>
|
||||
vastly redundant: For ~1K of input, expect output to be on the order
|
||||
of ~1MB, and take ~500MB of RAM to compile.</p>
|
||||
<p><a href="https://en.wikipedia.org/wiki/Computation_of_cyclic_redundancy_checks#CRC-32_algorithm">CRC32</a>
|
||||
of source code is embedded in the source code itself.</p>
|
||||
<p>The process of writing this program can be seen by opening <a
|
||||
href="spoiler.html">spoiler.html</a> in a browser that supports
|
||||
JavaScript.</p>
|
||||
<p>Code layout is inspired by <a
|
||||
href="https://clannad.fandom.com/wiki/Fuko_Ibuki">Ibuki Fuuko</a>, for
|
||||
her love of sea stars.</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>The process of writing this program can be seen by opening
|
||||
<a href="spoiler.html">spoiler.html</a> in a browser that supports JavaScript.</p>
|
||||
<p>Code layout is inspired by <a href="https://clannad.fandom.com/wiki/Fuko_Ibuki">Ibuki
|
||||
Fuuko</a>, for her love of sea stars.</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-2015yang"><a name="inventory"></a>Inventory for
|
||||
2015/yang</h1>
|
||||
<h1 id="inventory-for-2015yang"><a name="inventory"></a>Inventory for 2015/yang</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/2015/yang/prog.c">prog.c</a>
|
||||
- entry source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/Makefile">Makefile</a>
|
||||
- entry Makefile</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/prog.orig.c">prog.orig.c</a>
|
||||
- original source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/try.sh">try.sh</a>
|
||||
- how to run</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/prog.c">prog.c</a> - entry source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/Makefile">Makefile</a> - entry Makefile</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/prog.orig.c">prog.orig.c</a> - original source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/try.sh">try.sh</a> - how to run</li>
|
||||
<li><a href="spoiler.html">spoiler.html</a> - SPOILER WARNING</li>
|
||||
<li><a href="2015_yang.tar.bz2">2015_yang.tar.bz2</a> - download entry
|
||||
source</li>
|
||||
<li><a href="2015_yang.tar.bz2">2015_yang.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/2015/yang/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/.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/2015/yang/.entry.json">.entry.json</a> - description of entry in JSON</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/.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/2015/yang/README.md">README.md</a>
|
||||
- markdown source for index.html</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/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