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

+357 -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,369 @@
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- file: 2004/jdalbec/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>2004 jdalbec</title>
<meta name="description" content="IOCCC year: 2004 IOCCC winner: jdalbec winner index page">
<meta name="keywords" content="IOCCC,2004,jdalbec,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>2004/jdalbec</title>
<meta name="description" content="2004 IOCCC winner jdalbec">
<meta name="keywords" content="IOCCC, 2004, IOCCC 2004, IOCCC winner, jdalbec">
</head>
<!-- END: this line ends content from: inc/head.default.html -->
<!-- START: this line starts content from: inc/body.default.html -->
<body>
<h1>2004 jdalbec</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>2004/jdalbec</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%2F2004%2Fjdalbec%2Findex.html">Nu Html check https://ioccc-src.github.io/temp-test-ioccc/2004/jdalbec/index.html</a></p>
<!-- End Nu Html Checker -->
<div class="topnav">
<a class="Left" href="../hoyle/index.html">&larr; hoyle</a>
<a class="Left" href="../index.html">&uarr; 2004 &uarr;</a>
<a class="Left" href="../kopczynski/index.html">kopczynski &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#John_Dalbec">John Dalbec</a><br>
Location: <a href="/temp-test-ioccc/location.html#US">US</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>
<p>There is an alternate version that allows one to control the number
of numbers to print on a line. See <a href="#alternate-code">alternate
code</a> below.</p>
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
<p>The current status of this entry is:</p>
<pre><code>STATUS: INABIAF - please **DO NOT** fix</code></pre>
<p>For more detailed information see <a
href="/bugs.md#2004-jdalbec">2004 jdalbec in bugs.md</a>.</p>
<h2 id="to-use">To use:</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">./jdalbec</span> number ...</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">./try.sh</span></span></code></pre></div>
<h2 id="alternate-code">Alternate code:</h2>
<p>This version lets you control how many numbers to show on a line
before adding a newline as it can be harder to see when there are a lot
of numbers. For lines that don’t end up having too many line breaks it
also makes it easier to see which line it is on.</p>
<h3 id="alternate-build">Alternate build:</h3>
<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">make</span> alt</span></code></pre></div>
<p>The macro <code>Ag</code> (<a
href="https://en.wikipedia.org/wiki/Silver">silver</a>) controls how
many number of lines to print on a line. Set at default to 11 protons,
salt, if you wish to make it silver, 47 (a prime) protons, do:</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="fu">make</span> clobber Ag=47 alt</span></code></pre></div>
<p>though it might be odd to have 47 numbers on a line as it would
defeat the purpose. :-) Or if you prefer some prime, golden irony:</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="fu">make</span> clobber Ag=79 alt</span></code></pre></div>
<h3 id="alternate-use">Alternate use:</h3>
<p>Use <code>jdalbec.alt</code> as you would <code>jdalbec</code>
above.</p>
<h3 id="alternate-try">Alternate try:</h3>
<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">./try.alt.sh</span></span></code></pre></div>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>We still aren’t sure whether or not this is a useful program, but
it’s the first atomic fission we’ve seen in the IOCCC.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>It’s elementary!</p>
<p>See <a href="http://mathworld.wolfram.com/LookandSaySequence.html"
class="uri">http://mathworld.wolfram.com/LookandSaySequence.html</a> and
<a href="http://mathworld.wolfram.com/CosmologicalTheorem.html"
class="uri">http://mathworld.wolfram.com/CosmologicalTheorem.html</a>
and the references listed there.</p>
<p>Go read the web pages and come back.</p>
<p>This program implements the <a
href="https://mathworld.wolfram.com/LookandSaySequence.html">look-and-say
sequence (one of the above listed links)</a> with the added feature that
each “decay product” is automatically split into its constituent
“elements” separated by spaces. Furthermore, arguments passed to the
program are treated as separate elements for the purpose of computing
further decay products. (Compare the output of <code>./jdalbec 1</code>,
<code>./jdalbec 11</code>, and <code>./jdalbec 1 1</code>.) This allows
output lines from the program to be passed back to the program as input
(minus the initial generation number).</p>
<p>The common elements are listed in <a
href="http://mathworld.wolfram.com/CosmologicalTheorem.html">CosmologicalTheorem.html</a>.
The non-<a
href="https://en.wikipedia.org/wiki/Primordial_nuclide">primordial</a>
<a href="https://en.wikipedia.org/wiki/Transuranium_element">transuranic
elements</a> are the <a
href="https://en.wikipedia.org/wiki/Isotope">isotopes</a> of <a
href="https://en.wikipedia.org/wiki/Neptunium">Neptunium</a> and <a
href="https://en.wikipedia.org/wiki/Plutonium">Plutonium</a>. Isotopes
of a given <a
href="https://en.wikipedia.org/wiki/Chemical_element">element</a> differ
only in the last digit. Four common elements could also be written as
isotopes of these two elements: <code>He=Np(2)</code>,
<code>Li=Pu(2)</code>, <code>Ta=Np(3)</code>, <code>W=Pu(3)</code>. To
get other isotopes, just change the last digit to a number greater than
3.</p>
<p>The build file runs <a href="jdalbec.c">jdalbec.c</a> through the C
preprocessor to generate <code>jdalbec2.c</code> which is edited with
<code>ed(1)</code> (NOTE: this was changed to <code>sed(1)</code> by the
judges) to correct spacing problems caused by some preprocessors. (I
know you dislike Perl, but hopefully <code>ed(1)</code> is more common
on POSIX systems than Perl.) The build file then compiles
<code>jdalbec2.c]</code> and removes the <code>jdalbec2.c</code>
file.</p>
<p>I don’t think I’m abusing the <a href="Makefile">Makefile</a> since
I’m only using 147 characters including white space and the
<code>#!</code> line and the commented-out <code>-Wall -pedantic</code>
options. The <a href="/2004/rules.txt">rules for the 16th IOCCC</a>
specifically allowed build files up to 521 characters long so my build
file would have been well within those limits. (What typo?)</p>
<p><code>gcc -E -Wall -pedantic</code> complains that trigraphs are
present and that
<code>"pasting ... does not yield a valid processing token"</code>.</p>
<p><code>gcc -ansi -Wall -pedantic</code> complains about
<code>#line</code> directives, trigraphs, and expressions and statements
that have no effect. The last complaint is false in all but one case.
Removing the offending expressions causes some compilers to report
syntax errors because they can’t determine whether a name refers to a
variable or a type.</p>
<p>Since buffer overflows are a common security problem these days I
have stolen the idea of using a “safe” buffer API from
<code>vsftpd</code>. This means the program should never crash,
right?</p>
<p>The program was tested on: AMD K6/MMX 266MHz, Debian GNU/Linux
testing “Sarge”, gcc 3.3.2 Intel 486DX 33MHz, Red Hat Linux 7.3, gcc
2.96 PowerPC Macintosh G4 Quicksilver, Mac OS X 10.3.2, gcc 3.3 PowerPC
Macintosh G4 Quicksilver, Mac OS X 10.1.5, cc 2.95.2 PowerPC Macintosh
Performa 5200CD, Mac OS 8.6, CodeWarrior 11 Sun SPARC Ultra 10, Solaris
8, gcc 3.2</p>
<p>Compiling on Mac OS 8.6 requires some degree of manual intervention
because Mac OS 8.6 doesn’t have shell scripting or even a normal command
prompt. The <code>CodeWarrior</code> 11 compiler is the reason I had to
use trigraphs. I have to preprocess <code>jdalbec.c</code> without
trigraphs, save the result as <code>jdalbec2.c</code>, then compile
<code>jdalbec2.c</code> with trigraphs to get the program to work. I
also have to add an include file and a function call to the program to
get a pseudo command line so I can pass arguments. The compiler also
requires function prototypes by default, which is why I have prototypes
for all my functions.</p>
<p>Compiling on Mac OS X 10.1.5 requires changing <code>??=</code> to
<code>#</code> on line 3 because the compiler doesn’t recognize
<code>??=</code> as a trigraph (which I consider a compiler bug). The
initial preprocessing step on Mac OS X 10.1.5 generates lots of errors
in “smart mode” because the “smart” preprocessor expects a valid C
program as input. The preprocessor then falls back to “basic mode” and
preprocesses <a href="jdalbec.c">jdalbec.c</a> successfully without
warnings, even when I give it the <code>-Wall -pedantic</code> options.
It inserts a lot of extra spaces into the preprocessed output which is
why I had to add the <code>ed(1)</code> step to the build file so that
my macro <code>#defines</code> would work. The compile step gives the
usual messages with <code>-Wall -pedantic</code>. The link step
generates a warning about a name conflict between my <code>BC()</code>
and a <code>BC()</code> from curses in the main system library.</p>
<h3 id="bugs-features"><strike>BUGS</strike> FEATURES:</h3>
<p>Arguments matching <code>/[^2]22$/</code> cause the program to
segfault after rapidly exhausting the available stack space. I could
probably fix this by adding some special cases to the code, but [Blaine
the Mono] it’s quite a bit more exciting this way, don’t you
think?[/Blaine] Since the trailing <code>22</code> will be its own atom
anyway, you can just insert a space in front of it if you run into this
feature (e.g. <code>1 22</code> instead of <code>122</code>).</p>
<p>Note: you may want to be sure you have a limit on stack size before
trying this. I ran it on Debian GNU/Linux and discovered that I did not
have a limit on stack size. Fortunately the OS killed the process after
a while. This is consistent with the output of <a
href="/1996/schweikh3/schweikh3.c">1996/schweikh3</a> which reports
<code>malloc lied! Killed by SIGKILL</code>.</p>
<p>Arguments matching <code>/(?:.){10,}/</code> will produce visually
incorrect results (e.g., generation 1 starting from 1111111111 will
print as <code>: 1</code>), but there’s nothing interesting about these
arguments that can’t be modeled using shorter runs of the same
symbol.</p>
<p>Arguments matching <code>/(?:.){257,}/</code> may produce
mathematically incorrect results (e.g., generation 1 starting from a
string of 257 <code>1</code>s will be calculated as <code>11</code>);
the remark from the previous paragraph applies here also.</p>
<p>The program has exactly 2004 IOCCC countable bytes. It’s tailor-made
for this competition!</p>
<p>Although there are no comments, the program still manages to be
self-documenting in an obscure fashion (periodic table of the
(non-primordial) elements, “OBFUSCATED C”).</p>
<h3 id="obfuscation">Obfuscation</h3>
<p>The program is obfuscated:</p>
<ul>
<li>By invoking <code>cpp</code> twice.</li>
<li>By the use of <code>#define</code>s.</li>
<li>By the use of <code>typedef</code>s.</li>
<li>By the use of global constants.</li>
<li>By the use of global functions that replace the standard ones (I
particularly like substituting <code>At</code> (<a
href="https://en.wikipedia.org/wiki/Astatine">Astatine</a>, highly
unstable) for <code>abort()</code>.) By overloading symbols (For
example, <code>B</code> is a type, a structure, a structure member, a
macro parameter, and a variable.).</li>
<li>By standard tricks like writing <code>'\0'</code> as
<code>1["3"]</code> or <code>2["22"]</code>.</li>
<li>By using ternary operators to avoid <code>else</code>.</li>
<li>By using the <code>Sb()</code> function to create sub-buffers from
either end.</li>
<li>By naming everything after chemical elements or pairs of
elements.</li>
<li>Because it says so in the source. ;)</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-2004jdalbec"><a name="inventory"></a>Inventory for
2004/jdalbec</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/2004/jdalbec/jdalbec.c">jdalbec.c</a>
- winning source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2004/jdalbec/Makefile">Makefile</a>
- winner Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2004/jdalbec/jdalbec.alt.c">jdalbec.alt.c</a>
- alternative source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2004/jdalbec/jdalbec.orig.c">jdalbec.orig.c</a>
- original source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2004/jdalbec/try.alt.sh">try.alt.sh</a>
- how to run alternative code</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2004/jdalbec/try.sh">try.sh</a>
- how to run</li>
<li><a href="2004_jdalbec.tar.bz2">2004_jdalbec.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/2004/jdalbec/.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/2004/jdalbec/.winner.json">.winner.json</a>
- description of winner in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2004/jdalbec/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%2F2004%2Fjdalbec%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 -->