force use of pandoc version >= 3.1.12.2

The `bin/pandoc-wrapper.sh` tool will verify that the ssytem
has a recent enough version of `pandoc(1)`.

We explain why we insist on `pandoc(1)`. version >= 3.1.12.2
in comments where the $PANDOC_MIN_VERSION is set.

Added `--wrap=preserve` as a default argument to `pandoc(1)`.
While this change will impact every HTML file generated,
we believe this will improve the ability of someone to look
at the generated HTML and correlate with the original markdown.

Changed `bin/pandoc-wrapper.sh` VERSION from "1.4.2 2024-03-17"
to "1.4.3 2024-03-18".

Performed `make www` to achieve all of the above and to generate
HTML using the new  `--wrap=preserve` `pandoc(1)` mode.
This commit is contained in:
Landon Curt Noll committed 2024-03-18 01:26:39 -07:00
1 parent 9eb7a54e9f
commit b0b212acb1
402 files changed
+37061 -55132

No files matched your search

+18 -36
View File
@@ -130,8 +130,8 @@
<h2 id="author"><a name="author"></a>Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Don_Dodson">Don Dodson</a><br>
Location: <a href="../../location.html#US">US</a> - <em>United States of
America</em> (<em>United States</em>) <br><br></li>
Location: <a href="../../location.html#US">US</a> - <em>United States of America</em> (<em>United States</em>)
<br><br></li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
@@ -146,60 +146,42 @@ America</em> (<em>United States</em>) <br><br></li>
<h2 id="try">Try:</h2>
<p>At the prompt, try entering <code>E3</code>.</p>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>The program plays the game that the layout of the source implies. The
source, on the other hand, implies a language along the lines of Lisp.
:-)</p>
<p>The program plays the game that the layout of the source implies.
The source, on the other hand, implies a language along the
lines of Lisp. :-)</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>For each turn, the board is displayed and the player is prompted for
a move. Enter your move as an upper-case character followed by a
number.</p>
a move. Enter your move as an upper-case character followed by a number.</p>
<p>The program uses a single function for 4 different purposes – to
determine if a valid move exists, to verify that a move is valid, to
make a move, and to determine the value of a move.</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>
<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>
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
<!-- 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 -->
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
<h1 id="inventory-for-1994dodsond1"><a name="inventory"></a>Inventory
for 1994/dodsond1</h1>
<h1 id="inventory-for-1994dodsond1"><a name="inventory"></a>Inventory for 1994/dodsond1</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond1/dodsond1.c">dodsond1.c</a>
- entry source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond1/Makefile">Makefile</a>
- entry Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond1/dodsond1.orig.c">dodsond1.orig.c</a>
- original source</li>
<li><a href="1994_dodsond1.tar.bz2">1994_dodsond1.tar.bz2</a> - download
entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond1/dodsond1.c">dodsond1.c</a> - entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond1/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond1/dodsond1.orig.c">dodsond1.orig.c</a> - original source</li>
<li><a href="1994_dodsond1.tar.bz2">1994_dodsond1.tar.bz2</a> - download 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/1994/dodsond1/.entry.json">.entry.json</a>
- description of entry in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond1/.gitignore">.gitignore</a>
- list of files that should not be committed under git</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond1/.entry.json">.entry.json</a> - description of entry in JSON</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond1/.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/1994/dodsond1/README.md">README.md</a>
- markdown source for index.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond1/README.md">README.md</a> - markdown source for index.html</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
+58 -80
View File
@@ -130,8 +130,8 @@
<h2 id="author"><a name="author"></a>Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Don_Dodson">Don Dodson</a><br>
Location: <a href="../../location.html#US">US</a> - <em>United States of
America</em> (<em>United States</em>) <br><br></li>
Location: <a href="../../location.html#US">US</a> - <em>United States of America</em> (<em>United States</em>)
<br><br></li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
@@ -141,122 +141,100 @@ America</em> (<em>United States</em>) <br><br></li>
<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>
<p>There is an alternate version that allows you to cheat, giving you
configurable amount of arrows at the start of the game. See the <a
href="#alternate-code">Alternate code</a> section below.</p>
<p>There is an alternate version that allows you to cheat, giving you configurable
amount of arrows at the start of the game. See the <a href="#alternate-code">Alternate
code</a> section 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.html#1994_dodsond2">1994 dodsond2 bugs</a>.</p>
<p>For more detailed information see <a href="../../bugs.html#1994_dodsond2">1994 dodsond2 bugs</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">./dodsond2</span></span></code></pre></div>
<h2 id="alternate-code">Alternate code:</h2>
<p>This version allows you to choose how many arrows to start with,
instead of the default 0. If one tries specifying a value &lt; 0 it will
set it to 0.</p>
<p>Fun fact: this version helped uncover and fix a bug that prevented
the entry from working in some cases.</p>
<p>This version allows you to choose how many arrows to start with, instead of the
default 0. If one tries specifying a value &lt; 0 it will set it to 0.</p>
<p>Fun fact: this version helped uncover and fix a bug that prevented the entry
from working in some cases.</p>
<h3 id="alternate-build">Alternate build:</h3>
<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="fu">make</span> alt</span></code></pre></div>
<p>The default number of arrows in this version is 3 but if you want to
change it, say to 5, try:</p>
<p>The default number of arrows in this version is 3 but if you want to change it,
say to 5, try:</p>
<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> clobber ARROWS=5 alt</span></code></pre></div>
<h3 id="alternate-use">Alternate use:</h3>
<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="ex">./dodsond2.alt</span></span></code></pre></div>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>Each year people find new ways to squeeze more and more out of the
contest rules. Next year, entries that use compression utilities to get
around the size limit will find themselves squeezed out of the
contest!</p>
contest rules. Next year, entries that use compression utilities
to get around the size limit will find themselves squeezed out of
the contest!</p>
<h3 id="a-historical-note">A historical note:</h3>
<p>The original source code was submitted as a GZIP compressed file that
the <em>file(1)</em> command reports as:</p>
<p>The original source code was submitted as a GZIP compressed file
that the <em>file(1)</em> command reports as:</p>
<pre><code>dodsond2.gz: gzip compressed data, last modified: Mon Aug 29 21:54:39 1994, max compression, from Unix, original size modulo 2^32 2652</code></pre>
<p>The <a href="dodsond2.gz">dodsond2.gz</a> file was submitted as
source in an effort to get around the 1994 version of Rule 2:</p>
<p>The <a href="dodsond2.gz">dodsond2.gz</a> file was submitted as source
in an effort to get around the 1994 version of Rule 2:</p>
<pre><code>2) Your entry must be &lt;= 3217 bytes in length. The number of characters
excluding whitespace (tab, space, newline), and excluding any ; { or }
followed by either whitespace or end of file, must be &lt;= 1536.</code></pre>
<p>Indeed, when <a href="dodsond2.gz">dodsond2.gz</a> is uncompressed,
it is identical to the <a href="dodsond2.c">dodsond2.c</a> file you find
today.</p>
<p>Indeed, when <a href="dodsond2.gz">dodsond2.gz</a> is uncompressed, it is identical
to the <a href="dodsond2.c">dodsond2.c</a> file you find today.</p>
<p>The IOCCC rules and guidelines were modified in an effort to address
this fun “<em>abuse of the rules</em>” style hack.</p>
<p>It is worth noting that without this compression “<em>abuse of the
rules</em>” style hack, the <a href="dodsond2.c">dodsond2.c</a> is
further obfuscated.</p>
<p>It is worth noting that without this compression “<em>abuse of the rules</em>”
style hack, the <a href="dodsond2.c">dodsond2.c</a> is further obfuscated.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>Go searching for the Wumpus in the Caverns of Doom! But be careful…
There are pits and bats waiting to seal your fate, as well as a stealthy
robber lurking in the shadows. Move through the rooms by typing the
number of the adjacent room you wish to visit. You can feel a breeze if
there is a pit in an adjacent room. A rustling sound will tell you that
bats are nearby. The scent of the evil Wumpus can be detected from 2
rooms away.</p>
There are pits and bats waiting to seal your fate, as well as a
stealthy robber lurking in the shadows. Move through the rooms by
typing the number of the adjacent room you wish to visit. You can
feel a breeze if there is a pit in an adjacent room. A rustling sound
will tell you that bats are nearby. The scent of the evil Wumpus can
be detected from 2 rooms away.</p>
<p>To win, you must find one or more arrows, determine where the Wumpus
is, and shoot him, all without falling into a pit or becoming the next
meal for the Wumpus. To shoot an arrow, type <code>s</code>. Then give a
list of the rooms you want to shoot into. The rooms must be connected in
the order you list them, or else the arrow may bounce back and hit you.
An arrow can go through as many as four rooms. But beware that shooting
an arrow and missing the Wumpus may awaken him.</p>
<p>There is a robber who waits in an unknown room. If you enter that
room carrying an arrow, he will steal that arrow from you and move to a
new room. If he steals all the arrows in the Caverns, you may catch him
and recover all of them. Doing this gives you a bonus on your score.</p>
<p>You can quit at any time by typing <code>q</code>. Typing
<code>i</code> will tell you how many arrows you are carrying.
<code>l</code> prints the description of the current room again.</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>
is, and shoot him, all without falling into a pit or becoming the
next meal for the Wumpus. To shoot an arrow, type <code>s</code>. Then give a
list of the rooms you want to shoot into. The rooms must be
connected in the order you list them, or else the arrow may bounce
back and hit you. An arrow can go through as many as four rooms.
But beware that shooting an arrow and missing the Wumpus may
awaken him.</p>
<p>There is a robber who waits in an unknown room. If you enter
that room carrying an arrow, he will steal that arrow from you
and move to a new room. If he steals all the arrows in the
Caverns, you may catch him and recover all of them. Doing this
gives you a bonus on your score.</p>
<p>You can quit at any time by typing <code>q</code>. Typing <code>i</code> will tell
you how many arrows you are carrying. <code>l</code> prints the description
of the current room again.</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>
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
<!-- 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 -->
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
<h1 id="inventory-for-1994dodsond2"><a name="inventory"></a>Inventory
for 1994/dodsond2</h1>
<h1 id="inventory-for-1994dodsond2"><a name="inventory"></a>Inventory for 1994/dodsond2</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond2/dodsond2.c">dodsond2.c</a>
- entry source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond2/Makefile">Makefile</a>
- entry Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond2/dodsond2.alt.c">dodsond2.alt.c</a>
- alternative source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond2/dodsond2.orig.c">dodsond2.orig.c</a>
- original source</li>
<li><a href="dodsond2.gz">dodsond2.gz</a> - original source in gzip
form</li>
<li><a href="1994_dodsond2.tar.bz2">1994_dodsond2.tar.bz2</a> - download
entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond2/dodsond2.c">dodsond2.c</a> - entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond2/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond2/dodsond2.alt.c">dodsond2.alt.c</a> - alternative source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond2/dodsond2.orig.c">dodsond2.orig.c</a> - original source</li>
<li><a href="dodsond2.gz">dodsond2.gz</a> - original source in gzip form</li>
<li><a href="1994_dodsond2.tar.bz2">1994_dodsond2.tar.bz2</a> - download 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/1994/dodsond2/.entry.json">.entry.json</a>
- description of entry in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond2/.gitignore">.gitignore</a>
- list of files that should not be committed under git</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond2/.entry.json">.entry.json</a> - description of entry in JSON</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond2/.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/1994/dodsond2/README.md">README.md</a>
- markdown source for index.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/dodsond2/README.md">README.md</a> - markdown source for index.html</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
+39 -73
View File
@@ -129,9 +129,9 @@
<h2 id="author"><a name="author"></a>Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Mary_Ann_Horton">Mary Ann
Horton</a><br> Location: <a href="../../location.html#US">US</a> -
<em>United States of America</em> (<em>United States</em>) <br><br></li>
<li>Name: <a href="../../authors.html#Mary_Ann_Horton">Mary Ann Horton</a><br>
Location: <a href="../../location.html#US">US</a> - <em>United States of America</em> (<em>United States</em>)
<br><br></li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
@@ -143,13 +143,12 @@ Horton</a><br> Location: <a href="../../location.html#US">US</a> -
<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">./horton</span> A B C D</span></code></pre></div>
<p><code>A</code>, <code>B</code>, <code>C</code> and <code>D</code> are
numeric arguments.</p>
<p><code>A</code>, <code>B</code>, <code>C</code> and <code>D</code> are numeric arguments.</p>
<h2 id="try">Try:</h2>
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./try.sh</span></span></code></pre></div>
<h2 id="alternate-code">Alternate code:</h2>
<p>This confuses cb greatly. See <a href="horton.alt.c">horton.alt.c</a>
for an unobfuscated/enhanced version.</p>
<p>This confuses cb greatly. See <a href="horton.alt.c">horton.alt.c</a> for an unobfuscated/enhanced
version.</p>
<h3 id="alternate-build">Alternate build:</h3>
<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="fu">make</span> alt</span></code></pre></div>
<h3 id="alternate-use">Alternate use:</h3>
@@ -159,32 +158,27 @@ for an unobfuscated/enhanced version.</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="ex">./try.alt.sh</span></span></code></pre></div>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>Try to figure out how this program prints, for a given slope, the
right character. And for extra credit, try to figure out which character
is at the bottom of this hint file. :-)</p>
<p>You might be interested in the author’s article that they cite
towards the end of their remarks, included as PDF files for your
convenience, the full newsletter and a PDF file of just the pages
cited.</p>
right character. And for extra credit, try to figure out which
character is at the bottom of this hint file. :-)</p>
<p>You might be interested in the author’s article that they cite towards the end
of their remarks, included as PDF files for your convenience, the full
newsletter and a PDF file of just the pages cited.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>Run it with any 4 numeric arguments,
e.g. <code>./horton 3 2 1 0</code>. Play with the numbers to get a
pleasing result, or use it for your high school algebra class.</p>
<p>Run it with any 4 numeric arguments, e.g. <code>./horton 3 2 1 0</code>. Play with the
numbers to get a pleasing result, or use it for your high school algebra
class.</p>
<h3 id="spoiler">SPOILER:</h3>
<p>As should be obvious from 20 feet away, the program is a cubic
plotter. It plots against certain artists, splattering their cubes with
graphs of their cubic equations. Those dastardly arguments are mere
coefficients, cogs in the wheels of the grand plot to overthrow the
cubics!</p>
<p>As should be obvious from 20 feet away, the program is a cubic plotter.
It plots against certain artists, splattering their cubes with graphs
of their cubic equations. Those dastardly arguments are mere coefficients,
cogs in the wheels of the grand plot to overthrow the cubics!</p>
<p>Oh, by the way, it uses a self-contained graphtab and frame buffer.
It’s easily modified to graph <em>any</em> 96x160 bitmap on a dumb
terminal.</p>
<p>See the <a href="gtface.c">gtface</a> program for another example.
Try:</p>
It’s easily modified to graph <em>any</em> 96x160 bitmap on a dumb terminal.</p>
<p>See the <a href="gtface.c">gtface</a> program for another example. Try:</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> gtface</span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a><span class="ex">./gtface</span> <span class="op">&lt;</span> gtface.data</span></code></pre></div>
<p>For more information, see my article</p>
<p><a href="login_sept92-pp28-31.pdf">Using GraphTab; USENIX ;login:
Sept/Oct 1992, pages 28-31</a>.</p>
<p><a href="login_sept92-pp28-31.pdf">Using GraphTab; USENIX ;login: Sept/Oct 1992, pages 28-31</a>.</p>
<pre><code>
MMMM,M,MM&quot;MM,,,
,,MMMMMMMMM&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;,
@@ -210,67 +204,39 @@ Sept/Oct 1992, pages 28-31</a>.</p>
,&quot; , &quot;MMMMMMM&quot;MM&quot;M,,,,MMMMM , ,,
M ,&quot; MMMMMM&quot;MM&quot;&quot;M ,MMMMM,M, M
, MMMM,MMMM&quot;M&quot;M&quot;M,MM,M,&quot;, &quot;</code></pre>
<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>
<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>
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
<!-- 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 -->
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
<h1 id="inventory-for-1994horton"><a name="inventory"></a>Inventory for
1994/horton</h1>
<h1 id="inventory-for-1994horton"><a name="inventory"></a>Inventory for 1994/horton</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/horton.c">horton.c</a>
- entry source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/Makefile">Makefile</a>
- entry Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/horton.alt.c">horton.alt.c</a>
- alternative source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/horton.orig.c">horton.orig.c</a>
- original source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/gtface.c">gtface.c</a>
- gtface source code</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/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/1994/horton/try.sh">try.sh</a>
- how to run</li>
<li><a href="login_sept92-pp28-31.pdf">login_sept92-pp28-31.pdf</a> -
login article on graphics for dumb terminals</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/gtface.data">gtface.data</a>
- data for gtfsace</li>
<li><a href="1994_horton.tar.bz2">1994_horton.tar.bz2</a> - download
entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/horton.c">horton.c</a> - entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/horton.alt.c">horton.alt.c</a> - alternative source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/horton.orig.c">horton.orig.c</a> - original source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/gtface.c">gtface.c</a> - gtface source code</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/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/1994/horton/try.sh">try.sh</a> - how to run</li>
<li><a href="login_sept92-pp28-31.pdf">login_sept92-pp28-31.pdf</a> - login article on graphics for dumb terminals</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/gtface.data">gtface.data</a> - data for gtfsace</li>
<li><a href="1994_horton.tar.bz2">1994_horton.tar.bz2</a> - download 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/1994/horton/.entry.json">.entry.json</a>
- description of entry in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/.gitignore">.gitignore</a>
- list of files that should not be committed under git</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/.entry.json">.entry.json</a> - description of entry in JSON</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/.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/1994/horton/README.md">README.md</a>
- markdown source for index.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/horton/README.md">README.md</a> - markdown source for index.html</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
+36 -62
View File
@@ -130,8 +130,7 @@
<h2 id="author"><a name="author"></a>Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Ian_Collier">Ian Collier</a><br>
Location: <a href="../../location.html#GB">GB</a> - <em>United Kingdom
of Great Britain and Northern Ireland</em> (<em>United Kingdom</em>)
Location: <a href="../../location.html#GB">GB</a> - <em>United Kingdom of Great Britain and Northern Ireland</em> (<em>United Kingdom</em>)
<br><br></li>
</ul>
@@ -151,16 +150,14 @@ of Great Britain and Northern Ireland</em> (<em>United Kingdom</em>)
<p>This entry’s algorithm is as magic as its output!</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>This program may be compiled with an ANSI or K&amp;R compiler. A few
harmless warnings are displayed only if <code>gcc -Wall</code> is
used.</p>
harmless warnings are displayed only if <code>gcc -Wall</code> is used.</p>
<p>This entry is really a set of library functions, but an example
<code>main()</code> function has been added so that the library can be
tested. If the program appears too large, consider that functions
<code>o()</code> and <code>s()</code> can each be separated from the
rest of the program (except for the short functions <code>p()</code> and
<code>r()</code>, which they require) and used alone. However, the main
part of the program is the function <code>e</code>, which does require
all the other functions (apart from <code>main()</code>).</p>
<code>main()</code> function has been added so that the library can be tested. If
the program appears too large, consider that functions <code>o()</code> and <code>s()</code> can
each be separated from the rest of the program (except for the short
functions <code>p()</code> and <code>r()</code>, which they require) and used alone. However, the
main part of the program is the function <code>e</code>, which does require all the
other functions (apart from <code>main()</code>).</p>
<p>The program should be supplied with an integer parameter. If no
parameter or an invalid parameter is given, then 5 is assumed. The
maximum parameter is determined only by the amount of CPU time, virtual
@@ -169,77 +166,54 @@ memory and display (or file) space available.</p>
<p>OK, so you have probably seen magic square printers before. But what
about one that deals with even sizes as well as odd ones, or one that
prints out a different one each time (or attempts to, at any rate)?</p>
<p>I have formatted the important functions <code>o()</code>,
<code>s()</code> and <code>e()</code> to show how useful the word
<code>for</code> is, and (in function <code>e()</code>) how useful the
words <code>if</code> and <code>else</code> are. In fact, hardly
anything happens that isn’t in one of these instructions. I did this in
order to simplify the code - the algorithms used to make the random
squares are quite complex without being shrouded in obfuscated code! :-)
Incidentally, I was surprised to find out how useful the exclusive-or
operator was while writing function <code>s()</code>.</p>
<p>I have formatted the important functions <code>o()</code>, <code>s()</code> and <code>e()</code> to show how useful
the word <code>for</code> is, and (in function <code>e()</code>) how useful the words <code>if</code> and
<code>else</code> are. In fact, hardly anything happens that isn’t in one of these
instructions. I did this in order to simplify the code - the algorithms
used to make the random squares are quite complex without being shrouded
in obfuscated code! :-) Incidentally, I was surprised to find out how
useful the exclusive-or operator was while writing function <code>s()</code>.</p>
<p>Here are the descriptions of the functions in the library:</p>
<pre><code>o(n,a,q,d): makes a magic square of order n when n is odd and at least 3.
s(n,a,q,d): makes a magic square of order n when n equals 4.
e(n,a,q,d): makes a magic square of order n when n is even and at least 6.</code></pre>
<p>In the above, <code>a</code> (of type <code>int *</code>) points to
an area of memory in which the magic square will be stored and
<code>q</code> (also of type <code>int *</code>) points to an area of
memory of length at least <code>n*sizeof(int)</code> bytes which can be
used as a work space. Both <code>a</code> and <code>q</code> must be
allocated by the caller. The integer parameter <code>d</code>, usually
zero, indicates the length of a gap which will be left between adjacent
rows of the magic square.</p>
<p>In the above, <code>a</code> (of type <code>int *</code>) points to an area of memory in which
the magic square will be stored and <code>q</code> (also of type <code>int *</code>) points to
an area of memory of length at least <code>n*sizeof(int)</code> bytes which can be
used as a work space. Both <code>a</code> and <code>q</code> must be allocated by the caller.
The integer parameter <code>d</code>, usually zero, indicates the length of a gap
which will be left between adjacent rows of the magic square.</p>
<p>The square which is returned will (or should) be a permutation of the
numbers 1 to <code>n*n</code> in which all rows and columns and the two
diagonals add up to <code>n*(n*n+1)/2</code>.</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>
numbers 1 to <code>n*n</code> in which all rows and columns and the two diagonals
add up to <code>n*(n*n+1)/2</code>.</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>
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
<!-- 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 -->
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
<h1 id="inventory-for-1994imc"><a name="inventory"></a>Inventory for
1994/imc</h1>
<h1 id="inventory-for-1994imc"><a name="inventory"></a>Inventory for 1994/imc</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/imc/imc.c">imc.c</a>
- entry source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/imc/Makefile">Makefile</a>
- entry Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/imc/imc.orig.c">imc.orig.c</a>
- original source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/imc/try.sh">try.sh</a>
- how to run</li>
<li><a href="1994_imc.tar.bz2">1994_imc.tar.bz2</a> - download entry
source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/imc/imc.c">imc.c</a> - entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/imc/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/imc/imc.orig.c">imc.orig.c</a> - original source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/imc/try.sh">try.sh</a> - how to run</li>
<li><a href="1994_imc.tar.bz2">1994_imc.tar.bz2</a> - download 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/1994/imc/.entry.json">.entry.json</a>
- description of entry in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/imc/.gitignore">.gitignore</a>
- list of files that should not be committed under git</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/imc/.entry.json">.entry.json</a> - description of entry in JSON</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/imc/.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/1994/imc/README.md">README.md</a>
- markdown source for index.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/imc/README.md">README.md</a> - markdown source for index.html</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
+63 -84
View File
@@ -123,16 +123,13 @@
<!-- 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="eleventh-international-obfuscated-c-code-contest">Eleventh
International Obfuscated C Code Contest</h1>
<p>View the <code>index.html</code> web page for the given winning entry
for information on how on how to compile it and how to run the winning
program. Look at the winning source and try to figure how it does what
it does! You may then wish to look at the Author’s remarks for even more
details.</p>
<p>Use <code>make</code> to compile entries. It is possible that on BSD
or non-Unix systems the Makefile needs to be changed. See the Makefile
for details.</p>
<h1 id="eleventh-international-obfuscated-c-code-contest">Eleventh International Obfuscated C Code Contest</h1>
<p>View the <code>index.html</code> web page for the given winning entry for information on how
on how to compile it and how to run the winning program.
Look at the winning source and try to figure how it does what it does!
You may then wish to look at the Author’s remarks for even more details.</p>
<p>Use <code>make</code> to compile entries. It is possible that on BSD or non-Unix
systems the Makefile needs to be changed. See the Makefile for details.</p>
<p>Read over the Makefile for compile/build issues. Your system may
require certain changes (add or remove a library, add or remove a
<code>#define</code> i.e. the <code>-D</code> flag).</p>
@@ -140,15 +137,15 @@ require certain changes (add or remove a library, add or remove a
prior to judging. This eliminates any chance that we would bias our
judging for/against any person or group.</p>
<p>This year we retracted the guideline that discouraged the use of C
constructs such as <code>3["curds"]</code>. At one time, certain ANSI
compilers did not consider such expressions to be valid ANSI C. Alert
readers noted that the current ANSI standard considered them to be
valid. We were unable to find an ANSI C compiler that flagged such
expressions as errors.</p>
<p>Rule abuse was encouraged this year - two of this year’s winning
entries found new and interesting abuses of the rules. Next year’s rules
will change due to these (<a href="smr/index.html">smr</a> and <a
href="dodsond2/index.html">dodsond2</a>) entries’ forms of abuse.</p>
constructs such as <code>3["curds"]</code>. At one time, certain ANSI compilers did
not consider such expressions to be valid ANSI C. Alert readers noted
that the current ANSI standard considered them to be valid. We were
unable to find an ANSI C compiler that flagged such expressions as
errors.</p>
<p>Rule abuse was encouraged this year - two of this year’s winning entries found
new and interesting abuses of the rules. Next year’s rules will change
due to these (<a href="smr/index.html">smr</a> and <a href="dodsond2/index.html">dodsond2</a>) entries’
forms of abuse.</p>
<h2 id="want-to-be-an-ioccc-judge">Want to be an IOCCC Judge?</h2>
<p>We are thinking about adding a 3rd judge to our team. A 3rd judge
would help distribute the work load as well as to allowing us to
@@ -157,14 +154,12 @@ possibly expand or reshape the contest.</p>
<ul>
<li>thorough knowledge of the C language (ANSI and K&amp;R)</li>
<li>thorough knowledge of common C libs (libc, libm, curses, …)</li>
<li>reasonable written communication skills (able to write
<code>README.md</code> files, for example)</li>
<li>reasonable written communication skills (able to write <code>README.md</code> files, for example)</li>
<li>appreciation for well-written non-obfuscated code</li>
<li>willing to devote ~4 weekend days in January (starting Jan 96) for
judging</li>
<li>located in the San Francisco (California, US) Bay Area, or able to
travel (paying your own way) to the SF Bay Area during judging, or able
to link to the other IOCCC judges by some form of a video link</li>
<li>willing to devote ~4 weekend days in January (starting Jan 96) for judging</li>
<li>located in the San Francisco (California, US) Bay Area, or
able to travel (paying your own way) to the SF Bay Area during judging, or
able to link to the other IOCCC judges by some form of a video link</li>
</ul>
<p>Any of the following, though not required, would be a plus:</p>
<ul>
@@ -177,8 +172,7 @@ to link to the other IOCCC judges by some form of a video link</li>
<li>good sense of humor</li>
<li>loves chocolate and other fine foods :-)</li>
</ul>
<p>If you think this may be you, send an email before 31 Dec 1995,
to:</p>
<p>If you think this may be you, send an email before 31 Dec 1995, to:</p>
<pre><code>judges@toad.com (use the Subject: 3rd judge)</code></pre>
<p>Include in your message:</p>
<ul>
@@ -189,90 +183,75 @@ to:</p>
</ul>
<p>If you have any questions about the above, feel free to ask us via
email at the above address.</p>
<h2 id="looking-for-an-ioccc-www-site">Looking for an IOCCC WWW
site</h2>
<h2 id="looking-for-an-ioccc-www-site">Looking for an IOCCC WWW site</h2>
<p>We would like to setup an IOCCC home page somewhere out in WWW land.
If you have a well known stable site that would be willing to give us
access to put up some IOCCC html pages, please send an email (say prior
to 31 Dec 1995) to:</p>
<pre><code>judges@toad.com (use the Subject: www site)</code></pre>
<p>describing your site and any other appropriate comments. Thanks!</p>
<h2 id="a-few-notes-regarding-future-contests">A few notes regarding
future contests</h2>
<p>Due to changes in the USENIX conference calendar, the 1995 contest
will be delayed. Because there will be no Summer 1995 USENIX conference,
the 1995 IOCCC entries will be announced at the Jan 1996 USENIX
conference.</p>
<p>The 1995 contest will not open until late October 1995, and will
close sometime around the end of December 1995. The rules for the 1995
<h2 id="a-few-notes-regarding-future-contests">A few notes regarding future contests</h2>
<p>Due to changes in the USENIX conference calendar, the 1995 contest will
be delayed. Because there will be no Summer 1995 USENIX conference,
the 1995 IOCCC entries will be announced at the Jan 1996 USENIX conference.</p>
<p>The 1995 contest will not open until late October 1995, and will close
sometime around the end of December 1995. The rules for the 1995
contest have not been formed at this time and are not expected to be
ready for distribution until late October 1995.</p>
<p>Be sure to wait until the 1995 rules are posted before submitting
entries. Rules differ from year to year, sometimes in significant
ways.</p>
<p>Be sure to wait until the 1995 rules are posted before submitting entries.
Rules differ from year to year, sometimes in significant ways.</p>
<p>Please send us comments and suggestions what we have expressed above.
Also include anything else that you would like to see in future
contests. Send such email to:</p>
Also include anything else that you would like to see in future contests.
Send such email to:</p>
<pre><code>...!{sun,pacbell,uunet,pyramid}!hoptoad!judges
judges@toad.com</code></pre>
<p>If you use, distribute or publish these entries in some way, please
drop us a line. We enjoy seeing who, where and how the contest is used,
<p>If you use, distribute or publish these entries in some way, please drop
us a line. We enjoy seeing who, where and how the contest is used,
as well as details on how to provide fixes to any of the entries.</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: The email addresses found above are
for historical purposes only, and should not be used today. See <a
href="../contact.html">contact.html</a> for up to date contact details
as well as details on how to provide fixes to any of the entries. See
also <a href="../faq.html">the IOCCC FAQ</a> for addition information on
the IOCCC.</p>
<p><strong>IMPORTANT NOTE</strong>: The email addresses found above are for historical
purposes only, and should not be used today. See
<a href="../contact.html">contact.html</a> for up to date contact details
as well as details on how to provide fixes to any of the entries.
See also <a href="../faq.html">the IOCCC FAQ</a> for addition information on the IOCCC.</p>
<h2 id="credits">Credits</h2>
<p>We would like to thank Barbara Frezza for her role as official chef
of the contest. Landon Curt Noll and Larry Bassel appreciated the
opportunity to serve as official taste testers. And as usual, the food
was excellent. The official menu of the 1994 Obfuscated C Contest
dinner:</p>
<p>Antipasto: meats, cheeses, olives, peppers, pickles, artichokes Soup:
Cream of tomato Salad: spring mix Pasta: Linguine with wild mushrooms
and Reggiano Parmesan Seafood: Salmon in cream sauce or lobster claws
Vegetable: Zucchini Dessert: Homemade chocolate/pecan brownies,
fruit</p>
of the contest. Landon Curt Noll and Larry Bassel appreciated the opportunity
to serve as official taste testers. And as usual, the food was excellent.
The official menu of the 1994 Obfuscated C Contest dinner:</p>
<p>Antipasto: meats, cheeses, olives, peppers, pickles, artichokes
Soup: Cream of tomato
Salad: spring mix
Pasta: Linguine with wild mushrooms and Reggiano Parmesan
Seafood: Salmon in cream sauce or lobster claws
Vegetable: Zucchini
Dessert: Homemade chocolate/pecan brownies, fruit</p>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 1994,2023, Landon Curt Noll and Larry Bassel. All
Rights Reserved. This work is licensed under a <a
href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons
CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a> license.
If you do use this work in some form, the <a href="../judges.html">IOCCC
judges</a> would appreciate (but does not require) if you were to <a
href="../contact.html">send us a note about your use</a>.</p>
<p>Copyright (c) 1994,2023, Landon Curt Noll and Larry Bassel. All Rights Reserved.
This work is licensed under a <a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons CC BY-SA 4.0 DEED Attribution-ShareAlike
4.0 International</a> license.
If you do use this work in some form, the <a href="../judges.html">IOCCC judges</a> would appreciate
(but does not require) if you were to <a href="../contact.html">send us a note about your use</a>.</p>
<!-- 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-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content generated by: bin/output-year-index.sh -->
<h1
id="winning-entries-of-1994---the-11th-ioccc"><a name=inventory></a><a name=1994></a>Winning
Entries of 1994 - The 11th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="1994/ioccc.1994.tar.bz2">1994 entry source</a></p>
<h1 id="winning-entries-of-1994---the-11th-ioccc"><a name=inventory></a><a name=1994></a>Winning Entries of 1994 - The 11th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a href="1994/ioccc.1994.tar.bz2">1994 entry source</a></p>
<ul>
<li><a href="dodsond1/index.html">1994/dodsond1</a> - Best Game</li>
<li><a href="dodsond2/index.html">1994/dodsond2</a> - Most Obfuscated
Packaging</li>
<li><a href="dodsond2/index.html">1994/dodsond2</a> - Most Obfuscated Packaging</li>
<li><a href="horton/index.html">1994/horton</a> - Best Utility</li>
<li><a href="imc/index.html">1994/imc</a> - Most Obfuscated
Algorithm</li>
<li><a href="imc/index.html">1994/imc</a> - Most Obfuscated Algorithm</li>
<li><a href="ldb/index.html">1994/ldb</a> - Best One-liner</li>
<li><a href="schnitzi/index.html">1994/schnitzi</a> - Best Layout</li>
<li><a href="shapiro/index.html">1994/shapiro</a> - Most Well Rounded
Obfuscation</li>
<li><a href="smr/index.html">1994/smr</a> - Worst Abuse of the
Rules</li>
<li><a href="shapiro/index.html">1994/shapiro</a> - Most Well Rounded Obfuscation</li>
<li><a href="smr/index.html">1994/smr</a> - Worst Abuse of the Rules</li>
<li><a href="tvr/index.html">1994/tvr</a> - Best X11 Program</li>
<li><a href="weisberg/index.html">1994/weisberg</a> - Best Short
Program</li>
<li><a href="westley/index.html">1994/westley</a> - Worst Abuse of the C
Preprocessor</li>
<li><a href="weisberg/index.html">1994/weisberg</a> - Best Short Program</li>
<li><a href="westley/index.html">1994/westley</a> - Worst Abuse of the C Preprocessor</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
+21 -41
View File
@@ -129,9 +129,9 @@
<h2 id="author"><a name="author"></a>Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Laurion_Burchall">Laurion
Burchall</a><br> Location: <a href="../../location.html#ZZ">ZZ</a> -
<em>Unknown location</em> <br><br></li>
<li>Name: <a href="../../authors.html#Laurion_Burchall">Laurion Burchall</a><br>
Location: <a href="../../location.html#ZZ">ZZ</a> - <em>Unknown location</em>
<br><br></li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
@@ -144,8 +144,7 @@ Burchall</a><br> Location: <a href="../../location.html#ZZ">ZZ</a> -
<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.html#1994_ldb">1994 ldb bugs</a>.</p>
<p>For more detailed information see <a href="../../bugs.html#1994_ldb">1994 ldb bugs</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">./ldb</span> <span class="op">&lt;</span> file</span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a></span>
@@ -153,60 +152,41 @@ href="../../bugs.html#1994_ldb">1994 ldb bugs</a>.</p>
<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="judges-remarks">Judges’ remarks:</h2>
<p>Trigraphs are natural obfuscators. Most C-beautifiers become
C-uglifiers because they don’t handle them correctly.</p>
<p>Can you figure out how it prints a given random line (or if the line
is longer than 231 characters, part of that line) from stdin?</p>
<p>Trigraphs are natural obfuscators. Most C-beautifiers become C-uglifiers
because they don’t handle them correctly.</p>
<p>Can you figure out how it prints a given random line (or if the line is longer
than 231 characters, part of that line) from stdin?</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>All input lines must be under 232 characters long. The compiling
platform should be ASCII based.</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>
<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>
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
<!-- 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 -->
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
<h1 id="inventory-for-1994ldb"><a name="inventory"></a>Inventory for
1994/ldb</h1>
<h1 id="inventory-for-1994ldb"><a name="inventory"></a>Inventory for 1994/ldb</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/ldb/ldb.c">ldb.c</a>
- entry source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/ldb/Makefile">Makefile</a>
- entry Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/ldb/ldb.orig.c">ldb.orig.c</a>
- original source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/ldb/try.sh">try.sh</a>
- how to run</li>
<li><a href="1994_ldb.tar.bz2">1994_ldb.tar.bz2</a> - download entry
source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/ldb/ldb.c">ldb.c</a> - entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/ldb/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/ldb/ldb.orig.c">ldb.orig.c</a> - original source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/ldb/try.sh">try.sh</a> - how to run</li>
<li><a href="1994_ldb.tar.bz2">1994_ldb.tar.bz2</a> - download 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/1994/ldb/.entry.json">.entry.json</a>
- description of entry in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/ldb/.gitignore">.gitignore</a>
- list of files that should not be committed under git</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/ldb/.entry.json">.entry.json</a> - description of entry in JSON</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/ldb/.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/1994/ldb/README.md">README.md</a>
- markdown source for index.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/ldb/README.md">README.md</a> - markdown source for index.html</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
+68 -97
View File
@@ -129,9 +129,9 @@
<h2 id="author"><a name="author"></a>Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Mark_Schnitzius">Mark
Schnitzius</a><br> Location: <a href="../../location.html#ZZ">ZZ</a> -
<em>Unknown location</em> <br><br></li>
<li>Name: <a href="../../authors.html#Mark_Schnitzius">Mark Schnitzius</a><br>
Location: <a href="../../location.html#ZZ">ZZ</a> - <em>Unknown location</em>
<br><br></li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
@@ -141,139 +141,110 @@ Schnitzius</a><br> Location: <a href="../../location.html#ZZ">ZZ</a> -
<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>
<p>There are two alternate versions, one that has an increased buffer
size and one that uses <code>fgets()</code>; neither are completely
functional. See below section bugs and (mis)features for details and the
<a href="#alternate-code">alternate code</a> section for how to use.</p>
<p>There are two alternate versions, one that has an increased buffer size and one
that uses <code>fgets()</code>; neither are completely functional.
See below section bugs and (mis)features for details and the <a href="#alternate-code">alternate
code</a> section for how to use.</p>
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
<p>The current status of this entry is:</p>
<pre><code>STATUS: uses gets() - change to fgets() if possible</code></pre>
<p>For more detailed information see <a
href="../../bugs.html#1994_schnitzi">1994 schnitzi bugs</a>.</p>
<p>For more detailed information see <a href="../../bugs.html#1994_schnitzi">1994 schnitzi bugs</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">./schnitzi</span> <span class="op">&lt;</span> textfile</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>The first version, <code>schnitzi.alt.c</code>, uses
<code>fgets(3)</code> but when fed its own code it will generate code
that still uses <code>gets(3)</code>. What’s more is it will not
<p>The first version, <code>schnitzi.alt.c</code>, uses <code>fgets(3)</code> but when fed its own code
it will generate code that still uses <code>gets(3)</code>. What’s more is it will not
compile. Other functionality works fine.</p>
<p>The second version, <code>schnitzi.alt2.c</code>, has an increased
buffer size but when fed its own source code it will generate code that
can compile but with the original buffer size. This is due to a comment
which is explained in more detail in <a
href="../../bugs.html#1994_schnitzi">1994/schnitzi bugs</a>.</p>
<p>The second version, <code>schnitzi.alt2.c</code>, has an increased buffer size but when fed
its own source code it will generate code that can compile but with the original
buffer size. This is due to a comment which is explained in more detail in
<a href="../../bugs.html#1994_schnitzi">1994/schnitzi bugs</a>.</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>
<h3 id="alternate-use">Alternate use:</h3>
<p>Use <code>schnitzi.alt</code> and <code>schnitzi.alt2</code> as you
would <code>schnitzi</code> above except that feeding the source code to
it will not work right.</p>
<p>Use <code>schnitzi.alt</code> and <code>schnitzi.alt2</code> as you would <code>schnitzi</code> above except that
feeding the source code to it will not work right.</p>
<h3 id="alternate-try">Alternate try:</h3>
<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="ex">./try.alt.sh</span></span></code></pre></div>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>Try:</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="ex">./schnitzi</span> <span class="op">&lt;</span> schnitzi.c</span></code></pre></div>
<p>Compare the output of the program with its source. Sure the output is
different, but there is more than meets the <code>diff</code>’s eye. Can
you find out why?</p>
<p>You might also wish to redirect the output to another file, compile
it and compare how it works to the original code.</p>
<p>Compare the output of the program with its source. Sure the output
is different, but there is more than meets the <code>diff</code>’s eye. Can you
find out why?</p>
<p>You might also wish to redirect the output to another file,
compile it and compare how it works to the original code.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="spoiler">SPOILER:</h3>
<p>This is a program which takes any text file as input and ‘flips’ the
input file along a diagonal running from the top left corner down to the
bottom right. In other words, the first row in the file ends up written
down the first column of the result, the second row is written down the
second column, etc. The program is run by redirecting a file into the
executable on the command line; for instance, for the file ‘info’, the
program would be run as follows:</p>
<p>This is a program which takes any text file as input and ‘flips’
the input file along a diagonal running from the top left corner
down to the bottom right. In other words, the first row in the
file ends up written down the first column of the result, the
second row is written down the second column, etc. The program
is run by redirecting a file into the executable on the command
line; for instance, for the file ‘info’, the program
would be run as follows:</p>
<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">./schnitzi</span> <span class="op">&lt;</span> info</span></code></pre></div>
<p>The program generates interesting results when its source file is
used as input:</p>
<div class="sourceCode" id="cb9"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./schnitzi</span> <span class="op">&lt;</span> schnitzi.c</span></code></pre></div>
<p>The result of this command is a program which does the exact same
thing – in other words, both the program and the “flipped” version of
itself work identically (you’ll need to redirect the output of the above
command into a separate file and compile it). You might notice some
differences in the flipped version, though. First off, a secret message
becomes visible that was not visible in the original program. Also, much
of the code shows up in different places in the flipped program than it
appeared in the first program. My first version of this program was
perfectly symmetrical along the diagonal, but I later found out there
were interesting ways to break the symmetry. The best way to see this is
to load both the original and flipped versions of the program into an
editor and switch back and forth between them rapidly.</p>
<p>C tokens longer than a character (such as <code>main()</code>) proved
difficult to use in both the original and flipped versions (after
flipping, they show up as a string of single letters on successive
lines). However, I found that it was possible to get around this through
a few well-placed comments. An earlier version of this program used
nearly every single-character token in the “shared” area; however, it
proved to be too large for contest guidelines (although the code itself
is only about 300 characters, the extra whitespace needed to pad it put
it over the limit – it nearly filled a 79 by 79 area, adding up to over
4000 total characters).</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>
thing – in other words, both the program and the “flipped”
version of itself work identically (you’ll need to redirect the
output of the above command into a separate file and compile it).
You might notice some differences in the flipped version, though.
First off, a secret message becomes visible that was not visible
in the original program. Also, much of the code shows up in
different places in the flipped program than it appeared in the
first program. My first version of this program was perfectly
symmetrical along the diagonal, but I later found out there were
interesting ways to break the symmetry. The best way to see this
is to load both the original and flipped versions of the program
into an editor and switch back and forth between them rapidly.</p>
<p>C tokens longer than a character (such as <code>main()</code>) proved difficult
to use in both the original and flipped versions (after flipping,
they show up as a string of single letters on successive lines).
However, I found that it was possible to get around this through
a few well-placed comments. An earlier version of this program
used nearly every single-character token in the “shared” area;
however, it proved to be too large for contest guidelines (although
the code itself is only about 300 characters, the extra whitespace
needed to pad it put it over the limit – it nearly filled a 79 by
79 area, adding up to over 4000 total characters).</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>
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
<!-- 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 -->
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
<h1 id="inventory-for-1994schnitzi"><a name="inventory"></a>Inventory
for 1994/schnitzi</h1>
<h1 id="inventory-for-1994schnitzi"><a name="inventory"></a>Inventory for 1994/schnitzi</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/schnitzi.c">schnitzi.c</a>
- entry source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/Makefile">Makefile</a>
- entry Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/schnitzi.alt.c">schnitzi.alt.c</a>
- alternative source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/schnitzi.alt2.c">schnitzi.alt2.c</a>
- alternate alternative source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/schnitzi.orig.c">schnitzi.orig.c</a>
- original source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/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/1994/schnitzi/try.sh">try.sh</a>
- how to run</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/try.txt">try.txt</a>
- input data for try.sh</li>
<li><a href="1994_schnitzi.tar.bz2">1994_schnitzi.tar.bz2</a> - download
entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/schnitzi.c">schnitzi.c</a> - entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/schnitzi.alt.c">schnitzi.alt.c</a> - alternative source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/schnitzi.alt2.c">schnitzi.alt2.c</a> - alternate alternative source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/schnitzi.orig.c">schnitzi.orig.c</a> - original source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/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/1994/schnitzi/try.sh">try.sh</a> - how to run</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/try.txt">try.txt</a> - input data for try.sh</li>
<li><a href="1994_schnitzi.tar.bz2">1994_schnitzi.tar.bz2</a> - download 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/1994/schnitzi/.entry.json">.entry.json</a>
- description of entry in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/.gitignore">.gitignore</a>
- list of files that should not be committed under git</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/.entry.json">.entry.json</a> - description of entry in JSON</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/.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/1994/schnitzi/README.md">README.md</a>
- markdown source for index.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/schnitzi/README.md">README.md</a> - markdown source for index.html</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
+48 -76
View File
@@ -129,9 +129,9 @@
<h2 id="author"><a name="author"></a>Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Andrew_Shapiro">Andrew T.
Shapiro</a><br> Location: <a href="../../location.html#ZZ">ZZ</a> -
<em>Unknown location</em> <br><br></li>
<li>Name: <a href="../../authors.html#Andrew_Shapiro">Andrew T. Shapiro</a><br>
Location: <a href="../../location.html#ZZ">ZZ</a> - <em>Unknown location</em>
<br><br></li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
@@ -145,12 +145,10 @@ Shapiro</a><br> Location: <a href="../../location.html#ZZ">ZZ</a> -
<p>The current status of this entry is:</p>
<pre><code>STATUS: missing file - please provide it
STATUS: INABIAF - please **DO NOT** fix</code></pre>
<p>For more detailed information see <a
href="../../bugs.html#1994_shapiro">1994 shapiro bugs</a>.</p>
<p>For more detailed information see <a href="../../bugs.html#1994_shapiro">1994 shapiro bugs</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">./shapiro</span> <span class="kw">&amp;</span></span></code></pre></div>
<p>Now find the clock in the same terminal window (or console if at the
console).</p>
<p>Now find the clock in the same terminal window (or console if at the console).</p>
<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">./shapiro</span></span>
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a><span class="ex">^Z</span></span>
@@ -160,99 +158,73 @@ console).</p>
<span id="cb4-6"><a href="#cb4-6" aria-hidden="true" tabindex="-1"></a><span class="ex">^C</span></span>
<span id="cb4-7"><a href="#cb4-7" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb4-8"><a href="#cb4-8" aria-hidden="true" tabindex="-1"></a><span class="ex">./shapiro_t1</span></span></code></pre></div>
<p>Notice what you see in the output of <code>ps</code>! Observe too
what happens after you bring it back to the foreground.</p>
<p>Notice what you see in the output of <code>ps</code>! Observe too what happens after you
bring it back to the foreground.</p>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>This entry has many different levels of obfuscation, and yet the
source file is self documenting. :-)</p>
<p>From time to time, run <code>ps(1)</code> and look at the new
processes.</p>
<p>See <a href="shapiro.html">shapiro.html</a> for more information in
the internals of this program. The file <a
href="shapiro.alt.c">shapiro.alt.c</a> contains a non-obfuscated version
of this program. Note that this alt file is currently missing. See <a
href="../../bugs.html#1994_shapiro">1994 shapiro bugs</a> for
details.</p>
<p>From time to time, run <code>ps(1)</code> and look at the new processes.</p>
<p>See <a href="shapiro.html">shapiro.html</a> for more information in the internals of this program.
The file <a href="shapiro.alt.c">shapiro.alt.c</a> contains a non-obfuscated version of
this program. Note that this alt file is currently missing. See
<a href="../../bugs.html#1994_shapiro">1994 shapiro bugs</a> for details.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>The basic theme (pun) of this program is:</p>
<blockquote>
<p>“This time (everything) is not where it should be.” ~~~~</p>
<p>“This time (everything) is not where it should be.”
~~~~</p>
</blockquote>
<p>My entry (<a href="shapiro.c">shapiro.c</a>) is mostly comments,
formatted in the shape of a clock. If you strip out the comments and
look at the code you will quickly realize that the comments were the
important part and that the code does very little (see pun above). It
writes (to <code>stdout</code>) another C program (<a
href="shapiro_t2.c">shapiro_t2.c</a>). This is the first level of
<p>My entry (<a href="shapiro.c">shapiro.c</a>) is mostly comments, formatted in the shape of a
clock. If you strip out the comments and look at the code you will
quickly realize that the comments were the important part and that
the code does very little (see pun above). It writes (to <code>stdout</code>)
another C program (<a href="shapiro_t2.c">shapiro_t2.c</a>). This is the first level of
obfuscation.</p>
<p>The second program (<a href="shapiro_t2.c">shapiro_t2.c</a> (use
<code>make everything</code> first) prints a clock in the upper right
hand corner of your VTxxx/ANSI display.</p>
<p>Most of the surface obfuscation in the second program (<a
href="shapiro_t2.c">shapiro_t2.c</a>) was an attempt to make it as small
as possible. You should be able to see around this with
<code>cb(1)</code> and some more intelligent variable names. Once you
get past this you will realize that the third level of obfuscation is a
six member client/server hierarchy. (See the <a
href="shapiro.html">shapiro.html</a> web page for a detailed description
of the algorithm.)</p>
<p><code>lint</code> complains about: precedence confusion,
<code>K</code> may be used before set, <code>main()</code> returns
random value to invocation environment, value type used inconsistently,
value type declared inconsistently, function argument (number) used
inconsistently, function returns value which is always ignored, function
returns value which is sometimes ignored. All of which are harmless
(famous last words).</p>
<p>This may or may not work on non ASCII systems (I could not find one
to test it on.)</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>
<p>The second program (<a href="shapiro_t2.c">shapiro_t2.c</a> (use <code>make everything</code> first)
prints a clock in the upper right hand corner of your VTxxx/ANSI display.</p>
<p>Most of the surface obfuscation in the second program
(<a href="shapiro_t2.c">shapiro_t2.c</a>) was an attempt to make it as small as possible.
You should be able to see around this with <code>cb(1)</code> and some more intelligent
variable names. Once you get past this you will realize that the third level of
obfuscation is a six member client/server hierarchy. (See the
<a href="shapiro.html">shapiro.html</a> web page for a detailed description of the algorithm.)</p>
<p><code>lint</code> complains about: precedence confusion, <code>K</code> may be used before set,
<code>main()</code> returns random value to invocation environment, value type used
inconsistently, value type declared inconsistently, function argument
(number) used inconsistently, function returns value which is always
ignored, function returns value which is sometimes ignored.
All of which are harmless (famous last words).</p>
<p>This may or may not work on non ASCII systems (I could not find one to
test it on.)</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>
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
<!-- 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 -->
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
<h1 id="inventory-for-1994shapiro"><a name="inventory"></a>Inventory for
1994/shapiro</h1>
<h1 id="inventory-for-1994shapiro"><a name="inventory"></a>Inventory for 1994/shapiro</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/shapiro.c">shapiro.c</a>
- entry source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/Makefile">Makefile</a>
- entry Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/shapiro.orig.c">shapiro.orig.c</a>
- original source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/shapiro.c">shapiro.c</a> - entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/shapiro.orig.c">shapiro.orig.c</a> - original source</li>
<li><a href="shapiro.html">shapiro.html</a> - author hints</li>
<li><a href="1994_shapiro.tar.bz2">1994_shapiro.tar.bz2</a> - download
entry source</li>
<li><a href="1994_shapiro.tar.bz2">1994_shapiro.tar.bz2</a> - download 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/1994/shapiro/.entry.json">.entry.json</a>
- description of entry in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/.gitignore">.gitignore</a>
- list of files that should not be committed under git</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/.entry.json">.entry.json</a> - description of entry in JSON</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/.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/1994/shapiro/README.md">README.md</a>
- markdown source for index.html</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/shapiro.md">shapiro.md</a>
- markdown source for shapiro.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/README.md">README.md</a> - markdown source for index.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/shapiro.md">shapiro.md</a> - markdown source for shapiro.html</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
+44 -57
View File
@@ -135,25 +135,21 @@
10. ((M=!M)?K=L:putchar(K-&#39;J&#39;|(L-&#39;J&#39;&lt;&lt;4)))
11. );
12. exit(0);}</code></pre>
<p>Lines 1-5 are basic stuff. Line 6 opens the source code for input.
Line 7 is the loop. Line 8 reads in each character in the file (placed
in <code>L</code>) while not &gt;= 0. Line 9 is an <code>if</code>
expression which filters out all characters not between <code>J</code>
and <code>J + 15</code>. Line 10 uses <code>M</code> to execute two
different paths; the first just stores the character in <code>K</code>
and the second path combines the last two characters read in as high and
low nibbles of a byte and outputs them. In effect this is a very poor
ASCII to binary decoder. The last line is necessary so that make will
<p>Lines 1-5 are basic stuff. Line 6 opens the source code for input. Line 7 is the
loop. Line 8 reads in each character in the file (placed in <code>L</code>) while not &gt;= 0.
Line 9 is an <code>if</code> expression which filters out all characters not between <code>J</code>
and <code>J + 15</code>. Line 10 uses <code>M</code> to execute two different paths; the first just
stores the character in <code>K</code> and the second path combines the last two characters
read in as high and low nibbles of a byte and outputs them. In effect this is a
very poor ASCII to binary decoder. The last line is necessary so that make will
not stop when it executes this program.</p>
<p>The second program is encoded into this format and then included
(mostly) as a comment.</p>
<p>The second program is encoded into this format and then included (mostly)
as a comment.</p>
<p>Notice that it is impossible to write this program while leaving 16
contiguous ASCII characters free for the encoding. Because of this the
second program is mostly included as a comment. However, some of the
characters of the encoded program are also source code for the
decoder.</p>
<h3 id="for-the-second-program-with-time.h">For the second program (with
time.h):</h3>
characters of the encoded program are also source code for the decoder.</p>
<h3 id="for-the-second-program-with-time.h">For the second program (with time.h):</h3>
<pre><code> 1 #include &lt;stdio.h&gt;
2 #include &lt;time.h&gt;
3 #define o(j,k,m,n,l) {fprintf(j,a[k],m,n,a[l]);fflush(j);}
@@ -183,54 +179,45 @@ time.h):</h3>
27 sleep(1);
28 }}}
</code></pre>
<p>Lines 1 and 2 have to be there. Think of <code>o</code> in line 3 as
send message with <code>j</code>,<code>k</code> and <code>m</code> as
where, format and what. Lines 4 and 5 are all the text strings. Line 6
is the offsets into the time string for the hours, minutes and seconds.
Lines 7-13 are basic stuff. Line 14 is the crux of the biscuit. 14 forks
off <code>f</code> (6) processes each of which is connected to the ones
above and below it with a Unix pipe. It was too difficult to recover the
actual FD numbers for the pipe ends in line 14 so I regenerate them and
<code>fdopen()</code> them (for use with the standard C library
functions) on lines 15 and 16. Now we have six almost identical
processes each of which has two files open, <code>h</code> and
<code>i</code> (up and down). The only difference in each process is the
value of <code>f</code> (<code>0 &lt;= f &lt; 6</code>). The five
processes where <code>f !=0</code> are the slave processes and
<code>f == 0</code> is the master. Line 17 says we are going to do this
forever. Lines 18 and 23 differentiate between the master and the
slaves.</p>
<p>Lines 19 to 22 are the slave code. Here we read in a line of text
from <code>i</code> (down, line 19) and remove the newline char (line
20). On line 21 if this message is for us (if the first character is our
number, <code>f</code>, in ASCII) we do two things:</p>
<p>Lines 1 and 2 have to be there. Think of <code>o</code> in line 3 as send message with
<code>j</code>,<code>k</code> and <code>m</code> as where, format and what. Lines 4 and 5 are all the text
strings. Line 6 is the offsets into the time string for the hours, minutes and
seconds. Lines 7-13 are basic stuff. Line 14 is the crux of the biscuit. 14
forks off <code>f</code> (6) processes each of which is connected to the ones above and
below it with a Unix pipe. It was too difficult to recover the actual FD numbers
for the pipe ends in line 14 so I regenerate them and <code>fdopen()</code> them (for use
with the standard C library functions) on lines 15 and 16. Now we have six
almost identical processes each of which has two files open, <code>h</code> and <code>i</code> (up and
down). The only difference in each process is the value of <code>f</code> (<code>0 &lt;= f &lt; 6</code>).
The five processes where <code>f !=0</code> are the slave processes and <code>f == 0</code> is the
master. Line 17 says we are going to do this forever. Lines 18 and 23
differentiate between the master and the slaves.</p>
<p>Lines 19 to 22 are the slave code. Here we read in a line of text from
<code>i</code> (down, line 19) and remove the newline char (line 20). On line
21 if this message is for us (if the first character is our number, <code>f</code>,
in ASCII) we do two things:</p>
<ol type="1">
<li>We copy the text of the message to <code>*c</code> which is really
<code>argv[0]</code>. If you are on the correct flavor of Unix this will
change the output of the <code>ps(1)</code> command to the string we
just put there.</li>
<li>We send the message (not including the number) to
<code>stdout</code> with format number 6
(<code>"\0337\033[%d;65;H%s\0338"</code>) If you can read VTxxx (and I
read books printed as ANSI/VTxxx codes for fun :-) ) you know this is
the sequence for:</li>
<li>We copy the text of the message to <code>*c</code> which is really <code>argv[0]</code>. If you are
on the correct flavor of Unix this will change the output of the <code>ps(1)</code> command
to the string we just put there.</li>
<li>We send the message (not including the number) to <code>stdout</code> with format number 6
(<code>"\0337\033[%d;65;H%s\0338"</code>) If you can read VTxxx (and I read books printed
as ANSI/VTxxx codes for fun :-) ) you know this is the sequence for:</li>
</ol>
<pre><code>remember where we are,
go somewhere else,
print the message,
and return to where we started.</code></pre>
<p>Line 22 says if this message is not for us (the number is bigger than
ours) send it to <code>h</code> (up).</p>
<p>Lines 24 to 27 are the master code. Here we get the time and convert
it to an ASCII format (lines 24 and 25). Then on line 26 we build and
send each of the messages for the slaves. The message uses a different
control string for the different slaves. For the first and last slave
the message text is just <code>"%c+------------+\n"</code> (slave
number, text, newline.) For the other slaves it is
<code>"%c+%3d %-8s+\n"</code> (slave number, number, units, newline).
The slave number is <code>v+'0'</code>. The number (if used) is
<code>atoi(e+b[v])</code> and the units are just the string in the slave
number position.</p>
<p>Line 22 says if this message is not for us (the number is bigger than ours)
send it to <code>h</code> (up).</p>
<p>Lines 24 to 27 are the master code. Here we get the time and convert it
to an ASCII format (lines 24 and 25). Then on line 26 we build and send
each of the messages for the slaves. The message uses a different control
string for the different slaves. For the first and last slave the message
text is just <code>"%c+------------+\n"</code> (slave number, text, newline.) For the
other slaves it is <code>"%c+%3d %-8s+\n"</code> (slave number, number, units, newline).
The slave number is <code>v+'0'</code>. The number (if used) is <code>atoi(e+b[v])</code> and the
units are just the string in the slave number position.</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 -->
+30 -50
View File
@@ -129,9 +129,9 @@
<h2 id="author"><a name="author"></a>Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Szymon_Rusinkiewicz">Szymon
Rusinkiewicz</a><br> Location: <a href="../../location.html#US">US</a> -
<em>United States of America</em> (<em>United States</em>) <br><br></li>
<li>Name: <a href="../../authors.html#Szymon_Rusinkiewicz">Szymon Rusinkiewicz</a><br>
Location: <a href="../../location.html#US">US</a> - <em>United States of America</em> (<em>United States</em>)
<br><br></li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
@@ -147,69 +147,49 @@ Rusinkiewicz</a><br> Location: <a href="../../location.html#US">US</a> -
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./try.sh</span></span></code></pre></div>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>Nearly every year, one or more people would submit what they claimed
was the world’s smallest self reproducing program. While the sizes of
these submissions varied, a quick glance would reveal that they were too
big, until this entry came along.</p>
<p>While strictly speaking, <a href="smr.c">smr.c</a> is not a valid C
program, it is not an invalid C program either! Some C compilers will
compile an empty file into a program that does nothing. But even if your
compiler can’t, the build instructions supplied with this entry will
produce an executable file. On most systems, the <code>stdout</code>
from the executable will exactly match the original source.</p>
<p>In the future, the contest rules will specify a minimum size that is
one character larger than this entry, forever eliminating this sort of
program from the contest. After all, how many variations can one make on
this entry? :-)</p>
was the world’s smallest self reproducing program. While the sizes
of these submissions varied, a quick glance would reveal that they
were too big, until this entry came along.</p>
<p>While strictly speaking, <a href="smr.c">smr.c</a> is not a valid C program, it is not an
invalid C program either! Some C compilers will compile an empty file into a
program that does nothing. But even if your compiler can’t, the build
instructions supplied with this entry will produce an executable file. On most
systems, the <code>stdout</code> from the executable will exactly match the original
source.</p>
<p>In the future, the contest rules will specify a minimum size that is one
character larger than this entry, forever eliminating this sort of program from
the contest. After all, how many variations can one make on this entry? :-)</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>The world’s smallest self-replicating program. Guaranteed. Produces a
listing of itself on <code>stdout</code>.</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>
<p>The world’s smallest self-replicating program. Guaranteed.
Produces a listing of itself on <code>stdout</code>.</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>
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
<!-- 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 -->
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
<h1 id="inventory-for-1994smr"><a name="inventory"></a>Inventory for
1994/smr</h1>
<h1 id="inventory-for-1994smr"><a name="inventory"></a>Inventory for 1994/smr</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/smr/smr.c">smr.c</a>
- entry source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/smr/Makefile">Makefile</a>
- entry Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/smr/smr.orig.c">smr.orig.c</a>
- original source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/smr/try.sh">try.sh</a>
- how to run</li>
<li><a href="1994_smr.tar.bz2">1994_smr.tar.bz2</a> - download entry
source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/smr/smr.c">smr.c</a> - entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/smr/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/smr/smr.orig.c">smr.orig.c</a> - original source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/smr/try.sh">try.sh</a> - how to run</li>
<li><a href="1994_smr.tar.bz2">1994_smr.tar.bz2</a> - download 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/1994/smr/.entry.json">.entry.json</a>
- description of entry in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/smr/.gitignore">.gitignore</a>
- list of files that should not be committed under git</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/smr/.entry.json">.entry.json</a> - description of entry in JSON</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/smr/.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/1994/smr/README.md">README.md</a>
- markdown source for index.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/smr/README.md">README.md</a> - markdown source for index.html</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
+111 -159
View File
@@ -129,9 +129,9 @@
<h2 id="author"><a name="author"></a>Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Teemu_Rantanen">Teemu
Rantanen</a><br> Location: <a href="../../location.html#FI">FI</a> -
<em>Republic of Finland </em> (<em>Finland</em>) <br><br></li>
<li>Name: <a href="../../authors.html#Teemu_Rantanen">Teemu Rantanen</a><br>
Location: <a href="../../location.html#FI">FI</a> - <em>Republic of Finland </em> (<em>Finland</em>)
<br><br></li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
@@ -141,13 +141,12 @@ Rantanen</a><br> Location: <a href="../../location.html#FI">FI</a> -
<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>
<p>The author provided a spoiler version as alt code. See <a
href="#alternate-code">Alternate code</a> below.</p>
<p>The author provided a spoiler version as alt code. 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: known bug - please help us fix</code></pre>
<p>For more detailed information see <a
href="../../bugs.html#1994_tvr">1994 tvr bugs</a>.</p>
<p>For more detailed information see <a href="../../bugs.html#1994_tvr">1994 tvr bugs</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">./tvr</span> mode screensize/2 <span class="op">&lt;</span> colormapfile</span></code></pre></div>
<p>Mode may be a value from 0 to 12.</p>
@@ -155,94 +154,83 @@ href="../../bugs.html#1994_tvr">1994 tvr bugs</a>.</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.color.sh</span> <span class="co"># for colour displays</span></span>
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a><span class="ex">./try.bw.sh</span> <span class="co"># for Black &amp; White displays</span></span></code></pre></div>
<h2 id="alternate-code">Alternate code:</h2>
<p>The author provided us a spoiler version that might be of interest to
some.</p>
<p>The author provided us a spoiler version that might be of interest to some.</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>
<h3 id="alternate-use">Alternate use:</h3>
<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="ex">./tvr.alt</span> altmode screensize/2 <span class="op">&lt;</span> colormapfile</span></code></pre></div>
<p>where <code>altmode</code> <code>1</code> - <code>4</code> correspond
to mode <code>0</code> - <code>3</code> in the original entry and
<p>where <code>altmode</code> <code>1</code> - <code>4</code> correspond to mode <code>0</code> - <code>3</code> in the original entry and
<code>altmode 0</code> calculates Mandelbrot/Julian sets correctly.</p>
<h2 id="alternate-try">Alternate try:</h2>
<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="ex">./try.alt.color.sh</span> <span class="co"># for colour displays</span></span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a><span class="ex">./try.alt.bw.sh</span> <span class="co"># for Black &amp; White displays</span></span></code></pre></div>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>This entry requires the use of X11. It will form two windows
(hopefully your window manager will ask you where to place these in your
display) which you should place side by side. Move the cursor around in
one of the two windows and watch what happens.</p>
<p>The fractally minded may be able to detect that mode 0 does not
calculate Mandelbrot/Julian sets correctly. Can you find the bug? Better
still, can you fix it without breaking something else?</p>
<p>This entry requires the use of X11. It will form two windows (hopefully your
window manager will ask you where to place these in your display) which you
should place side by side. Move the cursor around in one of the two windows and
watch what happens.</p>
<p>The fractally minded may be able to detect that mode 0 does not calculate
Mandelbrot/Julian sets correctly. Can you find the bug? Better still, can you
fix it without breaking something else?</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="interactive-fractals-for-x-window-system">Interactive Fractals
for X Window System</h3>
<p>This program contains four pairs of fractals/effects and three
methods of animating them. There are two windows for a pair of fractals,
one of which contains static fractal (e.g. <a
href="https://en.wikipedia.org/wiki/Mandelbrot_set">Mandelbrot set</a>)
and the other an animating one (e.g. <a
href="https://en.wikipedia.org/wiki/Julia_set">Julia set</a>) which is
derived from the same formula as the static one. Only one pair of
fractals can be displayed in one process.</p>
<h3 id="interactive-fractals-for-x-window-system">Interactive Fractals for X Window System</h3>
<p>This program contains four pairs of fractals/effects and three methods of
animating them. There are two windows for a pair of fractals, one of which
contains static fractal (e.g. <a href="https://en.wikipedia.org/wiki/Mandelbrot_set">Mandelbrot
set</a>) and the other an animating
one (e.g. <a href="https://en.wikipedia.org/wiki/Julia_set">Julia set</a>) which is derived
from the same formula as the static one. Only one pair of fractals can be
displayed in one process.</p>
<p>To animate the fractal, you must move your mouse on the static
fractal window and the animated fractal will be calculated based on
mouse coordinates. If you are on one of the two non-stable modes (more
about them later) you can stabilize the picture by pressing a mouse
button. Pressing it does nothing on stable mode.</p>
fractal window and the animated fractal will be calculated based
on mouse coordinates. If you are on one of the two non-stable
modes (more about them later) you can stabilize the picture by
pressing a mouse button. Pressing it does nothing on stable mode.</p>
<p>The three modes are:</p>
<ul>
<li>non-stable mode with simple ‘attractor searcher’</li>
<li>non-stable mode</li>
<li>stable mode</li>
</ul>
<p>On Mandelbrot/Julia mode the stable mode calculates normal Julia set
according to the Mandelbrot coordinates (mouse position). On non-stable
modes the picture slowly transforms to the same picture as on the stable
mode but transformation can take some time. Usually, and especially if
changes are relatively small between mouse movements or frame rate is
high, the non-stable mode makes much more interesting effects IMHO. The
difference between the two non-stable modes is that the first tries to
stabilize the picture. It doesn’t stabilize much, but it helps in some
cases quite a lot. One notable case where help can be seen is when you
first move your mouse to non-black areas of the Mandelbrot set, then
back to near the center. In some cases ‘attractor searcher’ can be seen
as noise.</p>
<p>The first of the fractal pairs is Mandelbrot/Julia set as mentioned
before. The second is a variation of that. The third makes nice
3D-look-a-like effects and the fourth is a variation of that with more
nice effects.</p>
<p>On Mandelbrot/Julia mode the stable mode calculates normal Julia set according
to the Mandelbrot coordinates (mouse position). On non-stable modes the picture
slowly transforms to the same picture as on the stable mode but transformation
can take some time. Usually, and especially if changes are relatively small
between mouse movements or frame rate is high, the non-stable mode makes much
more interesting effects IMHO. The difference between the two non-stable modes
is that the first tries to stabilize the picture. It doesn’t stabilize much, but
it helps in some cases quite a lot. One notable case where help can be seen is
when you first move your mouse to non-black areas of the Mandelbrot set, then
back to near the center. In some cases ‘attractor searcher’ can be seen as
noise.</p>
<p>The first of the fractal pairs is Mandelbrot/Julia set as mentioned before. The
second is a variation of that. The third makes nice 3D-look-a-like effects and
the fourth is a variation of that with more nice effects.</p>
<h3 id="usage">Usage:</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">./tvr</span> mode screensize/2 <span class="op">&lt;</span> colormapfile</span></code></pre></div>
<p>The first parameter is the operating-mode of the program. There are 4
fractal pairs and 3 display modes, making total of 12 modes.
<code>screensize</code> is half of the actual
<code>screenlength/width</code>. I.e. if you use 128 as a second
parameter, you will get two 256x256 windows.</p>
<p>The first parameter is the operating-mode of the program. There are 4 fractal
pairs and 3 display modes, making total of 12 modes. <code>screensize</code> is half of the
actual <code>screenlength/width</code>. I.e. if you use 128 as a second parameter, you will
get two 256x256 windows.</p>
<p>The program needs reasonable values for both of these parameters to
operate. A good first try could be <code>0 128</code> or
<code>8 128</code>. The <code>colormap</code> has to be redirected into
the programs standard input via the <code>colormapfile</code> parameter
as shown above.</p>
<p>Note that you will need approximately
<code>(second_parameter^2)*64</code> bytes of free main memory or the
machine will swap heavily (memory references are quite random and may
confuse paging algorithms easily). This means that for 512x512 windows
operate. A good first try could be <code>0 128</code> or <code>8 128</code>. The <code>colormap</code> has
to be redirected into the programs standard input via the <code>colormapfile</code>
parameter as shown above.</p>
<p>Note that you will need approximately <code>(second_parameter^2)*64</code> bytes of free
main memory or the machine will swap heavily (memory references are quite random
and may confuse paging algorithms easily). This means that for 512x512 windows
you will need 4M of memory.</p>
<h3 id="colormapfile"><code>colormapfile</code></h3>
<p>This is the file from which program reads colors for screen
<code>colormap</code>. The first line of the file must be a number
between <code>3..254</code>. This informs the program how many colors
there are to be expected. This is also the maximum number of iterations
used on picture calculations. Lines after that are X11 color names. The
program expects to find, and will use, the number of colors reported on
the first line.</p>
<p>There are two <code>colormapfile</code>s to start with. One with
colors and another with only black and white. If you have enough colors
on your display you can use the one with colors (even on
<code>grayscale</code>). The other is meant mainly for a one bit plane
display (on which the picture looks terrible compared to a 8 bit plane
<p>This is the file from which program reads colors for screen <code>colormap</code>. The
first line of the file must be a number between <code>3..254</code>. This informs the
program how many colors there are to be expected. This is also the maximum
number of iterations used on picture calculations. Lines after that are X11
color names. The program expects to find, and will use, the number of colors
reported on the first line.</p>
<p>There are two <code>colormapfile</code>s to start with. One with colors and another with
only black and white. If you have enough colors on your display you can use the
one with colors (even on <code>grayscale</code>). The other is meant mainly for a one bit
plane display (on which the picture looks terrible compared to a 8 bit plane
display).</p>
<h3 id="compilation">Compilation</h3>
<p>You should compile this entry with an optimizing compiler with the
@@ -258,22 +246,21 @@ SPARCStation IPX SunOS 4.1.3
i486 Linux v1.1.8 (binarysize 3576 bytes
using `gcc -O6 -s -N` ;)
HP 9000/730 HP-UX</code></pre>
<p>Also, many of the X server and X library versions have been tested
and the program should be highly portable. The program may slow down
considerably on machines where table references are slow as the program
makes extensive use of them. Also, due to the huge amount of data sent
to the X server, considerable slowdown can be noticed if the X server is
slow or especially if the connection between the X server and the client
is slow. (Don’t try this on 9600 bps modem line. I did ;) )</p>
<p>Also, many of the X server and X library versions have been tested and the
program should be highly portable. The program may slow down considerably on
machines where table references are slow as the program makes extensive use of
them. Also, due to the huge amount of data sent to the X server, considerable
slowdown can be noticed if the X server is slow or especially if the connection
between the X server and the client is slow. (Don’t try this on 9600 bps modem
line. I did ;) )</p>
<h3 id="obfuscation">Obfuscation</h3>
<p>Obfuscation is done on different levels. Almost none of it is made at
the macro level, so <code>cpp</code>ing the code won’t give you much.
Perhaps most notable is the algorithmic obfuscation. Simple formula has
been turned into something completely different. Also it may be a
surprise to find out which piece of the code calculates non-stable
fractals and how it does that. Many obfuscations were left out of the
program because speed of animation was one of the key issues. Well,
obfuscated or not, some of the effects are very nice ;)</p>
<p>Obfuscation is done on different levels. Almost none of it is made at the macro
level, so <code>cpp</code>ing the code won’t give you much. Perhaps most notable is the
algorithmic obfuscation. Simple formula has been turned into something
completely different. Also it may be a surprise to find out which piece of the
code calculates non-stable fractals and how it does that. Many obfuscations were
left out of the program because speed of animation was one of the key issues.
Well, obfuscated or not, some of the effects are very nice ;)</p>
<h3 id="memory-refreshment">Memory refreshment</h3>
<p>Mandelbrot set is calculated from the formula</p>
<pre><code>
@@ -286,97 +273,62 @@ obfuscated or not, some of the effects are very nice ;)</p>
Z = Z + C
n+1 n
</code></pre>
<p>where <code>C</code> is the same throughout the picture. Both
calculation are finished when <code>|Z| &gt;= 2.0</code>. For the other
fractals, the basic methods are the same but the formula is different
(look at the source ;) )</p>
<p>Note that Mandelbrot and Julia on this program aren’t exactly
correct. Find out why ;)</p>
<p>where <code>C</code> is the same throughout the picture. Both calculation are finished
when <code>|Z| &gt;= 2.0</code>. For the other fractals, the basic methods are the same but
the formula is different (look at the source ;) )</p>
<p>Note that Mandelbrot and Julia on this program aren’t exactly correct. Find out
why ;)</p>
<h3 id="bugs">Bugs</h3>
<ul>
<li>No error checking. If DISPLAY is not set program dumps core. This
may also happen if a request of some of the resources fails e.g. getting
colors.</li>
<li>No error checking. If DISPLAY is not set program dumps core. This may also
happen if a request of some of the resources fails e.g. getting colors.</li>
<li>No expose event handling.</li>
<li>It may be possible that the program starts drawing before window is
mapped as there is no <code>XSync()</code>. In that case drawn data is
lost. Also, some window manager configurations places the second window
on top of the first and again drawn data will be lost. By default,
windows are placed next to the other in the top left corner of the
screen.</li>
<li>It may be possible that the program starts drawing before window is mapped as
there is no <code>XSync()</code>. In that case drawn data is lost. Also, some window manager
configurations places the second window on top of the first and again drawn
data will be lost. By default, windows are placed next to the other in the
top left corner of the screen.</li>
<li>Zooming is not possible.</li>
<li>Eats LOTS of memory on BIG pictures. Also lots of CPU resources.
Under mode 0, the boundary condition is not checked properly. The
condition <code>|Z| &gt;= 2.0</code> should be checked exactly (by
comparing <code>x*x+y*y</code> with <code>2*2</code>), or else artifacts
are introduced. The result of this error is a “bubbly” appearance (at
least in mono).</li>
<li>Eats LOTS of memory on BIG pictures. Also lots of CPU resources. Under mode
0, the boundary condition is not checked properly. The condition <code>|Z| &gt;= 2.0</code>
should be checked exactly (by comparing <code>x*x+y*y</code> with <code>2*2</code>), or else artifacts
are introduced. The result of this error is a “bubbly” appearance (at least in
mono).</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>
<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>
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
<!-- 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 -->
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
<h1 id="inventory-for-1994tvr"><a name="inventory"></a>Inventory for
1994/tvr</h1>
<h1 id="inventory-for-1994tvr"><a name="inventory"></a>Inventory for 1994/tvr</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/tvr.c">tvr.c</a>
- entry source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/Makefile">Makefile</a>
- entry Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/tvr.alt.c">tvr.alt.c</a>
- alternative source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/tvr.orig.c">tvr.orig.c</a>
- original source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/try.alt.bw.sh">try.alt.bw.sh</a>
- demonstrate alt code in black and white mode</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/try.alt.color.sh">try.alt.color.sh</a>
- demonstrate alt code in colour mode</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/try.bw.sh">try.bw.sh</a>
- demonstrate code in black and white mode</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/try.color.sh">try.color.sh</a>
- demonstrate alt code in colour mode</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/tvr.bw">tvr.bw</a>
- black and white</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/tvr.color">tvr.color</a>
- RGB values</li>
<li><a href="1994_tvr.tar.bz2">1994_tvr.tar.bz2</a> - download entry
source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/tvr.c">tvr.c</a> - entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/tvr.alt.c">tvr.alt.c</a> - alternative source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/tvr.orig.c">tvr.orig.c</a> - original source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/try.alt.bw.sh">try.alt.bw.sh</a> - demonstrate alt code in black and white mode</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/try.alt.color.sh">try.alt.color.sh</a> - demonstrate alt code in colour mode</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/try.bw.sh">try.bw.sh</a> - demonstrate code in black and white mode</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/try.color.sh">try.color.sh</a> - demonstrate alt code in colour mode</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/tvr.bw">tvr.bw</a> - black and white</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/tvr.color">tvr.color</a> - RGB values</li>
<li><a href="1994_tvr.tar.bz2">1994_tvr.tar.bz2</a> - download 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/1994/tvr/.entry.json">.entry.json</a>
- description of entry in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/.gitignore">.gitignore</a>
- list of files that should not be committed under git</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/.entry.json">.entry.json</a> - description of entry in JSON</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/.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/1994/tvr/README.md">README.md</a>
- markdown source for index.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/tvr/README.md">README.md</a> - markdown source for index.html</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
+50 -75
View File
@@ -129,9 +129,9 @@
<h2 id="author"><a name="author"></a>Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Jeff_Weisberg">Jeff
Weisberg</a><br> Location: <a href="../../location.html#ZZ">ZZ</a> -
<em>Unknown location</em> <br><br></li>
<li>Name: <a href="../../authors.html#Jeff_Weisberg">Jeff Weisberg</a><br>
Location: <a href="../../location.html#ZZ">ZZ</a> - <em>Unknown location</em>
<br><br></li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
@@ -141,108 +141,83 @@ Weisberg</a><br> Location: <a href="../../location.html#ZZ">ZZ</a> -
<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>
<p>There is an alternate version that uses more memory. See <a
href="#alternate-code">alternate code</a> below for more details.</p>
<p>There is an alternate version that uses more memory. See <a href="#alternate-code">alternate
code</a> below for more details.</p>
<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">./weisberg</span></span></code></pre></div>
<h2 id="try">Try:</h2>
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./try.sh</span></span></code></pre></div>
<p>If you have <code>primes(1)</code> installed you might also wish to
try:</p>
<p>If you have <code>primes(1)</code> installed you might also wish to try:</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">./primes.sh</span> number</span></code></pre></div>
<p>where <code>number</code> is a positive number, defaulting to 15. The
<a href="try.sh">try.sh</a> script will also do this.</p>
<p>where <code>number</code> is a positive number, defaulting to 15. The <a href="try.sh">try.sh</a>
script will also do this.</p>
<h2 id="alternate-code">Alternate code:</h2>
<p>If you liked what you saw from the above program, and happen to have
some 512 Megabytes of virtual memory lying around with to do something
with you might try this version.</p>
<p>If you liked what you saw from the above program, and happen to
have some 512 Megabytes of virtual memory lying around with to do
something with you might try this version.</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>
<h3 id="alternate-use">Alternate use:</h3>
<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="ex">./weisberg.alt</span></span></code></pre></div>
<p>Lesser systems will find this alternative version a good way to
create a core file. :-)</p>
<p>Lesser systems will find this alternative version a good way to create
a core file. :-)</p>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>This entry confuses some C-preprocessors and some C-beautifiers. We
found one cpp that processed this source differently when it was read on
<code>stdin</code> instead of via <code>cc -E</code>.</p>
<p>This entry confuses some C-preprocessors and some C-beautifiers.
We found one cpp that processed this source differently when
it was read on <code>stdin</code> instead of via <code>cc -E</code>.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="description">Description</h3>
<p>The following short program implements the “Yet Another” algorithm
for generating prime numbers. It will generate all primes up to
33554432, displaying them to the standard output as it churns along. As
33554432 is rather large on most machines, this code may take quite some
time to run to completion, so as an added feature, it will cease
execution upon reception of a signal (any will do equally well), as well
as in the event of a system shutdown or reboot.</p>
<p>The following short program implements the “Yet Another” algorithm for
generating prime numbers. It will generate all primes up to 33554432,
displaying them to the standard output as it churns along. As 33554432
is rather large on most machines, this code may take quite some time to
run to completion, so as an added feature, it will cease execution upon
reception of a signal (any will do equally well), as well as in the
event of a system shutdown or reboot.</p>
<h3 id="bugs">Bugs</h3>
<p>The alternative version (<a href="weisberg.alt.c">weisberg.alt.c</a>)
has never actually run to completion. After running for close to a week
it had reached somewhere around 250e6, when it became necessary to test
the reboot feature (which worked remarkably well). As there are quite a
lot of primes to be found before reaching <code>INT_MAX</code>, the
output produced can be quite overwhelming so it’s recommended to pipe
the output through your favorite pager (<code>more</code> or
<code>less</code>), and not output to a paper output device (unless you
have <em>LOTS</em> of paper).</p>
<p>The alternative version (<a href="weisberg.alt.c">weisberg.alt.c</a>) has never actually run
to completion. After running for close to a week it had reached somewhere around
250e6, when it became necessary to test the reboot feature (which worked
remarkably well). As there are quite a lot of primes to be found before reaching
<code>INT_MAX</code>, the output produced can be quite overwhelming so it’s recommended to pipe
the output through your favorite pager (<code>more</code> or <code>less</code>), and not output to a
paper output device (unless you have <em>LOTS</em> of paper).</p>
<h3 id="technical">Technical</h3>
<p>The original “Yet Another Prime Program” algorithm used here was
developed as a Computer Architecture course micro-programming exercise,
and was designed to take full advantage of the UR300 micro-architecture
to achieve blindingly fast speed. It was ported to C specifically for
the IOCCC. In the conversion/obfuscation step some of (much of) the
blazing speed was lost, but as a bonus, the understandability of the
code was reduced to zero.</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>
<p>The original “Yet Another Prime Program” algorithm used here was developed as a
Computer Architecture course micro-programming exercise, and was designed to
take full advantage of the UR300 micro-architecture to achieve blindingly fast
speed. It was ported to C specifically for the IOCCC. In the
conversion/obfuscation step some of (much of) the blazing speed was lost, but as
a bonus, the understandability of the code was reduced to zero.</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>
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
<!-- 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 -->
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
<h1 id="inventory-for-1994weisberg"><a name="inventory"></a>Inventory
for 1994/weisberg</h1>
<h1 id="inventory-for-1994weisberg"><a name="inventory"></a>Inventory for 1994/weisberg</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/weisberg/weisberg.c">weisberg.c</a>
- entry source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/weisberg/Makefile">Makefile</a>
- entry Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/weisberg/weisberg.orig.c">weisberg.orig.c</a>
- original source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/weisberg/primes.sh">primes.sh</a>
- feed primes to the program</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/weisberg/try.sh">try.sh</a>
- how to run</li>
<li><a href="1994_weisberg.tar.bz2">1994_weisberg.tar.bz2</a> - download
entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/weisberg/weisberg.c">weisberg.c</a> - entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/weisberg/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/weisberg/weisberg.orig.c">weisberg.orig.c</a> - original source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/weisberg/primes.sh">primes.sh</a> - feed primes to the program</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/weisberg/try.sh">try.sh</a> - how to run</li>
<li><a href="1994_weisberg.tar.bz2">1994_weisberg.tar.bz2</a> - download 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/1994/weisberg/.entry.json">.entry.json</a>
- description of entry in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/weisberg/.gitignore">.gitignore</a>
- list of files that should not be committed under git</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/weisberg/.entry.json">.entry.json</a> - description of entry in JSON</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/weisberg/.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/1994/weisberg/README.md">README.md</a>
- markdown source for index.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/weisberg/README.md">README.md</a> - markdown source for index.html</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
+75 -108
View File
@@ -129,9 +129,9 @@
<h2 id="author"><a name="author"></a>Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Brian_Westley">Brian
Westley</a><br> Location: <a href="../../location.html#US">US</a> -
<em>United States of America</em> (<em>United States</em>) <br><br></li>
<li>Name: <a href="../../authors.html#Brian_Westley">Brian Westley</a><br>
Location: <a href="../../location.html#US">US</a> - <em>United States of America</em> (<em>United States</em>)
<br><br></li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
@@ -141,68 +141,60 @@ Westley</a><br> Location: <a href="../../location.html#US">US</a> -
<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> alt</span></code></pre></div>
<p>We recommend that you try the alternate version first as the original
entry requires (for better display) 80 columns and 8 character tabs with
wraparound.</p>
<p>The alt code uses the same logic as the original code except that the
original code used <code>#include</code>s of files that do not exist to
generate the messages (as compiler errors) whereas the alt code uses
<code>printf(3)</code>. For the original entry see <a
href="#original-code">Original code</a> below.</p>
<p>We recommend that you try the alternate version first as the original entry
requires (for better display) 80 columns and 8 character tabs with wraparound.</p>
<p>The alt code uses the same logic as the original code except that the original
code used <code>#include</code>s of files that do not exist to generate the messages (as
compiler errors) whereas the alt code uses <code>printf(3)</code>. For the original entry
see <a href="#original-code">Original code</a> below.</p>
<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">./westley.alt</span></span></code></pre></div>
<p>The purpose of the game is to escape the dungeon. Depending on the
compiler line you will get a different message when you run the program.
One compiler line will make you win the game (escape the dungeon) and
others will show something else.</p>
<p><em>This is independent of the previous (if there are any previous)
compiler invocations</em> specified. That means with the right compiler
invocation you can ‘win’ the game on the first go.</p>
<p>There are a variety of different <code>-D</code> flags you give to
<code>cc</code> that change the message you get. You might wish to look
at the <a href="westley.alt.c">source code</a> to get a better idea or
see below in the <a href="#try">Try</a> section for running the game
<p>The purpose of the game is to escape the dungeon. Depending on the compiler line
you will get a different message when you run the program. One compiler line
will make you win the game (escape the dungeon) and others will show something
else.</p>
<p><em>This is independent of the previous (if there are any previous) compiler
invocations</em> specified. That means with the right compiler invocation you can
‘win’ the game on the first go.</p>
<p>There are a variety of different <code>-D</code> flags you give to <code>cc</code> that change the
message you get. You might wish to look at the <a href="westley.alt.c">source code</a> to
get a better idea or see below in the <a href="#try">Try</a> section for running the game
from start to finish.</p>
<h3 id="try">Try:</h3>
<p>For something more interesting try compiling it with different
<code>cc -D</code> arguments and then run the program each time. For
example:</p>
<p>For something more interesting try compiling it with different <code>cc -D</code> arguments
and then run the program each time. For example:</p>
<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="fu">cc</span> <span class="at">-Describe</span> <span class="at">-Door</span> westley.alt.c <span class="at">-o</span> westley.alt <span class="kw">&amp;&amp;</span> <span class="ex">./westley.alt</span></span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a><span class="fu">cc</span> <span class="at">-Describe</span> <span class="at">-Drain</span> westley.alt.c <span class="at">-o</span> westley.alt <span class="kw">&amp;&amp;</span> <span class="ex">./westley.alt</span></span></code></pre></div>
<p>To see the game from start to finish, try:</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.alt.sh</span></span></code></pre></div>
<h2 id="original-code">Original code:</h2>
<p>The purpose of the game is to escape the dungeon <strong>via the
compiler line where you get <em>messages as compiler
errors</em></strong>. Depending on the compiler line you will get
different error messages and one compiler line will make you win the
<p>The purpose of the game is to escape the dungeon <strong>via the compiler line
where you get <em>messages as compiler errors</em></strong>. Depending on the compiler line you
will get different error messages and one compiler line will make you win the
game!</p>
<p>NOTE: your terminal should be set to 80 columns, 8 character tabs,
and wraparound. The alternate code does not have this limitation and it
is for this reason that we recommend you try it first.</p>
<p>NOTE: your terminal should be set to 80 columns, 8 character tabs, and
wraparound. The alternate code does not have this limitation and it is for this
reason that we recommend you try it first.</p>
<h3 id="original-build">Original 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> all</span></code></pre></div>
<p>There are a variety of different <code>-D</code> flags you can give
to <code>cc</code> that change the message you get. You might wish to
look at the <a href="westley.c">source code</a> to get a better idea or
see below in the <a href="#original-try">Original try</a> section for
<p>There are a variety of different <code>-D</code> flags you can give to <code>cc</code> that change the
message you get. You might wish to look at the <a href="westley.c">source code</a> to get a
better idea or see below in the <a href="#original-try">Original try</a> section for
running the game from start to finish.</p>
<h2 id="original-use">Original use:</h2>
<p>There is no running of this program directly as it is supposed to
fail to compile: the purpose of the game is to escape the dungeon but
depending on the compiler line you will get a different message
(<strong>as compiler errors</strong> due to <code>#include</code> files
not existing). One compiler line will make you win the game (escape the
dungeon) and others will show something else.</p>
<p><em>This is independent of the previous (if there are any previous)
compiler invocations</em> specified. That means with the right compiler
invocation you can ‘win’ the game on the first go. But unlike the <a
href="westley.alt.c">alternate code</a>, you do not run this program as
it will not compile: instead it will be compiler error messages; there
is no running the program.</p>
<p>There is no running of this program directly as it is supposed to fail to
compile: the purpose of the game is to escape the dungeon but depending on the
compiler line you will get a different message (<strong>as compiler errors</strong> due to
<code>#include</code> files not existing). One compiler line will make you win the game
(escape the dungeon) and others will show something else.</p>
<p><em>This is independent of the previous (if there are any previous) compiler
invocations</em> specified. That means with the right compiler invocation you can
‘win’ the game on the first go. But unlike the <a href="westley.alt.c">alternate code</a>,
you do not run this program as it will not compile: instead it will be compiler
error messages; there is no running the program.</p>
<h2 id="original-try">Original try:</h2>
<p>For something more interesting try compiling it with different
<code>cc -D</code> arguments:</p>
<p>For something more interesting try compiling it with different <code>cc -D</code>
arguments:</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">cc</span> <span class="at">-Describe</span> <span class="at">-Door</span> westley.c</span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a><span class="fu">cc</span> <span class="at">-Describe</span> <span class="at">-Drain</span> westley.c</span></code></pre></div>
<p>To see the game from start to complete, try:</p>
@@ -213,19 +205,19 @@ is no running the program.</p>
<p>To use:</p>
<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.sh</span></span></code></pre></div>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>This program, in accordance with the rules, compiles into a legal C
program without human intervention. However, it simply compiles into
<code>main(){}</code>, which does nothing and exits, so you don’t need
<p>This program, in accordance with the rules, compiles into a legal
C program without human intervention. However, it simply compiles
into <code>main(){}</code>, which does nothing and exits, so you don’t need
to actually compile the program.</p>
<p>This program is a simple adventure game which uses only C
preprocessor error messages (for missing <code>#include</code> files) as
output. To begin, try to compile the program with no options:</p>
<p>This program is a simple adventure game which uses only C preprocessor
error messages (for missing <code>#include</code> files) as output. To begin,
try to compile the program with no options:</p>
<div class="sourceCode" id="cb9"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="fu">cc</span> westley.c</span></code></pre></div>
<p>This will fail, producing an error message for a missing
<code>#include</code> file as the opening description. Your terminal
should be set for 80 columns, 8 character tabs, and wraparound, as there
is no way to reliably output newlines. You should see something like
this (text massaged to change wraparound to separate lines):</p>
<p>This will fail, producing an error message for a missing <code>#include</code>
file as the opening description. Your terminal should be set for
80 columns, 8 character tabs, and wraparound, as there is no way
to reliably output newlines. You should see something like this
(text massaged to change wraparound to separate lines):</p>
<pre><code> westley.c
westley.c(87) : fatal error C1024: cannot open include file &#39;
@@ -237,20 +229,18 @@ this (text massaged to change wraparound to separate lines):</p>
&#39;</code></pre>
<p>Your compiler error message will vary, but the important part is the
missing include file name, which functions as the game text.</p>
<p>To “do” things, all words must start with <code>-D</code>. For
example, to look at the door, do:</p>
<div class="sourceCode" id="cb11"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="fu">cc</span> <span class="at">-Describe</span> <span class="at">-Door</span> prog.c</span></code></pre></div>
<p>To “do” things, all words must start with <code>-D</code>. For example, to
look at the door, do:</p>
<div class="sourceCode" id="cb11"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="fu">cc</span> <span class="at">-Describe</span> <span class="at">-Door</span> prog.c</span></code></pre></div>
<p>…and you will get another error message telling you about the door.
(note: some compilers will stop after the first missing include file,
while others will continue to try compiling; the latter will repeat the
opening message each time, as if you are playing an adventure game with
“verbose” turned on).</p>
while others will continue to try compiling; the latter will repeat
the opening message each time, as if you are playing an adventure game
with “verbose” turned on).</p>
<p>The goal of the game is to escape the dungeon.</p>
<p>Here is a walk-through for the game, including a few dead-ends:</p>
<h3 id="spoiler">SPOILER</h3>
<div class="sourceCode" id="cb12"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="fu">cc</span> <span class="at">-Describe</span> <span class="at">-Door</span> westley.c</span>
<div class="sourceCode" id="cb12"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="fu">cc</span> <span class="at">-Describe</span> <span class="at">-Door</span> westley.c</span>
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a><span class="fu">cc</span> <span class="at">-Describe</span> <span class="at">-Drain</span> westley.c</span>
<span id="cb12-3"><a href="#cb12-3" aria-hidden="true" tabindex="-1"></a><span class="fu">cc</span> <span class="at">-Describe</span> <span class="at">-Dwarf</span> westley.c</span>
<span id="cb12-4"><a href="#cb12-4" aria-hidden="true" tabindex="-1"></a><span class="fu">cc</span> <span class="at">-Describe</span> <span class="at">-Debris</span> westley.c <span class="co"># or -Dungeon</span></span>
@@ -271,59 +261,36 @@ class="sourceCode sh"><code class="sourceCode bash"><span id="cb12-1"><a href="#
<p>Note that the game has no real state information; you can type these
commands in any order, at any time. Also note that word order is
unimportant.</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>
<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>
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
<!-- 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 -->
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
<h1 id="inventory-for-1994westley"><a name="inventory"></a>Inventory for
1994/westley</h1>
<h1 id="inventory-for-1994westley"><a name="inventory"></a>Inventory for 1994/westley</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/westley/westley.c">westley.c</a>
- entry source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/westley/Makefile">Makefile</a>
- entry Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/westley/westley.alt.c">westley.alt.c</a>
- alternative source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/westley/westley.orig.c">westley.orig.c</a>
- original source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/westley/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/1994/westley/try.sh">try.sh</a>
- how to run</li>
<li><a href="1994_westley.tar.bz2">1994_westley.tar.bz2</a> - download
entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/westley/westley.c">westley.c</a> - entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/westley/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/westley/westley.alt.c">westley.alt.c</a> - alternative source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/westley/westley.orig.c">westley.orig.c</a> - original source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/westley/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/1994/westley/try.sh">try.sh</a> - how to run</li>
<li><a href="1994_westley.tar.bz2">1994_westley.tar.bz2</a> - download 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/1994/westley/.entry.json">.entry.json</a>
- description of entry in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/westley/.gitignore">.gitignore</a>
- list of files that should not be committed under git</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/westley/.entry.json">.entry.json</a> - description of entry in JSON</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/westley/.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/1994/westley/README.md">README.md</a>
- markdown source for index.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/westley/README.md">README.md</a> - markdown source for index.html</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->