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:
1 parent
9eb7a54e9f
commit
b0b212acb1
402 files changed
+37061
-55132
No files matched your search
+18
-36
@@ -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
@@ -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 < 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 < 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 <= 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 <= 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
@@ -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"><</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"MM,,,
|
||||
,,MMMMMMMMM"""""""",
|
||||
@@ -210,67 +204,39 @@ Sept/Oct 1992, pages 28-31</a>.</p>
|
||||
," , "MMMMMMM"MM"M,,,,MMMMM , ,,
|
||||
M ," MMMMMM"MM""M ,MMMMM,M, M
|
||||
, MMMM,MMMM"M"M"M,MM,M,", "</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
@@ -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&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
@@ -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&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
@@ -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"><</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
@@ -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"><</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"><</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"><</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"><</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
@@ -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">&</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
@@ -135,25 +135,21 @@
|
||||
10. ((M=!M)?K=L:putchar(K-'J'|(L-'J'<<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 >= 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 >= 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 <stdio.h>
|
||||
2 #include <time.h>
|
||||
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 <= f < 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 <= f < 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
@@ -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
@@ -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"><</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 & 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"><</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 & 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"><</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| >= 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| >= 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| >= 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| >= 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
@@ -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
@@ -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">&&</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">&&</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 '
|
||||
|
||||
@@ -237,20 +229,18 @@ this (text massaged to change wraparound to separate lines):</p>
|
||||
'</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 -->
|
||||
|
||||
Reference in new issue
Block a user