build index.html for all winners

Updated manifest as per recent file changes.

Updated winner `.winner.json` to reflect the manifest changes.

Added [bin/all_run.sh](bin/all_run.sh) tool to run a command over
all winning entries.

These tools had slight improvements in the help usage message:

* bin/gen-author.sh VERSION="1.3.1 2024-01-16"
* bin/gen-inventory.sh VERSION="1.0.1 2024-01-16"
* bin/pandoc_wrapper.sh VERSION="1.3.1 2024-01-16"
* bin/subst.default.sh VERSION="1.1.1 2024-01-16"
* bin/subst.winner-index.sh VERSION="1.1.1 2024-01-16"

The `bin/readme2index.sh` tool was improved so that
if the `index.html` file exists and the tool forms
the exact same content, then the file `index.html`
file is NOT touched.

* bin/readme2index.sh VERSION="1.1 2024-01-16"

We used the following command to generate `index.html` files
for all winning entries:

```sh
bin/all_run.sh -v 3 bin/readme2index.sh
```

NOTE: We have not (yet) built HTML files above the winner directory
level (e.g., no year level nor top level HTML), nor have be built
non-index HTML files for winners.

NOTE: By default we are running `pandoc(1)` with:

```
--fail-if-warnings=true
```

This means that any problems with markdown to HTML
generates an error.  This is done to be sure that
the HTML conversion is clean.

We had to fix the following `README.md` files:

* `2000/rince/README.md`

The reference [^2] was never used.  We made a guess that [^2] applies
to the same spot as [^1].  Perhaps there is a better spot where
[^2] applies?

NOTE: For every reference, there MUST be some place where that
reference is used.

* 2012/vik/README.md

The string "$...$" is assumed to be a TeX encoded string.

NOTE: Every "$..$" needs to be backslashed as in "\$..\$".

* 2018/burton1/README.md

The reference [2] was duplicated.  We changed the
second [2] to [3].

NOTE: Every reference needs to have a unique number.

* 2020/carlini/README.md

The string "$...$" is assumed to be a TeX encoded string.

NOTE: Every "$..$" needs to be backslashed as in "\$..\$".

We also found 2 errors in the `author/author_handle.json` file set:

* author/Anonymous_2001.json

The `author/Anonymous_2001.json` file was missing.

* author/Jari_Arkko.json

The winner ID for `1989_jar.1` had a typo.
This commit is contained in:
Landon Curt Noll committed 2024-01-17 00:32:39 -08:00
1 parent 893cd915b6
commit c1466f5165
350 files changed
+95242 -4217

No files matched your search

+297 -13
View File
@@ -1,4 +1,6 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
@@ -6,27 +8,309 @@
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- file: 2012/grothe/index.html created by: fake.gen_index.sh version: 1.0.5 2023-10-31 -->
<html lang="en">
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- This file was formed by the tool: bin/readme2index.sh version: 1.1 2024-01-16 -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>2012 grothe</title>
<meta name="description" content="IOCCC year: 2012 IOCCC winner: grothe winner index page">
<meta name="keywords" content="IOCCC,2012,grothe,winner index page">
<link rel="stylesheet" href="/temp-test-ioccc/ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2012/grothe</title>
<meta name="description" content="2012 IOCCC winner grothe">
<meta name="keywords" content="IOCCC, 2012, IOCCC 2012, IOCCC winner, grothe">
</head>
<!-- END: this line ends content from: inc/head.default.html -->
<!-- START: this line starts content from: inc/body.default.html -->
<body>
<h1>2012 grothe</h1>
<!-- END: this line ends content from: inc/body.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
<p>XXX - fake content until readme2index is working - XXX</p>
<div class="header">
<img src="/temp-test-ioccc/png/ioccc.png" alt="IOCCC image by Matt Zucker" width=300 height=110>
<h1>The International Obfuscated C Code Contest</h1>
<h2>2012/grothe</h2>
</div>
<hr style="width:50%;text-align:left;margin-left:0">
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.mid.html -->
<!-- Start Nu Html Checker -->
<p><a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2012%2Fgrothe%2Findex.html">Nu Html check https://ioccc-src.github.io/temp-test-ioccc/2012/grothe/index.html</a></p>
<!-- End Nu Html Checker -->
<div class="topnav">
<a class="Left" href="../endoh2/index.html">&larr; endoh2</a>
<a class="Left" href="../index.html">&uarr; 2012 &uarr;</a>
<a class="Left" href="../hamano/index.html">hamano &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.mid.html -->
<!-- START: this line starts content from: inc/begin-row.default.html -->
<div class="row">
<!-- END: this line ends content from: inc/begin-row.default.html -->
<!-- START: this line starts content from: inc/begin-leftcolumn.default.html -->
<div class="leftcolumn">
<!-- END: this line ends content from: inc/begin-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/sidenav.default.html -->
<div class="sidenav">
<a href="#content">Jump to contents</a>
</div>
<hr>
<div class="sidenav">
<a href="/temp-test-ioccc/index.html">IOCCC Home</a>
<a href="/temp-test-ioccc/years.html">Winning Entries</a>
<a href="/temp-test-ioccc/winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="/temp-test-ioccc/news.html">IOCCC News</a>
<a href="/temp-test-ioccc/faq.html#submit">How to enter the IOCCC</a>
<a href="/temp-test-ioccc/faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="/temp-test-ioccc/bugs.html">Bugs &amp; (mis)features</a>
<a href="/temp-test-ioccc/faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="/temp-test-ioccc/faq.html#fix_web_site">Fixing the web site</a>
<a href="/temp-test-ioccc/faq.html#fix_author">Fixing winner info</a>
<a href="/temp-test-ioccc/thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="/temp-test-ioccc/judges.html">The IOCCC Judges</a>
<a href="/temp-test-ioccc/contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content generated by: bin/gen-author.sh -->
<p><a name="author"><strong>Authors:</strong></a> <br><br>Name: <a
href="/temp-test-ioccc/winners.html#Aaron_Grothe">Aaron Grothe</a><br>
Location: <a href="/temp-test-ioccc/location.html#US">US</a>
<br><br>Name: <a href="/temp-test-ioccc/winners.html#David_Madore">David
Madore</a><br> Location: <a
href="/temp-test-ioccc/location.html#FR">FR</a></p>
<!-- END: next line ends content generated by: bin/gen-author.sh -->
<h2 id="to-build">To build:</h2>
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span></span></code></pre></div>
<h2 id="to-use">To use:</h2>
<p>To create a shared secret shared among <code>M</code> people with
<code>N+1</code> needed to reconstruct:</p>
<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./grothe</span> <span class="at">-secret</span> 1-/dev/urandom 2-/dev/urandom ... <span class="dt">\</span></span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a> N-/dev/urandom 1+shared1 2+shared2 ... M+sharedM</span></code></pre></div>
<p>To reconstruct the original (an arbitrary combination of
<code>N+1</code> or more shared files with their proper numbers):</p>
<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">./grothe</span> I-sharedI J-sharedJ K-sharedK ... +reconstructed</span></code></pre></div>
<h2 id="try">Try:</h2>
<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="ex">./grothe</span> <span class="at">-grothe.c</span> 1+grothe.c.1 2+grothe.c.2</span>
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a><span class="ex">./grothe</span> <span class="at">-cookie_recipe.txt</span> 1-/dev/urandom 2-/dev/urandom 1+cookie_piece1.dat 2+cookie_piece2.dat 3+cookie_piece3.dat 4+cookie_piece4.dat</span>
<span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb4-5"><a href="#cb4-5" aria-hidden="true" tabindex="-1"></a><span class="ex">./grothe</span> 1-cookie_piece1.dat 2-cookie_piece2.dat 4-cookie_piece4.dat 4+cookie_recipe_restore.txt</span></code></pre></div>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>Also known as ‘Best abuse of the judging process’.</p>
<p>The IOCCC 2012 submission page didn’t enforce the 2048 meaningful
character limit. This entry, as submitted, weighed in at 2222 chars but
lucky for it, it was extremely easy to bring down below the limit. There
were a number of strings that when concatenated allowed the program to
slide under the limit.</p>
<p>It was clear to the judges that the extra size was an entry
beautification step. Had it not been, this entry would have been
rejected in round 0.</p>
<p>The judges also took some liberty obfuscating this entry a little
more.</p>
<p>How does this entry work? The only place multiplication is used is to
perform the <code>atoi(3)</code> conversion.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="description">Description</h3>
<p>This program implements a version of <a
href="http://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing">Shamir’s
Secret Sharing</a>. Shamir’s Secret Sharing allows you to encrypt a file
into <code>N</code> parts where it will take <code>M</code> parts to
recreate the original file. E.g. you can split the secret recipe for
Crystal Pepsi into 3 parts and require two of them be available to
extract the original recipe.</p>
<p>Actually surprisingly useful for an IOCCC entry :-)</p>
<h3 id="usage">Usage</h3>
<p>To share a secret. For example:</p>
<ul>
<li>File to share: <a
href="cookie_recipe.txt">cookie_recipe.txt</a>.</li>
<li>Number of pieces: 2 + file to be shared</li>
<li>Total number of pieces created by program: 4</li>
<li>Pieces needed to reassemble recipe: 3 or greater</li>
</ul>
<h3 id="example-usage">Example usage</h3>
<p>To split a secret into 4 pieces of which at least 3 will be needed to
get it (in this case the cookie recipe) back:</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="ex">./grothe</span> <span class="dt">\</span></span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a> <span class="at">-cookie_recipe.txt</span><span class="dt">\</span></span>
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a> 1-/dev/urandom 2-/dev/urandom<span class="dt">\</span></span>
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a> 1+cookie_piece1.dat 2+cookie_piece2.dat 3+cookie_piece3.dat 4+cookie_piece4.dat</span></code></pre></div>
<p>To put the recipe back together using the first, second and fourth
pieces:</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">./grothe</span> <span class="dt">\</span></span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a> 1-cookie_piece1.dat 2-cookie_piece2.dat 4-cookie_piece4.dat</span>
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true" tabindex="-1"></a> <span class="ex">+cookie_recipe_restore.txt</span></span></code></pre></div>
<h3 id="limitations">Limitations</h3>
<p>The program is limited to 256 input and output files and will slow
down dramatically when you get past 20-50 inputs and outputs.</p>
<h3 id="obfuscations">Obfuscations</h3>
<ul>
<li><p>Nothing is done consistently throughout the program E.g
<code>i+=1</code>, <code>i=i+1</code>, <code>i++</code> and
<code>++i</code> are all used in the program. The mark of true code
buggery: “A foolish consistency is the hobgoblin of little minds.” - <a
href="https://en.wikipedia.org/wiki/Ralph_Waldo_Emerson">Ralph Waldo
Emerson</a></p></li>
<li><p>Uses the most powerful obfuscation of all “Math”. “Any
sufficiently advanced cryptography is indistinguishable from magic.” -
Apologies to <a
href="https://en.wikipedia.org/wiki/Arthur_C._Clarke">Arthur C.
Clarke</a></p></li>
<li><p>Shadows variables by using brackets in main program to create
local copies of variables that are the same as global scope variables.
<code>-Wshadow</code> should probably be a part of <code>-Wall</code> in
gcc.</p></li>
<li><p>Uses <code>array_index[array_name]</code> instead of
<code>array_name[array_index]</code> in several places. Still don’t know
why C continues to allow this (error strings are encoded with offsets
that are also used to select them in the case statement. All strings are
located in one function for easy localization).</p></li>
<li><p>Liberal use of octal numbers, hexadecimal numbers and regular
decimal numbers throughout the program.</p></li>
<li><p>Variables and function names are semi-random and upper and lower
case characters are used.</p></li>
<li><p>Use of <code>#define</code>s from <code>stdio.h</code>,
<code>stdlib.h</code> for values <code>_STDIO_H</code> and
<code>EXIT_SUCCESS</code> used to represent 1 and 0 respectively in the
program.</p></li>
<li><p>Arrays only need to be 256x256 but most are set to greater values
than they need to be so trying to figure it out can be a bit
tough.</p></li>
</ul>
<h3 id="references">References</h3>
<ul>
<li>David Madore’s implementation of Shamir’s Secret Sharing - <a
href="http://www.madore.org/~david/programs/programs-1.36.html"
class="uri">http://www.madore.org/~david/programs/programs-1.36.html</a></li>
<li>Steve’s Recipe Database - source for the $25k Cookie Recipe - <a
href="https://www.mealsteps.com"
class="uri">https://www.mealsteps.com</a></li>
</ul>
<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>
<!-- START: this line starts content generated by: bin/gen-inventory.sh -->
<h1 id="inventory-for-2012grothe"><a name="inventory"></a>Inventory for
2012/grothe</h1>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - winner home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/grothe/grothe.c">grothe.c</a>
- winning source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/grothe/Makefile">Makefile</a>
- winner Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/grothe/grothe.orig.c">grothe.orig.c</a>
- original source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/grothe/cookie_recipe.txt">cookie_recipe.txt</a>
- cookie recipe</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/grothe/try.sh">try.sh</a>
- how to run</li>
<li><a href="2012_grothe.tar.bz2">2012_grothe.tar.bz2</a> - download
winning source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/grothe/.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/2012/grothe/.winner.json">.winner.json</a>
- description of winner in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/grothe/README.md">README.md</a>
- markdown source for index.html</li>
<li><a href="cookie_piece1.dat">cookie_piece1.dat</a> - binary support
file</li>
<li><a href="cookie_piece2.dat">cookie_piece2.dat</a> - binary support
file</li>
<li><a href="cookie_piece3.dat">cookie_piece3.dat</a> - binary support
file</li>
<li><a href="cookie_piece4.dat">cookie_piece4.dat</a> - binary support
file</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/grothe/cookie_recipe_restore.txt">cookie_recipe_restore.txt</a>
- encoded cookie recipe</li>
</ul>
<!-- END: next line ends content generated by: bin/gen-inventory.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2012%2Fgrothe%2Findex.html">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->