Improved `all-run.sh` and `readme2index.sh` so that certain command line options (e.g., -p, -P, -u, -U ...) are only passed along to other tools if they are given on the command line. all-run.sh VERSION changed from "1.1.1 2024-01-19" to "1.1.2 2024-01-20", readme2index.sh VERSION changed from "1.1 2024-01-16" to "1.1.1 2024-01-20". Added `quick-readme2index.sh` that only calls `readme2index.sh` if the `index.html` is not a non-empty file, or of either `.winner.json` and/or `README.md` is newer than `index.html`. Updated all `index.html` files because the the file contains a comment that includes the newly modified readme2index.sh VERSION.
270 lines
12 KiB
HTML
270 lines
12 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||
<!-- START: two lines up starts content from: inc/top.default.html -->
|
||
<!-- -->
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- -->
|
||
<!-- END: this line ends content from: inc/top.default.html -->
|
||
<!-- -->
|
||
<!-- This file was formed by the tool: bin/readme2index.sh version: 1.1.1 2024-01-20 -->
|
||
<!-- -->
|
||
<!-- START: this line starts content from: inc/head.default.html -->
|
||
|
||
<head>
|
||
<link rel="stylesheet" href="/temp-test-ioccc/ioccc.css">
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||
<title>1991/fine</title>
|
||
<meta name="description" content="1991 IOCCC winner fine">
|
||
<meta name="keywords" content="IOCCC, 1991, IOCCC 1991, IOCCC winner, fine">
|
||
</head>
|
||
|
||
<!-- END: this line ends content from: inc/head.default.html -->
|
||
<!-- START: this line starts content from: inc/body.default.html -->
|
||
|
||
<body>
|
||
|
||
<!-- END: this line ends content from: inc/body.default.html -->
|
||
<!-- START: this line starts content from: inc/header.default.html -->
|
||
|
||
<div class="header">
|
||
<img src="/temp-test-ioccc/png/ioccc.png" alt="IOCCC image by Matt Zucker" width=300 height=110>
|
||
<h1>The International Obfuscated C Code Contest</h1>
|
||
<h2>1991/fine</h2>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/header.default.html -->
|
||
<!-- START: this line starts content from: inc/topnav.mid.html -->
|
||
|
||
<div class="topnav">
|
||
<a class="Left" href="../dds/index.html">← dds</a>
|
||
<a class="Left" href="../index.html">↑ 1991 ↑</a>
|
||
<a class="Left" href="../rince/index.html">rince →</a>
|
||
<a class="Right" href="#inventory">Inventory</a>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/topnav.mid.html -->
|
||
<!-- START: this line starts content from: inc/begin-row.default.html -->
|
||
|
||
<div class="row">
|
||
|
||
<!-- END: this line ends content from: inc/begin-row.default.html -->
|
||
<!-- START: this line starts content from: inc/begin-leftcolumn.default.html -->
|
||
|
||
<div class="leftcolumn">
|
||
|
||
<!-- END: this line ends content from: inc/begin-leftcolumn.default.html -->
|
||
<!-- START: this line starts content from: inc/sidenav.default.html -->
|
||
|
||
<div class="sidenav">
|
||
<a href="#content">Jump to contents</a>
|
||
</div>
|
||
<hr>
|
||
<div class="sidenav">
|
||
<a href="/temp-test-ioccc/index.html">IOCCC Home</a>
|
||
<a href="/temp-test-ioccc/years.html">Winning Entries</a>
|
||
<a href="/temp-test-ioccc/winners.html">People who have won</a>
|
||
</div>
|
||
<hr>
|
||
<div class="sidenav">
|
||
<a href="/temp-test-ioccc/news.html">IOCCC News</a>
|
||
<a href="/temp-test-ioccc/faq.html#submit">How to enter the IOCCC</a>
|
||
<a href="/temp-test-ioccc/faq.html">FAQ</a>
|
||
</div>
|
||
<hr>
|
||
<div class="sidenav">
|
||
<a href="/temp-test-ioccc/bugs.html">Bugs & (mis)features</a>
|
||
<a href="/temp-test-ioccc/faq.html#fix_a_winner">Fixing IOCCC winners</a>
|
||
<a href="/temp-test-ioccc/faq.html#fix_web_site">Fixing the web site</a>
|
||
<a href="/temp-test-ioccc/faq.html#fix_author">Fixing winner info</a>
|
||
<a href="/temp-test-ioccc/thanks-for-help.html">Thanks for the help</a>
|
||
</div>
|
||
<hr>
|
||
<div class="sidenav">
|
||
<a href="/temp-test-ioccc/judges.html">The IOCCC Judges</a>
|
||
<a href="/temp-test-ioccc/contact.html">Contacting the IOCCC</a>
|
||
</div>
|
||
<hr>
|
||
<div class="sidenav">
|
||
<a href="#top">Jump to top</a>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/sidenav.default.html -->
|
||
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
|
||
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
|
||
|
||
<div class="rightcolumn">
|
||
|
||
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
|
||
<!-- START: this line starts content from: inc/before-content.default.html -->
|
||
|
||
<a name="content"></a>
|
||
|
||
<!-- END: this line ends content from: inc/before-content.default.html -->
|
||
<!-- START: this line starts content generated by: bin/gen-author.sh -->
|
||
|
||
<p><a name="author"><strong>Author:</strong></a> <br><br>Name: <a
|
||
href="/temp-test-ioccc/winners.html#Thomas_A_Fine">Thomas A.
|
||
Fine</a><br> Location: <a
|
||
href="/temp-test-ioccc/location.html#US">US</a></p>
|
||
|
||
<!-- END: next line ends content generated by: bin/gen-author.sh -->
|
||
<h2 id="to-build">To build:</h2>
|
||
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> 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="bu">echo</span> text <span class="kw">|</span> <span class="ex">./fine</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>Make sure that you read the last line backwards! Credit goes to <a
|
||
href="/winners.html#Brian_Westley">Merlyn LeRoy (Brian Westley)</a> for
|
||
that. See his 22 August 1992 <a
|
||
href="https://groups.google.com/g/rec.puzzles/c/z_xVPMRVBtg/m/lyEYSAeBD4gJ">rec.puzzles
|
||
post</a>. Some others come from his 1989 entry as well. To those who
|
||
have a harder time reading backwards it says:
|
||
<code>Gary lent the rug</code>, rotated from
|
||
<code>the rug gary lent</code>!</p>
|
||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||
<p>This filter, 80 chars plus a newline, fits into a single line on most
|
||
terminals (unless your terminal has a line wrap mis-feature :-)).</p>
|
||
<p>Note in 2023: fixing this entry to work with modern systems increased
|
||
the size, originally to 106 characters but it was dropped back down to
|
||
80 with clever use of the Makefile.</p>
|
||
<p>This entry is likely one of the smallest C implementations of this
|
||
filter, excluding programs that resort to command line or include file
|
||
tricks.</p>
|
||
<p>How does this program work? Which 3 bytes of C code can be changed
|
||
into 2 bytes, allowing the program to still work, but also stripping the
|
||
high bit off some input?</p>
|
||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||
<p>The author wishes to thank J Greely for the last 6 bytes.</p>
|
||
<p>Here’s about how it does it:</p>
|
||
<p>NOTE: Bits are referred to as 76543210, high to low.</p>
|
||
<ol type="1">
|
||
<li><p>Get the character in variable <code>a</code>. Note the fun way we
|
||
check for <code>EOF</code>. (thanks J).</p></li>
|
||
<li><p>Reverse bit 6, and strip bit 5. Bit 6 determines (mostly) whether
|
||
or not this character is a letter. Bit 5 would determine case if we
|
||
cared. Assign this value to variable <code>b</code> (We need to save it,
|
||
since we need to make 2 comparisons and maybe one operation with this
|
||
value). We can’t abuse our first variable, since it saves the bits we’re
|
||
changing.</p></li>
|
||
<li><p>Check this value to see if it is a letter. It must be non-zero -
|
||
if it is zero, then we have either the <code>@</code> (64) or the
|
||
<code>`</code> (96). It also must be less than 27 - this checks the
|
||
range for letters as well as implicitly checking the value of bit 6 (if
|
||
it was originally clear, it is set now, so <code>b</code> would be too
|
||
big).</p></li>
|
||
<li><p>If it is not a letter, the conditional expression inside of the
|
||
<code>putchar()</code> returns the original character (<code>a</code>).
|
||
Otherwise, it returns a really messy expression that performs the actual
|
||
rotation and fixes the fifth and sixth bits:</p>
|
||
<ul>
|
||
<li><ol type="A">
|
||
<li>Subtract 1, to get into the range 0-25 (for the modulo
|
||
operation).</li>
|
||
</ol></li>
|
||
<li><ol start="2" type="A">
|
||
<li>Add 13 to the character. Steps A and B are combined.</li>
|
||
</ol></li>
|
||
<li><ol start="3" type="A">
|
||
<li>Take this modulo 26 to make the addition wrap around.</li>
|
||
</ol></li>
|
||
<li><ol start="4" type="A">
|
||
<li>Fix bits 5 and 6, based on variable <code>a</code>.</li>
|
||
</ol></li>
|
||
<li><ol start="5" type="A">
|
||
<li>Add 1 back in (we took it out in step A.) This is okay to do
|
||
<em>after</em> step D, because we know the addition won’t trickle up
|
||
past the fourth bit (<code>b</code> would have to be 31 for this to
|
||
happen).</li>
|
||
</ol></li>
|
||
</ul></li>
|
||
</ol>
|
||
<p>Notice that this implementation operates only on characters with the
|
||
high bit clear. The high bit can be ignored without changing the size of
|
||
the program. Also, if you know you are only dealing with seven bit data,
|
||
the size can be reduced by one byte. These are left as exercises for the
|
||
student.</p>
|
||
<h2 id="copyright-and-cc-by-sa-4.0-license">Copyright and CC BY-SA 4.0
|
||
License:</h2>
|
||
<p>This file is Copyright (c) 2023 by Landon Curt Noll. All Rights
|
||
Reserved. You are free to share and adapt this file under the terms of
|
||
this license:</p>
|
||
<pre><code>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</code></pre>
|
||
<p>For more information, see:
|
||
https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||
<!-- START: this line starts content generated by: bin/gen-inventory.sh -->
|
||
|
||
<h1 id="inventory-for-1991fine"><a name="inventory"></a>Inventory for
|
||
1991/fine</h1>
|
||
<h2 id="primary-files">Primary files</h2>
|
||
<ul>
|
||
<li><a href="index.html">index.html</a> - winner home page</li>
|
||
<li><a
|
||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/fine/fine.c">fine.c</a>
|
||
- winning source</li>
|
||
<li><a
|
||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/fine/Makefile">Makefile</a>
|
||
- winner Makefile</li>
|
||
<li><a
|
||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/fine/fine.orig.c">fine.orig.c</a>
|
||
- original source</li>
|
||
<li><a
|
||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/fine/try.sh">try.sh</a>
|
||
- how to run</li>
|
||
<li><a href="1991_fine.tar.bz2">1991_fine.tar.bz2</a> - download winning
|
||
source</li>
|
||
</ul>
|
||
<h2 id="secondary-files">Secondary files</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/fine/.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/1991/fine/.winner.json">.winner.json</a>
|
||
- description of winner in JSON</li>
|
||
<li><a
|
||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/fine/README.md">README.md</a>
|
||
- markdown source for index.html</li>
|
||
</ul>
|
||
|
||
<!-- END: next line ends content generated by: bin/gen-inventory.sh -->
|
||
<!-- START: this line starts content from: inc/after-content.default.html -->
|
||
|
||
<!-- END: this line ends content from: inc/after-content.default.html -->
|
||
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
|
||
<!-- START: this line starts content from: inc/end-row.default.html -->
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/end-row.default.html -->
|
||
<!-- START: this line starts content from: inc/footer.default.html -->
|
||
|
||
<div class="footer">
|
||
<hr>
|
||
<h2>Coda</h2>
|
||
<p><a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F1991%2Ffine%2Findex.html">Nu HTML check this web page</a></p>
|
||
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/footer.default.html -->
|
||
<!-- START: this line starts content from: inc/bottom.default.html -->
|
||
|
||
</body>
|
||
</html>
|
||
|
||
<!-- END: this line ends content from: inc/bottom.default.html -->
|