build missing HTML files for entries

Setup a simple topnav for missing HTML files for entries.

Added `bin/gen-other-html.sh` to build entry HTML files from
markdown other than README.md to index.html HTML files.

Fixed duplicate link text in `2020/ferguson1/gameplay.md`.

Improved `inc/md2html.cfg` to support building the missing HTML
files for entries.

Added `make gen_other_html` to top level Makefile.
Added `make gen_other_html` to `make quick_www` and `make www`.

Fixed inventory links for year level index.html files.
Changed `bin/output-year-index.sh` VERSION from "1.0.1 2024-02-23"
to "1.1 2024-02-27".

Added missing lines in `manifest.numbers`.  Update the affected
`.entry.json` files.

The manifest (in both `manifest.numbers` and the collection of
manifests from of all entry `.entry.json` files) now match.  Errors
from `make verify_entry_files` will now abort both `make quick_www`
and `make www` rules in the top level `Makefile`.

Changed markdown files in manifest to have an _inventory_order_ of
_2000000000_ so that the `index.html` file will usually appear at
the start of the _Secondary files_ set for the "#inventory" section
of an entry's `index.html` file.

Changed compressed tar files (files that end in _.tar.bz2_) in
manifest to have an _inventory_order_ of _100000_ so that these
files will usually appear at the end of the _Primary files_ set for
the "#inventory" section of an entry's `index.html` file.

Added 'Jump to top` link above the _Primary files_ section.
Changed `bin/output-index-inventory.sh` VERSION from "1.1.1 2024-02-23"
to "1.2 2024-02-27".

Updated HTML files to perform the above via `make www`.
This commit is contained in:
Landon Curt Noll committed 2024-02-27 22:36:20 -08:00
1 parent 7babf792e4
commit 9d3438fb88
718 files changed
+17515 -4084

No files matched your search

+8 -8
View File
@@ -9,14 +9,6 @@
{ "author_handle" : "Philip_Blakely" }
],
"manifest" : [
{
"file_path" : "index.html",
"inventory_order" : 10,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : "blakely.c",
"inventory_order" : 20,
@@ -57,6 +49,14 @@
"display_via_github" : false,
"entry_text" : "download entry source"
},
{
"file_path" : "index.html",
"inventory_order" : 2000000000,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : ".entry.json",
"inventory_order" : 4294967295,
+2 -1
View File
@@ -252,9 +252,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
<h1 id="inventory-for-2012blakely"><a name="inventory"></a>Inventory for
2012/blakely</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/blakely/blakely.c">blakely.c</a>
- entry source</li>
@@ -272,6 +272,7 @@ entry source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/blakely/.entry.json">.entry.json</a>
- description of entry in JSON</li>
+9 -9
View File
@@ -9,14 +9,6 @@
{ "author_handle" : "Alex_Deckmyn" }
],
"manifest" : [
{
"file_path" : "index.html",
"inventory_order" : 10,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : "deckmyn.c",
"inventory_order" : 20,
@@ -81,6 +73,14 @@
"display_via_github" : false,
"entry_text" : "download entry source"
},
{
"file_path" : "index.html",
"inventory_order" : 2000000000,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : ".entry.json",
"inventory_order" : 4294967295,
@@ -119,7 +119,7 @@
"OK_to_edit" : true,
"display_as" : "markdown",
"display_via_github" : true,
"entry_text" : "markdown source for design.html"
"entry_text" : "markdown source for deckmyn.html"
}
]
}
+218
View File
@@ -0,0 +1,218 @@
<!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 !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: bin/gen-other-html.sh -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>The International Obfuscated C Code Contest</title>
<meta name="description" content="deckmyn.md for 2012/deckmyn">
<meta name="keywords" content="IOCCC, 2012/deckmyn, deckmyn.md">
</head>
<!-- END: this line ends content from: inc/head.default.html -->
<!-- START: this line starts content from: inc/body.default.html -->
<body>
<!-- END: this line ends content from: inc/body.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
<div class="header">
<img src="../../png/ioccc.png" alt="IOCCC image by Matt Zucker" width=300 height=110>
<h1>The International Obfuscated C Code Contest</h1>
<h2>deckmyn.md for 2012/deckmyn</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.up2index.html -->
<div class="topnav">
<a class="Left" href="index.html">&uarr; jump to index.html &uarr;</a>
</div>
<!-- END: this line ends content from: inc/topnav.up2index.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="../../index.html">IOCCC Home</a>
<a href="../../years.html">Winning Entries</a>
<a href="../../authors.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../../news.html">IOCCC News</a>
<a href="../../faq.html#submit">How to enter the IOCCC</a>
<a href="../../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../../bugs.html">Bugs &amp; (mis)features</a>
<a href="../../faq.html#fix_an_entry">Fixing IOCCC entries</a>
<a href="../../faq.html#fix_web_site">Fixing the web site</a>
<a href="../../faq.html#fix_author">Fixing author info</a>
<a href="../../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../../judges.html">The IOCCC Judges</a>
<a href="../../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 for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="user-manual">USER MANUAL</h1>
<h2 id="calling-the-program">Calling the program</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="ex">./deckmyn</span> <span class="st">&quot;</span><span class="kw">`</span><span class="fu">cat</span> deckmyn.c<span class="kw">`</span><span class="st">&quot;</span> <span class="st">&quot;</span><span class="kw">`</span><span class="fu">cat</span> musicfile<span class="kw">`</span><span class="st">&quot;</span> <span class="op">&gt;</span> output.pbm</span></code></pre></div>
<p>Then display <code>output.pbm</code>.</p>
<p>This minimalistic music notator expects two command line arguments.
The first is the font description embedded in the source code. Notice
that you don’t pass the file name, but the actual content as one long
character string! If you want to define your personal music font, you
can of course do so. The file layout must be exactly the same as <a
href="deckmyn.c">deckmyn.c</a> though, only the locations of space
(<code>" "</code>) may differ.</p>
<p>The second argument is the actual music. Again it is one long string,
not a file name. But it is possible to save your music in a file, of
course.</p>
<p>Output should be redirected to a file. Afterwards, this file can be
visualised with various viewers.</p>
<h2 id="music-input">Music input</h2>
<p>Every element in the music is given by a string of <em>exactly</em> 3
characters. Any violation of this will result in the rest of the music
being interpreted in some randomly wrong way. Notice that in a file, the
newline is also a character! Therefore, when preparing music in a file,
care should be taken that the last musical element of a line is only 2
characters!</p>
<ol type="1">
<li><p>Basic notes: A single note is input by a letter (in the range
<code>[A-Ga-g]</code>) followed by a duration (1, 2, 4 or 8) and
possibly a dot (<code>.</code>). The notes cover 2 octaves, from
<code>C</code> (lowest) to <code>b</code> (highest). The possible
durations are 1 (whole note), 2 (half note), 4 (quaver), 8
(semi-quaver). So a dotted quaver <code>A</code> followed by a semi
quaver <code>G</code> is input as <code>"A4.G8 "</code>.</p></li>
<li><p>Rests: A rest is given by the letter <code>r</code> followed by a
duration (1, 2, 4 or 8).</p></li>
<li><p>Bar lines: There are three possible bar line types: single
(<code>": "</code>), double (<code>":: "</code>) and final
(<code>":; "</code>).</p></li>
<li><p>Accidentals: Chromatic changes (sharp, flat, natural) are entered
separately from the note that follows them! They are a three-character
sequence by themselves. The first character is the chromatic change
[<code>+-=</code>]. The second is the pitch at which it should be drawn.
Thus <code>"+G G4 "</code> will draw a G sharp quaver. Notice that these
signs do not necessarily have to be followed by a note.
<code>"+f +c +g B2 "</code> is perfectly legal.</p></li>
<li><p>Space (formatting): To manually change the spacing of the music,
you can add space between different musical elements. This is given by
an <code>s</code> followed by the amount of space. <code>"s3 "</code> is
the space taken by one note. This length is given in 1 character.
However, to get a value larger than 9, you can just continue along the
ASCII table. So <code>"sz "</code> gives you quite a lot of space on a
staff. <code>"s0 "</code> is not only meaningless, it can cause nasty
results.</p></li>
<li><p>New staff: A token <code>"x "</code> signifies to start a new
staff of music. A music staff may never be empty! Even if you just put
some blank space (<code>"s1 "</code>), you should always have an entry
for every staff. <code>"x x "</code> may give nasty results.</p>
<p>All staves in the output are extended to the length of the longest
staff. To have nicely formatted music, though, you will probably have to
add spaces manually.</p></li>
<li><p>Time signatures: A time signature is given by
<code>[m][234][234]</code>. For example, <code>"m24"</code> will give
you a two fourth signature. Notice that there are only three available
numbers. Especially “6” and “8” are dearly missed.</p></li>
<li><p>Clef: The clef (<code>G</code> or <code>F</code>) can only be
changed at the beginning of the music input. If the music starts with
<code>"KF "</code>, the music will be written in a bass clef.
<code>"K"</code> followed by any other letter will just default to a
standard G clef.</p></li>
</ol>
<h2 id="examples">Examples</h2>
<p>Blank music paper (with G clef):</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">./deckmyn</span> <span class="st">&quot;</span><span class="kw">`</span><span class="fu">cat</span> deckmyn.c<span class="kw">`</span><span class="st">&quot;</span> <span class="st">&quot;sz sa x s1 x s1 x s1 x s1 x s1 &quot;</span><span class="op">&gt;</span> blank.pbm</span></code></pre></div>
<p>With an F clef:</p>
<pre><code>./deckmyn &quot;`cat deckmyn.c`&quot; &quot;KF sz sa x s1 x s1 x s1 x s1 x s1 &quot;&gt; blank.pbm</code></pre>
<p>Notice how only the first staff (or any staff) needs to have the full
length.</p>
<p>Some files with well-known melodies are included as examples.</p>
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.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=#">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 -->
+3 -2
View File
@@ -268,9 +268,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
<h1 id="inventory-for-2012deckmyn"><a name="inventory"></a>Inventory for
2012/deckmyn</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/deckmyn/deckmyn.c">deckmyn.c</a>
- entry source</li>
@@ -295,6 +295,7 @@ entry source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/deckmyn/.entry.json">.entry.json</a>
- description of entry in JSON</li>
@@ -307,7 +308,7 @@ href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/deckmyn/READ
- markdown source for index.html</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/deckmyn/deckmyn.md">deckmyn.md</a>
- markdown source for design.html</li>
- markdown source for deckmyn.html</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
+8 -8
View File
@@ -9,14 +9,6 @@
{ "author_handle" : "J_David_Lowe" }
],
"manifest" : [
{
"file_path" : "index.html",
"inventory_order" : 10,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : "dlowe.c",
"inventory_order" : 20,
@@ -49,6 +41,14 @@
"display_via_github" : false,
"entry_text" : "download entry source"
},
{
"file_path" : "index.html",
"inventory_order" : 2000000000,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : ".entry.json",
"inventory_order" : 4294967295,
+2 -1
View File
@@ -217,9 +217,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
<h1 id="inventory-for-2012dlowe"><a name="inventory"></a>Inventory for
2012/dlowe</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/dlowe/dlowe.c">dlowe.c</a>
- entry source</li>
@@ -234,6 +234,7 @@ source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/dlowe/.entry.json">.entry.json</a>
- description of entry in JSON</li>
+8 -8
View File
@@ -9,14 +9,6 @@
{ "author_handle" : "Yusuke_Endoh" }
],
"manifest" : [
{
"file_path" : "index.html",
"inventory_order" : 10,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : "endoh1.c",
"inventory_order" : 20,
@@ -249,6 +241,14 @@
"display_via_github" : false,
"entry_text" : "download entry source"
},
{
"file_path" : "index.html",
"inventory_order" : 2000000000,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : ".entry.json",
"inventory_order" : 4294967295,
+2 -1
View File
@@ -360,9 +360,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
<h1 id="inventory-for-2012endoh1"><a name="inventory"></a>Inventory for
2012/endoh1</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/endoh1.c">endoh1.c</a>
- entry source</li>
@@ -452,6 +452,7 @@ entry source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/.entry.json">.entry.json</a>
- description of entry in JSON</li>
+8 -8
View File
@@ -9,14 +9,6 @@
{ "author_handle" : "Yusuke_Endoh" }
],
"manifest" : [
{
"file_path" : "index.html",
"inventory_order" : 10,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : "endoh2.c",
"inventory_order" : 20,
@@ -65,6 +57,14 @@
"display_via_github" : false,
"entry_text" : "download entry source"
},
{
"file_path" : "index.html",
"inventory_order" : 2000000000,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : ".entry.json",
"inventory_order" : 4294967295,
+2 -1
View File
@@ -255,9 +255,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
<h1 id="inventory-for-2012endoh2"><a name="inventory"></a>Inventory for
2012/endoh2</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh2/endoh2.c">endoh2.c</a>
- entry source</li>
@@ -278,6 +278,7 @@ entry source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh2/.entry.json">.entry.json</a>
- description of entry in JSON</li>
+8 -8
View File
@@ -10,14 +10,6 @@
{ "author_handle" : "David_Madore" }
],
"manifest" : [
{
"file_path" : "index.html",
"inventory_order" : 10,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : "grothe.c",
"inventory_order" : 20,
@@ -66,6 +58,14 @@
"display_via_github" : false,
"entry_text" : "download entry source"
},
{
"file_path" : "index.html",
"inventory_order" : 2000000000,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : ".entry.json",
"inventory_order" : 4294967295,
+2 -1
View File
@@ -246,9 +246,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
<h1 id="inventory-for-2012grothe"><a name="inventory"></a>Inventory for
2012/grothe</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/grothe/grothe.c">grothe.c</a>
- entry source</li>
@@ -269,6 +269,7 @@ entry source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/grothe/.entry.json">.entry.json</a>
- description of entry in JSON</li>
+8 -8
View File
@@ -9,14 +9,6 @@
{ "author_handle" : "Tsukasa_Hamano" }
],
"manifest" : [
{
"file_path" : "index.html",
"inventory_order" : 10,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : "hamano.c",
"inventory_order" : 20,
@@ -57,6 +49,14 @@
"display_via_github" : false,
"entry_text" : "download entry source"
},
{
"file_path" : "index.html",
"inventory_order" : 2000000000,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : ".entry.json",
"inventory_order" : 4294967295,
+2 -1
View File
@@ -212,9 +212,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
<h1 id="inventory-for-2012hamano"><a name="inventory"></a>Inventory for
2012/hamano</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/hamano/hamano.c">hamano.c</a>
- entry source</li>
@@ -232,6 +232,7 @@ entry source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/hamano/.entry.json">.entry.json</a>
- description of entry in JSON</li>
+9 -9
View File
@@ -9,14 +9,6 @@
{ "author_handle" : "Qiming_HOU" }
],
"manifest" : [
{
"file_path" : "index.html",
"inventory_order" : 10,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : "hou.c",
"inventory_order" : 20,
@@ -121,6 +113,14 @@
"display_via_github" : false,
"entry_text" : "download entry source"
},
{
"file_path" : "index.html",
"inventory_order" : 2000000000,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : ".entry.json",
"inventory_order" : 4294967295,
@@ -159,7 +159,7 @@
"OK_to_edit" : true,
"display_as" : "markdown",
"display_via_github" : true,
"entry_text" : "hint document"
"entry_text" : "markdown source for hint.html"
}
]
}
+253
View File
@@ -0,0 +1,253 @@
<!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 !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: bin/gen-other-html.sh -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>The International Obfuscated C Code Contest</title>
<meta name="description" content="hint.md for 2012/hou">
<meta name="keywords" content="IOCCC, 2012/hou, hint.md">
</head>
<!-- END: this line ends content from: inc/head.default.html -->
<!-- START: this line starts content from: inc/body.default.html -->
<body>
<!-- END: this line ends content from: inc/body.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
<div class="header">
<img src="../../png/ioccc.png" alt="IOCCC image by Matt Zucker" width=300 height=110>
<h1>The International Obfuscated C Code Contest</h1>
<h2>hint.md for 2012/hou</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.up2index.html -->
<div class="topnav">
<a class="Left" href="index.html">&uarr; jump to index.html &uarr;</a>
</div>
<!-- END: this line ends content from: inc/topnav.up2index.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="../../index.html">IOCCC Home</a>
<a href="../../years.html">Winning Entries</a>
<a href="../../authors.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../../news.html">IOCCC News</a>
<a href="../../faq.html#submit">How to enter the IOCCC</a>
<a href="../../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../../bugs.html">Bugs &amp; (mis)features</a>
<a href="../../faq.html#fix_an_entry">Fixing IOCCC entries</a>
<a href="../../faq.html#fix_web_site">Fixing the web site</a>
<a href="../../faq.html#fix_author">Fixing author info</a>
<a href="../../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../../judges.html">The IOCCC Judges</a>
<a href="../../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 for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="most-useful-obfuscation">Most useful obfuscation</h1>
<p>Qiming Hou<br />
<a href="mailto:hqm03ster@gmail.com"
class="email">hqm03ster@gmail.com</a><br />
<a href="http://www.houqiming.net"
class="uri">http://www.houqiming.net</a></p>
<h2 id="judges-comments">Judges’ comments:</h2>
<h3 id="to-build">To build:</h3>
<pre><code>make hou</code></pre>
<h3 id="to-run">To run:</h3>
<pre><code>./hou syntax-file file-to-process</code></pre>
<h3 id="try-unix">Try (Unix):</h3>
<p>The results are best viewed in a 80x25 console with ANSI colors.</p>
<pre><code>less hou.c
./hou ansi.txt hou.c | less -r
./hou chk.txt hou.c | wc
./hou markdown.txt remarks.markdown &gt; remarks.htm
your-browser remarks.htm</code></pre>
<h3 id="try-windows">Try (Windows):</h3>
<pre><code>copy header.htm hou.htm /y
hou html.txt hou.c &gt;&gt; hou.htm
start hou.htm</code></pre>
<h3 id="selected-judges-remarks">Selected Judges Remarks:</h3>
<p>What a versatile entry! It can be used to check the size of IOCCC
entries <em>and</em> to publish them as HTML.</p>
<p>For extra credit: what is the meaning of the number 2321237?</p>
<h2 id="authors-comments">Author’s comments:</h2>
<h3 id="disclaimer">Disclaimer</h3>
<p>The reviewer may have already noticed that the 2nd page of this
program is a dense blob, which is discouraged by the contest rules. We
wish to point out that a majority of state-of-art programming editors
support syntax highlighting, which should be enabled when reading this
entry. Anticipating that the reviewer’s preferred color setting may
produce a suboptimal visual effect, a few syntax files are provided to
highlight the source code under an author-provided setting, using the
submitted program itself. Syntax highlighting would also visually
improve the 3rd page.</p>
<p>The code may throw a few warnings due to formatting constraints. The
author did try to remove warnings under gcc and Visual Studio,
though.</p>
<p>The author does not own the original anime series where the embedded
ASCII arts come from. For comparison, original non-ASCII art depictions
of the relevant characters and objects can be found by googling the
embedded text messages.</p>
<h3 id="syntax-files">Syntax files</h3>
<p>The syntax file consists of a number of rewriting rules. Each rule
consists of a regular expression, a space, a format string, and a
newline. All text matching the regular expression would be replaced by
the format string. In case of a conflict, rules appearing earlier would
take precedence. One can refer to the original text in the format string
using “%s”. Other “%” characters in the format string must be escaped
with another “%”. The space character can be used in the regular
expression by escaping it with [] or ““.</p>
<p>The following regular expression operators are supported:</p>
<pre><code>() [] * + ? | &quot;&quot;</code></pre>
<p>For example, one can use the following expression to match a certain
declaration statement in hou.c:</p>
<pre><code>&quot;char&quot;[ *]*[a-zA-Z_][0-9a-zA-Z_]*[ ]*((=[0-9a-zA-Z_ ]+)|(\[[0-9a-zA-Z_ ]*\]))?[ ]*(,[ *]*[a-zA-Z_][0-9a-zA-Z_]*[ ]*((=[0-9a-zA-Z_ ]+)|(\[[0-9a-zA-Z_ ]*\]))?[ ]*)*;</code></pre>
<p>The regex engine is also algorithmically efficient. To illustrate the
point, ansi.txt contains a pathological expression [2] that guarantees a
hang for the competing Perl engine while matching itself. Try to compare
these two engines:</p>
<pre><code>./hou ansi.txt ansi.txt
perl patho.pl &lt; ansi.txt</code></pre>
<p>Finally, there are a few limitations…</p>
<ul>
<li>The only escape sequence supported is and it doesn’t work in
[].</li>
<li>The maximum file/rule size is a linear function of the hard-coded
constant M.</li>
<li>Single-character matches at the end of file may be missed.</li>
<li>The operator | doesn’t obey precedence rules and some extra ()s may
be required.</li>
<li>Incorrect syntax files are not tolerated.</li>
<li>The program relies on ASCII.</li>
</ul>
<h3 id="why-obfuscated">Why obfuscated</h3>
<p>The first layer of obfuscation comes from the challenge of embedding
a large ASCII art in a dense blob. The entire art is composed using only
keywords, strings and character constants. That results in a number of
otherwise useless defines and quite a number of unconventionally written
constants. While the preprocessor may remove the former, the later would
remain regardless of beautification and preprocessing.</p>
<p>The second layer of obfuscation comes from the need to squeeze a
reasonably powerful regex engine into the remaining area that isn’t
occupied by excessive keywords and useless constants. To achieve this,
the regex compiler is written using the same threaded virtual machine
[1] that parses the regex. Due to compiler limitations, the generated VM
code also ends up obscured by a large amount of spaghetti branches and
virtual thread creations. Finally, the VM in [1] is extended to track
multiple expression matches for the actual formatting.</p>
<p>As an extra tweak, the text message actually does something useful.
Remove the “Make a contract with me” catch line and the program would
cease to function.</p>
<h3 id="references">References</h3>
<p>[1] <a href="http://swtch.com/~rsc/regexp/regexp2.html">Russ Cox,
Regular Expression Matching: the Virtual Machine Approach</a></p>
<p>[2] <a href="http://swtch.com/~rsc/regexp/regexp1.html">Regular
Expression Matching Can Be Simple And Fast (but is slow in Java, Perl,
PHP, Python, Ruby, …)</a></p>
<hr />
<!--
(c) Copyright 1984-2015, [Leo Broukhis, Simon Cooper, Landon Curt Noll][judges] - All rights reserved
This work is licensed under a [Creative Commons Attribution-ShareAlike 3.0 Unported License][cc].
[judges]: http://www.ioccc.org/judges.html
[cc]: http://creativecommons.org/licenses/by-sa/3.0/
-->
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.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=#">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 -->
+5 -4
View File
@@ -227,7 +227,7 @@ 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>
<aside id="footnotes" class="footnotes footnotes-end-of-document"
<section id="footnotes" class="footnotes footnotes-end-of-document"
role="doc-endnotes">
<hr />
<ol>
@@ -243,7 +243,7 @@ href="#fnref2" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
Cox, Regular Expression Matching: the Virtual Machine Approach</a><a
href="#fnref3" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
</ol>
</aside>
</section>
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- START: this line starts content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
@@ -252,9 +252,9 @@ href="#fnref3" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
<h1 id="inventory-for-2012hou"><a name="inventory"></a>Inventory for
2012/hou</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/hou/hou.c">hou.c</a>
- entry source</li>
@@ -292,6 +292,7 @@ source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/hou/.entry.json">.entry.json</a>
- description of entry in JSON</li>
@@ -304,7 +305,7 @@ href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/hou/README.m
- markdown source for index.html</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/hou/hint.md">hint.md</a>
- hint document</li>
- markdown source for hint.html</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
+18 -21
View File
@@ -219,32 +219,29 @@ Entries of 2012 - The 21st IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="2012/ioccc.2012.tar.bz2">2012 entry source</a></p>
<ul>
<li><a href="2012/blakely/index.html">2012/blakely</a> - Most GIFted
<li><a href="blakely/index.html">2012/blakely</a> - Most GIFted
expressions</li>
<li><a href="2012/deckmyn/index.html">2012/deckmyn</a> - Most notable
and best tool</li>
<li><a href="2012/dlowe/index.html">2012/dlowe</a> - Best way to lose a
<li><a href="deckmyn/index.html">2012/deckmyn</a> - Most notable and
best tool</li>
<li><a href="dlowe/index.html">2012/dlowe</a> - Best way to lose a
life</li>
<li><a href="2012/endoh1/index.html">2012/endoh1</a> - Most complex
ASCII fluid - Honorable mention</li>
<li><a href="2012/endoh2/index.html">2012/endoh2</a> - PiE in the sky
<li><a href="endoh1/index.html">2012/endoh1</a> - Most complex ASCII
fluid - Honorable mention</li>
<li><a href="endoh2/index.html">2012/endoh2</a> - PiE in the sky
award</li>
<li><a href="2012/grothe/index.html">2012/grothe</a> - Most
<li><a href="grothe/index.html">2012/grothe</a> - Most
conspiratorial</li>
<li><a href="2012/hamano/index.html">2012/hamano</a> - Most elementary
use of C - Silver award</li>
<li><a href="2012/hou/index.html">2012/hou</a> - Most useful
obfuscation</li>
<li><a href="2012/kang/index.html">2012/kang</a> - Best short
program</li>
<li><a href="2012/konno/index.html">2012/konno</a> - Best one liner</li>
<li><a href="2012/omoikane/index.html">2012/omoikane</a> - Most
<li><a href="hamano/index.html">2012/hamano</a> - Most elementary use of
C - Silver award</li>
<li><a href="hou/index.html">2012/hou</a> - Most useful obfuscation</li>
<li><a href="kang/index.html">2012/kang</a> - Best short program</li>
<li><a href="konno/index.html">2012/konno</a> - Best one liner</li>
<li><a href="omoikane/index.html">2012/omoikane</a> - Most
surreptitious</li>
<li><a href="2012/tromp/index.html">2012/tromp</a> - Most
functional</li>
<li><a href="2012/vik/index.html">2012/vik</a> - Best use of cocoa -
Bronze award</li>
<li><a href="2012/zeitak/index.html">2012/zeitak</a> - Balanced use of
<li><a href="tromp/index.html">2012/tromp</a> - Most functional</li>
<li><a href="vik/index.html">2012/vik</a> - Best use of cocoa - Bronze
award</li>
<li><a href="zeitak/index.html">2012/zeitak</a> - Balanced use of
obfuscation - Gold award</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
+8 -8
View File
@@ -9,14 +9,6 @@
{ "author_handle" : "Seonghoon_Kang" }
],
"manifest" : [
{
"file_path" : "index.html",
"inventory_order" : 10,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : "kang.c",
"inventory_order" : 20,
@@ -105,6 +97,14 @@
"display_via_github" : false,
"entry_text" : "download entry source"
},
{
"file_path" : "index.html",
"inventory_order" : 2000000000,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : ".entry.json",
"inventory_order" : 4294967295,
+2 -1
View File
@@ -324,9 +324,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
<h1 id="inventory-for-2012kang"><a name="inventory"></a>Inventory for
2012/kang</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/kang/kang.c">kang.c</a>
- entry source</li>
@@ -362,6 +362,7 @@ source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/kang/.entry.json">.entry.json</a>
- description of entry in JSON</li>
+8 -8
View File
@@ -9,14 +9,6 @@
{ "author_handle" : "Taketo_Konno" }
],
"manifest" : [
{
"file_path" : "index.html",
"inventory_order" : 10,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : "konno.c",
"inventory_order" : 20,
@@ -65,6 +57,14 @@
"display_via_github" : false,
"entry_text" : "download entry source"
},
{
"file_path" : "index.html",
"inventory_order" : 2000000000,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : ".entry.json",
"inventory_order" : 4294967295,
+2 -1
View File
@@ -186,9 +186,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
<h1 id="inventory-for-2012konno"><a name="inventory"></a>Inventory for
2012/konno</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/konno/konno.c">konno.c</a>
- entry source</li>
@@ -209,6 +209,7 @@ source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/konno/.entry.json">.entry.json</a>
- description of entry in JSON</li>
+8 -8
View File
@@ -9,14 +9,6 @@
{ "author_handle" : "Don_Yang" }
],
"manifest" : [
{
"file_path" : "index.html",
"inventory_order" : 10,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : "Makefile",
"inventory_order" : 30,
@@ -89,6 +81,14 @@
"display_via_github" : false,
"entry_text" : "download entry source"
},
{
"file_path" : "index.html",
"inventory_order" : 2000000000,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : ".entry.json",
"inventory_order" : 4294967295,
+2 -1
View File
@@ -282,9 +282,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
<h1 id="inventory-for-2012omoikane"><a name="inventory"></a>Inventory
for 2012/omoikane</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/Makefile">Makefile</a>
- entry Makefile</li>
@@ -312,6 +312,7 @@ entry source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/.entry.json">.entry.json</a>
- description of entry in JSON</li>
+8 -8
View File
@@ -9,14 +9,6 @@
{ "author_handle" : "John_Tromp" }
],
"manifest" : [
{
"file_path" : "index.html",
"inventory_order" : 10,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : "tromp.c",
"inventory_order" : 20,
@@ -81,6 +73,14 @@
"display_via_github" : false,
"entry_text" : "download entry source"
},
{
"file_path" : "index.html",
"inventory_order" : 2000000000,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : ".entry.json",
"inventory_order" : 4294967295,
+196
View File
@@ -0,0 +1,196 @@
<!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 !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: bin/gen-other-html.sh -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>The International Obfuscated C Code Contest</title>
<meta name="description" content="how.md for 2012/tromp">
<meta name="keywords" content="IOCCC, 2012/tromp, how.md">
</head>
<!-- END: this line ends content from: inc/head.default.html -->
<!-- START: this line starts content from: inc/body.default.html -->
<body>
<!-- END: this line ends content from: inc/body.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
<div class="header">
<img src="../../png/ioccc.png" alt="IOCCC image by Matt Zucker" width=300 height=110>
<h1>The International Obfuscated C Code Contest</h1>
<h2>how.md for 2012/tromp</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.up2index.html -->
<div class="topnav">
<a class="Left" href="index.html">&uarr; jump to index.html &uarr;</a>
</div>
<!-- END: this line ends content from: inc/topnav.up2index.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="../../index.html">IOCCC Home</a>
<a href="../../years.html">Winning Entries</a>
<a href="../../authors.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../../news.html">IOCCC News</a>
<a href="../../faq.html#submit">How to enter the IOCCC</a>
<a href="../../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../../bugs.html">Bugs &amp; (mis)features</a>
<a href="../../faq.html#fix_an_entry">Fixing IOCCC entries</a>
<a href="../../faq.html#fix_web_site">Fixing the web site</a>
<a href="../../faq.html#fix_author">Fixing author info</a>
<a href="../../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../../judges.html">The IOCCC Judges</a>
<a href="../../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 for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="spoiler">Spoiler</h1>
<p>The program implements a so called <a
href="https://en.wikipedia.org/wiki/Krivine_machine">Krivine
machine</a>, enhanced with a <a
href="https://en.wikipedia.org/wiki/BIOS">basic input/output system</a>
and a reference counting <a
href="https://en.wikipedia.org/wiki/Waste_collector">garbage
collector</a>. The Krivine machine is a stepwise transformer of a global
state consisting of the current term, the current environment (a list of
closures), and a stack of continuations (see the 3rd reference for
details).</p>
<p>The term space holds <a
href="https://en.wikipedia.org/wiki/Lambda_calculus">lambda calculus</a>
terms in the following format. 0 denotes some form of I/O; the only four
occurrences are at:</p>
<pre><code> C=13: recognizes end of a byte
C=20: recognize output of 0 bit
C=21: recognize output of 1 bit
C=end: input list, expanded lazily</code></pre>
<p><code>1</code> denotes a variable, with the next entry its <a
href="https://en.wikipedia.org/wiki/De_Bruijn_index">de Bruijn
index</a>.</p>
<p><code>2</code> denotes application with the next entry the size of
the term being applied.</p>
<p><code>3</code> denotes lambda abstraction.</p>
<p>A closure consists of the following items:</p>
<ol start="0" type="1">
<li>pointer to the next closure (as part of an environment), or next
record on free list.</li>
<li>reference count.</li>
<li>pointer to environment.</li>
<li>lambda term (index in term space).</li>
</ol>
<p>Here’s what each variable does:</p>
<pre><code>L Lambda term space
m mode: 0 for bits and 7 for bytes
b bits remaining unread in I, -1 on EOF
D Desirable temporary
c continuation context
a active environment pointer
C Current term index
U Ultimate term pointer
u utility entry
B Born to be free-list of closures
I Input character
O Output character
e entry of current term</code></pre>
<p>Here’s what each of the 6 auxiliary functions do:</p>
<pre><code>s variable lookup in active environment with de Bruijn index u
S gets one bit of input, setting b to -1 on EOF or to remaining number of bits in current byte
k copy fragment from string literal holding lambda terms xor 46 into current end of term space
x expand input, adding 11 (resp. 99) entries to term space for bit (resp. byte) mode
p parses BLC-encoded lambda term using S(), stores results in term space and returns length
d decrease reference counter, add record to free list on reaching zero</code></pre>
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.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=#">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 -->
+2 -1
View File
@@ -554,9 +554,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
<h1 id="inventory-for-2012tromp"><a name="inventory"></a>Inventory for
2012/tromp</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/tromp/tromp.c">tromp.c</a>
- entry source</li>
@@ -581,6 +581,7 @@ source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/tromp/.entry.json">.entry.json</a>
- description of entry in JSON</li>
+8 -8
View File
@@ -9,14 +9,6 @@
{ "author_handle" : "Daniel_Vik" }
],
"manifest" : [
{
"file_path" : "index.html",
"inventory_order" : 10,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : "vik.c",
"inventory_order" : 20,
@@ -81,6 +73,14 @@
"display_via_github" : false,
"entry_text" : "download entry source"
},
{
"file_path" : "index.html",
"inventory_order" : 2000000000,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : ".entry.json",
"inventory_order" : 4294967295,
+2 -1
View File
@@ -261,9 +261,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
<h1 id="inventory-for-2012vik"><a name="inventory"></a>Inventory for
2012/vik</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/vik/vik.c">vik.c</a>
- entry source</li>
@@ -286,6 +286,7 @@ source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/vik/.entry.json">.entry.json</a>
- description of entry in JSON</li>
+8 -8
View File
@@ -9,14 +9,6 @@
{ "author_handle" : "Adar_Zeitak" }
],
"manifest" : [
{
"file_path" : "index.html",
"inventory_order" : 10,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : "zeitak.c",
"inventory_order" : 20,
@@ -161,6 +153,14 @@
"display_via_github" : false,
"entry_text" : "download entry source"
},
{
"file_path" : "index.html",
"inventory_order" : 2000000000,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : ".entry.json",
"inventory_order" : 4294967295,
+2 -1
View File
@@ -249,9 +249,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
<h1 id="inventory-for-2012zeitak"><a name="inventory"></a>Inventory for
2012/zeitak</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/zeitak/zeitak.c">zeitak.c</a>
- entry source</li>
@@ -308,6 +308,7 @@ entry source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/zeitak/.entry.json">.entry.json</a>
- description of entry in JSON</li>