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

+291 -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,303 @@
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- file: 1998/df/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>1998 df</title>
<meta name="description" content="IOCCC year: 1998 IOCCC winner: df winner index page">
<meta name="keywords" content="IOCCC,1998,df,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>1998/df</title>
<meta name="description" content="1998 IOCCC winner df">
<meta name="keywords" content="IOCCC, 1998, IOCCC 1998, IOCCC winner, df">
</head>
<!-- END: this line ends content from: inc/head.default.html -->
<!-- START: this line starts content from: inc/body.default.html -->
<body>
<h1>1998 df</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>1998/df</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%2F1998%2Fdf%2Findex.html">Nu Html check https://ioccc-src.github.io/temp-test-ioccc/1998/df/index.html</a></p>
<!-- End Nu Html Checker -->
<div class="topnav">
<a class="Left" href="../chaos/index.html">&larr; chaos</a>
<a class="Left" href="../index.html">&uarr; 1998 &uarr;</a>
<a class="Left" href="../dlowe/index.html">dlowe &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#Daniel_Fischer">Daniel
Fischer</a><br> Location: <a
href="/temp-test-ioccc/location.html#null">unknown</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> all</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">./df</span></span></code></pre></div>
<h2 id="judges-remarks">Judges’ remarks;</h2>
<p>Everyone talks about how data hiding can produce clearer code; I am
pleased to offer this charming refutation.</p>
<p>The program is a simple game. A bit of observation reveals that the
game has some data - but where? It’s unclear which of the contents of
the program are used.</p>
<p>Curiously, the program only works if its source is in the directory
it’s run in. More curiously, the program would fail if the program’s
name’s second letter wasn’t <code>r</code> (the source has been changed
for your convenience and this restriction no longer exist).</p>
<p>Modern design has come a long way since the unreadable,
tightly-coupled systems we used to have.</p>
<p>Extra credit questions:</p>
<ul>
<li>Where are the words stored?</li>
<li>How many words does this entry use?</li>
<li>Can you add more words to the program and still make it work?</li>
</ul>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>This program lets you guess English words. It displays an underscore
for each letter in the word; guessing a letter that actually is in the
word replaces the corresponding underscores with the letter itself. You
can guess a letter simply by typing it in. If your C implementation
requires it, you may have to hit Return before it is recognized. In this
case, you can also type multiple guesses on the same line (completely
solve it by entering <code>abcdefghijklmnopqrstuvwxyz</code>). Execution
stops when all underscores have been replaced.</p>
<p>The program offers a number of different words to guess,
<code>time()</code> is used to pick one at random. All words are eight
characters long.</p>
<p>The source should compile with any ANSI C compiler (I used
CodeWarrior w/ ANSI strict). Using non-ANSI compilers that implement the
ANSI features it uses will not work (unless they defined
<code>__STDC__ 1</code> which they shouldn’t). Due to space
restrictions, I did not use any trigraph sequences. It does not require
any special <code>-D</code> defines.</p>
<p>The source passes lint without any complaint (if invoked with
<code>&gt;/dev/null</code>). (My lclint is unable to recover from some
parts of it.)</p>
<p>Actually, the code not only is compliant with the ANSI
specifications, but uses a near minimum subset of them. C keywords that
were not used have been re(de)fined to avoid unnecessary introduction of
new, unknown character patterns. The source also includes all ANSI
headers it needs (after most of the functions have been used), and the
declaration of <code>main()</code> follows the guidelines (but the
return type has a different meaning and the arguments are either misused
or unused). There also may be some compiler warnings. These are not
bugs, but features. The more warnings, the better the compiler. There
wouldn’t be any if I had been allowed to use some extra space for
prototypes etc.</p>
<p>Multiple defines are used (but not all of them define), and
<code>#define y define</code> is used with <code>#y</code> but the code
doesn’t assume <code>#y</code> to expand to <code>#define</code>. I have
also included comments in the code, and vital code in the comments. And
of course there is code that doesn’t do anything but will crash the
program if it is removed (just like those comments I mentioned above).
Additionally, since you said you’d be preprocessing entries ignoring
<code>#include</code>s I figured I should use some more of them instead
of other obfuscation methods. Did I mention that preprocessed or
beautified sources will crash or hang your system? The program will also
crash on non-ASCII machines.</p>
<p>The executable needs its source file present in the current directory
or, depending on your system, in your path. The name of the source file
is not hard-coded, <code>__FILE__</code> is used instead.</p>
<p>In the original version which was sent in to the contest, there were
some restrictions on the file name:</p>
<ul>
<li>The second letter had to be a lowercase <code>r</code>.</li>
<li>The third letter could never be a <code>+</code> or a
<code>b</code>.</li>
</ul>
<p>Valid names would have been <code>pr4.c</code>, <code>pr.c</code>,
<code>prog.c</code>, <code>brownie.c</code> etc. My first private
version would only run when compiled on a Friday. I decided it would be
better this way… These restrictions have been removed for your
convenience.</p>
<p>The following lines describe how this program works; if you don’t
want to know it at this time, please skip them. If this entry would by
some mistake win the contest, please do not rot13 this - I hate rot13
spoilers since it is somewhat complicated on a Mac to reverse them.
Anyone out there should have enough discipline and rot13 shouldn’t be
required, really. After all, we are not children anymore :-)</p>
<hr />
<p>This paragraph is not part of the author’s remarks, but is a helpful
gift from the judges; if you read too fast to stop yourself, this should
give you enough time to stop, which you really need to do RIGHT NOW if
you don’t want to read the spoilers, which really do spoil everything,
we mean it.</p>
<hr />
<p>The source file needs to be present because the words are read from
it. The wordlist is encoded within the source using a 24 entry sliding
dictionary where lowercase letters are offsets into the dictionary,
uppercase letters are new letters not yet in the dictionary, and all
other characters are ignored. The words are spread over six lines in the
source; decoding starts on a line after a tab and a whitespace have been
found, and stops on a newline. The grin after the “Demonic Smiley”
actually is one encoded letter while the string is completely ignored;
and the <code>cut</code> in “cut here” is required while
<code>here</code> is not.</p>
<p>“For extra credit”, explain why the words are sorted alphabetically
(because I extracted them from a dictionary :-) )</p>
<p>The file name had to fulfill the restrictions mentioned above because
<code>__FILE__+1</code> was used as a second parameter to
<code>fopen()</code>. (It essentially was
<code>fopen(__FILE__,__FILE__+1)</code> ). This was an extra joke that
doesn’t exist in the released version.</p>
<p>You probably discovered that the <code>while(FILE)</code> in
<code>main()</code> is not a while loop but the statement that opens the
file and initializes the dictionary. Similarly, <code>int</code> and
<code>signed</code> have been redefined (to save space, of course).</p>
<p>The main function (the guessing part) is between the last
<code>#else..#endif</code>, but still is declared before
<code>main()</code>. The <code>5[O]()</code> in <code>main()</code>
calls this function. Similarly, most indexing operations have been
changed to this form and I tried to write each such operation
different.</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>
<!-- START: this line starts content generated by: bin/gen-inventory.sh -->
<h1 id="inventory-for-1998df"><a name="inventory"></a>Inventory for
1998/df</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/1998/df/df.c">df.c</a>
- winning source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/Makefile">Makefile</a>
- winner Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/df.orig.c">df.orig.c</a>
- original source</li>
<li><a href="1998_df.tar.bz2">1998_df.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/1998/df/.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/1998/df/.winner.json">.winner.json</a>
- description of winner in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/df/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%2F1998%2Fdf%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 -->