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

+301 -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,313 @@
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- file: 2013/cable2/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>2013 cable2</title>
<meta name="description" content="IOCCC year: 2013 IOCCC winner: cable2 winner index page">
<meta name="keywords" content="IOCCC,2013,cable2,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>2013/cable2</title>
<meta name="description" content="2013 IOCCC winner cable2">
<meta name="keywords" content="IOCCC, 2013, IOCCC 2013, IOCCC winner, cable2">
</head>
<!-- END: this line ends content from: inc/head.default.html -->
<!-- START: this line starts content from: inc/body.default.html -->
<body>
<h1>2013 cable2</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>2013/cable2</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%2F2013%2Fcable2%2Findex.html">Nu Html check https://ioccc-src.github.io/temp-test-ioccc/2013/cable2/index.html</a></p>
<!-- End Nu Html Checker -->
<div class="topnav">
<a class="Left" href="../cable1/index.html">&larr; cable1</a>
<a class="Left" href="../index.html">&uarr; 2013 &uarr;</a>
<a class="Left" href="../cable3/index.html">cable3 &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#Adrian_Cable">Adrian Cable</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>
<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#2013-cable2">2013
cable2 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">./cable2</span> file.bmp <span class="pp">[</span><span class="ss">color</span><span class="pp">]</span></span></code></pre></div>
<h2 id="try">Try:</h2>
<p>For different OCR examples:</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="ex">./try.sh</span></span></code></pre></div>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>We can confirm that this is the first time the IOCCC has been used to
peer-review a new research. We had quite a bit of fun with a sharpie and
a scanner.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="ocr---obfuscated-character-recognition-of-handwritten-text">OCR
- Obfuscated Character Recognition of Handwritten Text</h3>
<p>This entry takes a BMP image file of hand-drawn (mouse-drawn?) text,
specified as the first command-line parameter, and converts it to an
ASCII text document. Magic!</p>
<p>BMP files created by most paint programs should work. The author
recommends Paint.NET.</p>
<h3 id="features">Features</h3>
<ul>
<li>Every printable ASCII character is recognized (94 characters plus
space), plus a special bonus character.</li>
<li>Input images can be any size (limited only by memory), containing
any number of lines of text.</li>
<li>BMP is really a mess of different formats, but the program supports
most of them from Windows 3.1 and later.</li>
<li>Hand-drawn characters in the input image can be variably spaced and
positioned and be of any width or height, but the bigger the better for
accurate recognition (300 pixels tall or more is recommended).
Characters must be drawn with a stroke width of around 9 pixels, and
separated from adjacent characters. (In Paint.NET a brush of width 9
works well, with anti-aliasing turned off.)</li>
<li>You can use any colors you like for the text and background, even
different colors for different text characters.</li>
<li>If “color” is specified as the second command line parameter, the
program’s output will also be in color, on ANSI/VTxxx terminals.</li>
</ul>
<h3 id="why-is-this-entry-obfuscatedinteresting">Why is this entry
obfuscated/interesting?</h3>
<ul>
<li>The source is presented as a beautiful moonlit scene, in which a
quick brown fox jumps over a lazy dog. Far too often in software
development is aesthetic nuance lost in the name of serious-sounding
conventions like “GNU style”, but not here.</li>
<li>Newcomers to C find it hard to learn all those different ways to
control flow: <code>for</code>, <code>while</code>, <code>if</code>,
<code>do</code>, <code>goto</code>, <code>continue</code>,
<code>break</code> and heaven knows what else! So, in this program we
only use <code>for</code>, so absolute beginners can get into the code
straight away.</li>
<li>To teach newcomers all the important features of C, we demonstrate
the importance of the liberal use of short circuits, sequence points,
the ternary operator, using <code>x^y</code> or <code>x-y</code> instead
of <code>x!=y</code>, using <code>~x</code> in place of
<code>x!=-1</code> for conciseness, mixing <code>x[y]</code> and
<code>y[x]</code> for variety, educational <code>#define</code>s, and so
on.</li>
<li><code>main()</code> is the most useful function in all of C - so it
is a mystery to the author why most programs use it only once. Here we
use it over and over for maximum benefit.</li>
<li>The number <a href="https://hitchhikers.fandom.com/wiki/42">42</a>
is featured in the source to provide an answer to the judges’ deeper
questions.</li>
<li>How are character colors converted from RGB in the input image to
ANSI escape sequences? Clue: the weird macro <code>P</code> does the
interesting part of it, but how?</li>
<li>The program prints a string when the bonus character is detected.
How does it do this? Clue: the string to print is defined in the macro
<code>$</code>, but how can a string defined in that way ever get
printed?</li>
</ul>
<h3 id="other-notes">Other notes</h3>
<ul>
<li>The novel character recognition algorithm used has not been
previously published and was developed by the author specifically for
the contest. Should this entry win the IOCCC, it will be the first time
(to the author’s knowledge) that the IOCCC has been used for peer
review/publication of original research.</li>
<li>OCR in general is a hard problem. Here, we only recognise one
possible form for each character. You can see what the supported
character shapes look like by looking at the examples in <a
href="ascii.bmp">ascii.bmp</a>. If you copy the shape of the character
forms you find in there, recognition accuracy should be very good
(95%+). A more “useful” version would extend the character stroke table
to support multiple different commonly-used forms for each
character.</li>
<li>Despite being the largest possible IOCCC entry at 4096 bytes, it is
also probably the smallest general-purpose OCR program ever written
(including the character stroke data), maybe by several orders of
magnitude.</li>
<li>The author used an interesting compression algorithm (suggested by
Gareth McCaughan - thank you!) to squeeze the character stroke table
(containing around 2000 strokes for the whole ASCII character set) into
a string constant of just 472 characters.</li>
</ul>
<h3 id="bugsfeatures">Bugs/features</h3>
<ul>
<li>The width of input images must be a multiple of 4.</li>
<li>Input images can be 8-bit greyscale, 24-bit color or 32-bit color
only. 8-bit color and 16-bit color are not supported. If you use the
“color” command-line feature, do not use a greyscale input file!</li>
<li>Normal Windows BMP files are stored “upside-down”, i.e. the bottom
line in the image is written first. Some (old) graphics programs
actually write BMP files “top-to-bottom” and the program does not
support such files.</li>
<li>Using anti-aliased brush strokes to draw your letters is fine;
however, antialiasing interferes with color detection in “color”
mode.</li>
<li>Only runs on little endian machines (since the BMP format is little
endian, and endianness conversion would make the source too large for
IOCCC rule 2).</li>
</ul>
<h3 id="compiler-warnings">Compiler warnings</h3>
<p><code>clang</code> warns about unused expression results, missing
type specifiers, and incompatible pointer conversions - all just a fun
consequence of the obfuscations.</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-2013cable2"><a name="inventory"></a>Inventory for
2013/cable2</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/2013/cable2/cable2.c">cable2.c</a>
- winning source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/cable2/Makefile">Makefile</a>
- winner Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/cable2/cable2.orig.c">cable2.orig.c</a>
- original source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/cable2/try.sh">try.sh</a>
- how to run</li>
<li><a href="ascii.bmp">ascii.bmp</a> - PC bitmap image</li>
<li><a href="bonus.bmp">bonus.bmp</a> - PC bitmap image</li>
<li><a href="hello_world.bmp">hello_world.bmp</a> - PC bitmap image</li>
<li><a href="mixed_sizes.bmp">mixed_sizes.bmp</a> - PC bitmap image</li>
<li><a href="multi_color.bmp">multi_color.bmp</a> - PC bitmap image</li>
<li><a href="typeset.bmp">typeset.bmp</a> - PC bitmap image</li>
<li><a href="2013_cable2.tar.bz2">2013_cable2.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/2013/cable2/.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/2013/cable2/.winner.json">.winner.json</a>
- description of winner in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/cable2/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%2F2013%2Fcable2%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 -->