Files
ioccc/2000/primenum/index.html
T
Landon Curt Noll 0833c3e4f0 fix how bin tools sort
We set LC_ALL=C when sorting in a bin tool.  This was done
to make the result of using `sort(1)` consistent.

Improved how the Primary files and Secondary files are
sorted by `bin/output-index-inventory.sh` to sort
with "-u -k 1n -k 3.2d".

The above will change `index.html` files for all entries.

Changed `bin/chk-entry.sh` VERSION from "1.1.2 2024-03-17"
to "1.1.3 2024-03-18".

Changed `bin/gen-authors.sh` VERSION from "1.3 2024-03-04"
to "1.3.1 2024-03-18".

Changed `bin/gen-location.sh` VERSION from "1.1 2024-03-04"
to "1.1.1 2024-03-18".

Changed `bin/gen-sitemap.sh` VERSION from "1.3 2024-03-16"
to "1.3.1 2024-03-18".

Changed `bin/output-index-inventory.sh` VERSION from "1.2 2024-02-27"
to "1.2.1 2024-03-18".

Changed `bin/pandoc-wrapper.sh` VERSION from "1.5 2024-03-18"
to "1.5.1 2024-03-18".

Changed `bin/sort.gitignore.sh` VERSION from "1.1.1 2024-02-23"
to "1.1.2 2024-03-18".

Changed `bin/tar-all.sh` VERSION from "1.1 2024-02-27"
to "1.1.1 2024-03-18".

Changed `bin/tar-year.sh` VERSION from "1.1 2024-02-27"
to "1.1.1 2024-03-18".

Performed `make www` to update all entry `index.html` files.
2024-03-18 02:43:03 -07:00

268 lines
14 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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 web page was formed via the tool: bin/readme2index.sh -->
<!-- -->
<!-- The content of main section of this web page came from: 2000/primenum/README.md -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2000/primenum/README.md -->
<!-- !!! Do not modify this web page, instead modify the file: 2000/primenum/README.md -->
<!-- !!! Do not modify this web page, instead modify the file: 2000/primenum/README.md -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- Markdown content was converted into HTML via the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2000/primenum - Best Abuse of CPP</title>
<meta name="description" content="2000 IOCCC entry primenum - Best Abuse of CPP">
<meta name="keywords" content="IOCCC, 2000, IOCCC 2000, IOCCC entry, primenum, Best Abuse of CPP">
</head>
<!-- END: this line ends content from: inc/head.default.html -->
<!-- START: this line starts content from: inc/body.default.html -->
<body>
<!-- END: this line ends content from: inc/body.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
<div class="header">
<img src="../../png/ioccc.png" alt="IOCCC image by Matt Zucker" width=300 height=110>
<h1>The International Obfuscated C Code Contest</h1>
<h2>2000/primenum - Best Abuse of CPP</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="../natori/index.html">&larr; natori</a>
<a class="Left" href="../index.html">&uarr; 2000 &uarr;</a>
<a class="Left" href="../rince/index.html">rince &rarr;</a>
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/2000/primenum/primenum.c">C code</a>
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/2000/primenum/Makefile">Makefile</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="../../index.html">IOCCC Home</a>
<a href="../../years.html">Winning Entries</a>
<a href="../../authors.html">People who have won</a>
<a href="../../location.html">Location of authors</a>
</div>
<hr>
<div class="sidenav">
<a href="../../news.html">IOCCC News</a>
<a href="../../status.html">Contest status</a>
<a href="../../faq.html#submit">How to enter the IOCCC</a>
<a href="../../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../../bugs.html">Bugs &amp; (mis)features</a>
<a href="../../faq.html#fix_an_entry">Fixing IOCCC entries</a>
<a href="../../faq.html#fix_web_site">Fixing the web site</a>
<a href="../../faq.html#fix_author">Fixing author info</a>
<a href="../../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../../judges.html">The IOCCC Judges</a>
<a href="../../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
<!-- START: this line starts content generated by: bin/output-index-author.sh -->
<h2 id="author"><a name="author"></a>Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Raymond_Cheong">Raymond Cheong</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 -->
<!-- END: this line ends content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h2 id="to-build">To build:</h2>
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span></span></code></pre></div>
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
<p>The current status of this entry is:</p>
<pre><code>STATUS: INABIAF - please **DO NOT** fix</code></pre>
<p>For more detailed information see <a href="../../bugs.html#2000_primenum">2000 primenum 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="bu">echo</span> n <span class="kw">|</span> <span class="ex">./primenum</span> n</span></code></pre></div>
<p>NOTE: <code>n</code> is an integer.</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>Don’t read the author remarks until you’re ready for the spoiler.
Just stop and read the program; it won’t take long. Once you’ve figured
out what it does, run it. It may surprise you.</p>
<p>This entry won, not because the obfuscation is impenetrable, but because
it successfully fooled half of the judges, including me.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="description">Description</h3>
<p>For 15 years, IOCCC entries have obfuscated programs using esoteric,
difficult-to-interpret, confusing algorithms. This entry finally bucks
that trend and obfuscates in the most “obvious” way possible: by
painstakingly describing the algorithm in clear pseudocode. Even novice
programmers will recognize that the program should find and print prime
numbers up to a given number (as specified on the command line).</p>
<p>But novice programmers especially know that mistakes are often made in
translating pseudocode to real code, often resulting in programs with
unexpected and confusing output. Clearly, the program contains several
syntax “mistakes” (e.g. <code>LessThanOrEqualTo</code>) and blatant “errors” (e.g.
<code>Zero</code>). This program clearly requires “debugging.”</p>
<p>As a result of these “bugs”, the program does not calculate primes at all.
Instead, the program reads input from <code>stdin</code> and returns garbled text on
<code>stdout</code>. Fortunately, you can recover the original message simply by
running the program a second time. 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="ex">./primenum</span> n <span class="op">&lt;</span> textfile <span class="kw">|</span> <span class="ex">./primenum</span> n <span class="op">&gt;</span> textfile2</span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="fu">diff</span> textfile textfile2</span></code></pre></div>
<p>where n is the same number (modulo 64). So, the prime number generator
is actually a simple text encoder/decoder! Of course, don’t forget that
argument, otherwise the “bugs” in the program will cause it to crash!</p>
<h3 id="features">Features</h3>
<ul>
<li><p>The program attempts to mislead the reader into thinking that it
generates prime numbers. It does this by:</p>
<ul>
<li>describing a correct algorithm in pseudocode;</li>
<li>using partially correct conversion of pseudocode to real code;</li>
<li>using suggestive variable names; and</li>
<li>using a suggestive program name.</li>
</ul></li>
<li><p>The program demonstrates a novel method of abusing the C preprocessor.</p></li>
<li><p>Determining how the filter algorithm works is left as an exercise to the
reader.</p></li>
<li><p>OK, so running it through the preprocessor strips away the prime
number front. But ye be warned: “not a11 variab1es1es are identica1” :-)</p></li>
<li><p>Other features include</p>
<ul>
<li>useless variables</li>
<li>useless if</li>
<li>a for loop that’s used as an if statement</li>
<li>dependence on the high bit being 0</li>
</ul></li>
<li><p>Try also
<code>echo THIS MESSAGE IS IN ALL CAPS | ./primenum 32</code></p></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>
<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>
<!-- 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-2000primenum"><a name="inventory"></a>Inventory for 2000/primenum</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/2000/primenum/primenum.c">primenum.c</a> - entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/primenum/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/primenum/primenum.orig.c">primenum.orig.c</a> - original source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/primenum/try.sh">try.sh</a> - how to run</li>
<li><a href="2000_primenum.tar.bz2">2000_primenum.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/2000/primenum/README.md">README.md</a> - markdown source for index.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/primenum/.entry.json">.entry.json</a> - description of entry in JSON</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/primenum/.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>
</ul>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2000%2Fprimenum%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 -->