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

+343 -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,355 @@
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- file: 2001/herrmann2/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>2001 herrmann2</title>
<meta name="description" content="IOCCC year: 2001 IOCCC winner: herrmann2 winner index page">
<meta name="keywords" content="IOCCC,2001,herrmann2,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>2001/herrmann2</title>
<meta name="description" content="2001 IOCCC winner herrmann2">
<meta name="keywords" content="IOCCC, 2001, IOCCC 2001, IOCCC winner, herrmann2">
</head>
<!-- END: this line ends content from: inc/head.default.html -->
<!-- START: this line starts content from: inc/body.default.html -->
<body>
<h1>2001 herrmann2</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>2001/herrmann2</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%2F2001%2Fherrmann2%2Findex.html">Nu Html check https://ioccc-src.github.io/temp-test-ioccc/2001/herrmann2/index.html</a></p>
<!-- End Nu Html Checker -->
<div class="topnav">
<a class="Left" href="../herrmann1/index.html">&larr; herrmann1</a>
<a class="Left" href="../index.html">&uarr; 2001 &uarr;</a>
<a class="Left" href="../jason/index.html">jason &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>Author:</strong></a> <br><br>Name: <a
href="/temp-test-ioccc/winners.html#Immanuel_Herrmann">Immanuel
Herrmann</a><br> Location: <a
href="/temp-test-ioccc/location.html#DE">DE</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>
<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">./herrmann2</span></span></code></pre></div>
<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>
<p>If you use vi(m) you can see a pattern in <a
href="herrmann2.cup">herrmann2.cup</a> and
[herrmann2.ioccc][(herrmann2.ioccc]) by say:</p>
<pre><code>/[pon]\</code></pre>
<p>and</p>
<pre><code>/l</code></pre>
<p>For additional fun in <a href="herrmann2.cup">herrmann2.cup</a>
try:</p>
<pre><code>/[po]
/q</code></pre>
<p>and in <a href="herrmann2.ioccc">herrmann2.ioccc</a> try:</p>
<pre><code>/n</code></pre>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>Be careful when staring at the source code - your eyes might cross,
but if you concentrate on your focus you will find illumination!</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>You probably know those “magic eye” 3D pictures - pictures looking
like random noise, but when you look “through” the paper, you either get
a three dimensional picture or a headache. With this program, you can
create your own 3D pictures in ASCII art. And yes, the program itself is
such a 3D picture.</p>
<h3 id="how-to-use-it">How to use it</h3>
<ol type="1">
<li><p>Create a file which describes the desired 3D picture. The file
must be a block of lowercase letters the size of the desired picture.
The letters specify the depth of the corresponding pixel: <code>a</code>
means close to the paper, <code>z</code> means far away. The info files
are examples. Be aware that the size of the picture is restricted to
about 9k.</p></li>
<li><p>Pipe your picture into the program. The output will be your 3D
picture, constructed of random characters (with ASCII code between 32
and 126). For example, type</p></li>
</ol>
<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="ex">./herrmann2</span> <span class="op">&lt;</span> herrmann2.ioccc</span></code></pre></div>
<ol start="3" type="1">
<li>If you want to control the characters used in the output (for
example if your picture is to consist only of digits), pass them as the
first argument. In this case, each time the program needs a new random
character, it will take the next one from the argument. When it arrives
at the end of the argument, it will start over at the beginning.
Example:</li>
</ol>
<div class="sourceCode" id="cb9"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./herrmann2</span> <span class="st">&quot;234 84 045 5 6765 7487 65190 84 656 254 12 43931 818 0 6542 </span><span class="dt">\</span></span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a><span class="st">341 45 567 76967 7244 606 976567 895 81898 095 68678 1843 4650547 </span><span class="dt">\</span></span>
<span id="cb9-3"><a href="#cb9-3" aria-hidden="true" tabindex="-1"></a><span class="st">565980691 389 04974&quot;</span> <span class="op">&lt;</span> herrmann2.ioccc</span></code></pre></div>
<h3 id="some-hints-to-get-better-results">Some hints to get better
results</h3>
<ul>
<li><p>Due to the way these 3D pictures work, the left part of the
picture won’t look really 3D, so don’t put things too much on the left.
The reason is that for each letter in the source file, a character for
the right eye is printed. The 3D effect appears when the left eye sees
the same character more to the left. This is of course impossible on the
left border of the picture.</p></li>
<li><p>Don’t use too different depths and don’t use the depths very
close to the paper (beginning of the alphabet). This would make it more
difficult to see the picture.</p></li>
<li><p>When passing an argument, don’t use a too short one; the
repeating pattern which arises from the repetition of the argument could
interfere with the repeating pattern which creates the 3D
effect.</p></li>
</ul>
<h3 id="extra-features">Extra-Features</h3>
<ul>
<li><p>The program is able to handle all common kinds of line breaks:
Unix, DOS and Mac. To get an output with a certain kind of line breaks,
simply use the same kind of line breaks in the input file.</p></li>
<li><p>As the source code is a 3D picture itself, the easiest way to get
it (if you lost it or if you don’t have it already) is to use the
program itself on the right picture and with the right
argument:</p></li>
</ul>
<div class="sourceCode" id="cb10"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./herrmann2</span> <span class="dt">\</span></span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a><span class="st">&#39;char*d,A[9876];e;b;*ad,a,c; tw,ndr,T; wri; ;*h; _,ar ;on;&#39;</span><span class="dt">\</span></span>
<span id="cb10-3"><a href="#cb10-3" aria-hidden="true" tabindex="-1"></a><span class="st">&#39; ;l ;i(V)man,n {-!har ; =Aadre(0,&amp;e,o||n -- +,o4,=9,l=b=8,&#39;</span><span class="dt">\</span></span>
<span id="cb10-4"><a href="#cb10-4" aria-hidden="true" tabindex="-1"></a><span class="st">&#39;!( te-*Aim)|(0~l),srand (l),,!A,d=,b))&amp;&amp;+((A + te-A(&amp;(*)=+ +95&gt;&#39;</span><span class="dt">\</span></span>
<span id="cb10-5"><a href="#cb10-5" aria-hidden="true" tabindex="-1"></a><span class="st">&#39;e?(*&amp; c_*r=5,r+e-r +_:2-19&lt;-+?|(d==d),!n ?*d| *( (char**)+V+), (&#39;</span><span class="dt">\</span></span>
<span id="cb10-6"><a href="#cb10-6" aria-hidden="true" tabindex="-1"></a><span class="st">&#39; +0,*d-7 ) -r+8)c:7:+++7+! r: and%9- 85! ()-(r+o):(+w,_+ A*(=er&#39;</span><span class="dt">\</span></span>
<span id="cb10-7"><a href="#cb10-7" aria-hidden="true" tabindex="-1"></a><span class="st">&#39;i+(o)+b)),!write,(=_((-b+*h)(1,A+b,!!((((-+, a &gt;T^l,( o-95=+))w?&#39;</span><span class="dt">\</span></span>
<span id="cb10-8"><a href="#cb10-8" aria-hidden="true" tabindex="-1"></a><span class="st">&#39;++ &amp;&amp;r:b&lt;&lt;2+a +w) ((!main(n*n,V) , +-) ),l)),w= +T--&gt;o +o+;{ &amp;!&#39;</span><span class="dt">\</span></span>
<span id="cb10-9"><a href="#cb10-9" aria-hidden="true" tabindex="-1"></a><span class="st">&#39;a;}return _+= &#39;</span> <span class="op">&lt;</span> herrmann2.ioccc</span></code></pre></div>
<ul>
<li><p>If I had submitted the program last year, I would have said that
it has exactly the maximum allowed length: 1536 characters. Now let’s
say it’s a way of protesting against the inflation in program
length.</p></li>
<li><p>The size of the source 3D picture has been chosen carefully: as
big as possible, but small enough to be viewed without problems on
normal-sized terminals.</p></li>
</ul>
<h3 id="why-this-program-should-win">Why this program should win</h3>
<ul>
<li><p>The layout is of a completely new kind. And it describes what the
program does more precisely than any comment could.</p></li>
<li><p>I don’t think there has ever been an IOCCC program with so severe
layout constraints. Once the 3D picture has been fixed, only a sixth of
the characters can be chosen freely! (457 of 1840, to be exact.) In
contrast, in palindrome programs, for example, half of the characters
can be chosen freely.</p></li>
<li><p>I did not cheat by using comments or <code>-D</code> options -
something I’ve seen even some palindrome programs do. In fact, at my
first attempt at writing the program I became convinced that it isn’t
possible without cheating. But then I found out that with comments or
defines, it would become trivial, so I had to try harder…</p></li>
<li><p>If you don’t believe the constraints are hard, try to write just
one single line which satisfies them. (To be able to make one function
call, for example, you have to fill an entire line with stuff doing
mostly nothing.)</p></li>
<li><p>Just in case this is not enough: Yes, the code itself is
obfuscated: It’s (almost) only one big expression, with deep nesting of
<code>()</code> and <code>?:</code>, and full of unnecessary operations
which do not really help making it readable. And it contains a lot of
“magic numbers”. (My favourite is the <code>7</code> in line 15 (each
one). Which is the other digit I could have put there instead, and what
other changes to the program would have been necessary? Without
violating the constraints of course.)</p></li>
<li><p>The fact that the main loop of the program calls
<code>main()</code> recursively is nothing new. New however is that this
program only needs a logarithmic recursion depth! (Find out how this
works.)</p></li>
<li><p>When still in doubt about how to judge this program,
type</p></li>
</ul>
<div class="sourceCode" id="cb11"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./herrmann2</span> <span class="op">&lt;</span> herrmann2.cup</span></code></pre></div>
<p>and let the result inspire you. ;-)</p>
<h3 id="requirements-to-the-compiler-compatibility">Requirements to the
compiler / Compatibility</h3>
<ul>
<li><p>I fear that gcc is the only compiler for which this program
works. Due to the severe restrictions, I was forced to use declarations
of <code>int</code> variables, functions and parameters without
specifying their type. The biggest problem was to put
<code>int main(int c, char ** v){</code> into the program. After some
time, I became convinced that this is impossible. Finally, at least I
managed to squeeze <code>main(c, v){</code> into the constraints
instead.</p></li>
<li><p>Also, a lot of warnings are produced - most of them “data
definition has no type or storage class”, but also some “parameter names
(without types) in function declaration” and “assignment from
incompatible pointer type”. I wasn’t able to get rid of them.</p></li>
<li><p>At least, it probably works with all sufficiently recent versions
of gcc. I tested it with versions 2.7.2.1, 2.8.1, 2.95.2, and
ecgs-2.91.66.</p></li>
<li><p>Of course I couldn’t put <code>#include</code>s at the beginning
of the program. Usually, this is not really necessary with gcc. However,
for this program it would have been, because some functions appear as
function pointers, and as such they are not generated implicitly. So the
build script has to pass <code>-include ...</code> to gcc. A problem
with this is that the complete path of the include files has to be
provided. In the build script, I assume that the path is
<code>/usr/include</code>, but this can easily be adapted.</p></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-2001herrmann2"><a name="inventory"></a>Inventory
for 2001/herrmann2</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/2001/herrmann2/herrmann2.c">herrmann2.c</a>
- winning source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/Makefile">Makefile</a>
- winner Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.alt.c">herrmann2.alt.c</a>
- alternative source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.orig.c">herrmann2.orig.c</a>
- original source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.cup">herrmann2.cup</a>
- sample input</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.ioccc">herrmann2.ioccc</a>
- sample input</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/try.sh">try.sh</a>
- how to run</li>
<li><a href="2001_herrmann2.tar.bz2">2001_herrmann2.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/2001/herrmann2/.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/2001/herrmann2/.winner.json">.winner.json</a>
- description of winner in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/README.md">README.md</a>
- markdown source for index.html</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%2F2001%2Fherrmann2%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 -->