built year level index.html files

Added `bin/all-years.sh` to run a command over all years.

Added `bin/gen-year-index.sh` to build an `index.html`
for a given year.

Added support code to build an `index.html`
for a given year.

Added `make gen_year_index` to to level Makefile
and related rules.

Using the above, added `index.html` files for all IOCCC years.

Updated `bin/README.md` according to the above.

Improved comments in `bin/all-run.sh`.

Exported TOPDIR in all `bin/` tools that use TOPDIR.

Removed incorrect lines in `bin/quick-readme2index.sh`
usage message.

Improve -v 3 printed important variables messages,
in order that important variables are exported,
from all `bin/` tools.

Rebuild all HTML pages via `make www`.
This commit is contained in:
Landon Curt Noll committed 2024-02-12 17:59:40 -08:00
1 parent cc73503c10
commit 64e4fd91ed
50 files changed
+9277 -83

No files matched your search

+199
View File
@@ -0,0 +1,199 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>1984 - The 1st IOCCC</title>
<meta name="description" content="IOCCC Year 1984">
<meta name="keywords" content="IOCCC, 1984, IOCCC 1984, IOCCC entry, The 1st IOCCC">
</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>1984 - The 1st IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.first.html -->
<div class="topnav">
<a class="Left Disabled" href="#">In 1st year</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../1985/index.html">1985 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.first.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="first-annual-obfuscated-c-code-contest">First annual Obfuscated
C Code Contest</h1>
<p>In <a href="/years.html#1984">1984</a>, the first contest was held.
The name of the contest was simply
“<code>First annual Obfuscated C Code Contest</code>”.</p>
<p>Look at the <code>README.md</code>file for the given winning entry
for information 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!
This year we only had remarks from two authors but which came years
later.</p>
<p>Restrictions against machine dependent code were not in the <a
href="rules.txt">rules</a> in 1984. The source file size restriction was
only 512 bytes. Rules and results were posted to <a
href="https://groups.google.com/g/net.lang.c">net.lang.c</a> and <a
href="https://groups.google.com/g/net.unix-wizards">net.unix-wizards</a>.
The contest was announced in a <a
href="https://groups.google.com/g/net.lang.c/c/lx-TAuEyeRI/m/HdOOnNx6LC0J">net.lang.c
post</a>.</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: 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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 1984,2023, Landon Curt Noll. 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-1984---the-1st-ioccc"><a name=inventory></a><a name=1984></a>Winning
Entries of 1984 - The 1st IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="1984/ioccc.1984.tar.bz2">1984 entry source</a></p>
<ul>
<li><a href="1984/anonymous/index.html">1984/anonymous</a> -
Dishonorable mention</li>
<li><a href="1984/decot/index.html">1984/decot</a> - Second place</li>
<li><a href="1984/laman/index.html">1984/laman</a> - Third place</li>
<li><a href="1984/mullender/index.html">1984/mullender</a> - Grand
Prize</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+202
View File
@@ -0,0 +1,202 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>1985 - The 2nd IOCCC</title>
<meta name="description" content="IOCCC Year 1985">
<meta name="keywords" content="IOCCC, 1985, IOCCC 1985, IOCCC entry, The 2nd IOCCC">
</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>1985 - The 2nd IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../1984/index.html">&larr; 1984</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../1986/index.html">1986 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1
id="second-year-of-the-international-obfuscated-c-code-contest">Second
year of the International Obfuscated C Code Contest</h1>
<p>Look at the <code>README.md</code> file for the given winning entry
for information 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>Hints against machine dependent code were added to the <a
href="rules.txt">rules</a> to avoid another 1984 style winner (<a
href="../1984/mullender">1984/mullender</a>). <a
href="rules.txt">Rules</a> and <a href="/years.html#1985">results</a>
were posted to <a
href="https://groups.google.com/g/net.lang.c">net.lang.c</a> and <a
href="https://groups.google.com/g/net.unix-wizards">net.unix-wizards</a>.
Larry Bassel was invited to help in the judging. Awards were given to 5
classes of programs since we were unable to select only the best 4.</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: 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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 1985,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) that you <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-1985---the-2nd-ioccc"><a name=inventory></a><a name=1985></a>Winning
Entries of 1985 - The 2nd IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="1985/ioccc.1985.tar.bz2">1985 entry source</a></p>
<ul>
<li><a href="1985/applin/index.html">1985/applin</a> - Best one
liner</li>
<li><a href="1985/august/index.html">1985/august</a> - Most obscure
program</li>
<li><a href="1985/lycklama/index.html">1985/lycklama</a> - Strangest
appearing program</li>
<li><a href="1985/shapiro/index.html">1985/shapiro</a> - Grand prize for
most well-rounded in confusion</li>
<li><a href="1985/sicherman/index.html">1985/sicherman</a> - Worst abuse
of the C preprocessor</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+220
View File
@@ -0,0 +1,220 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>1986 - The 3rd IOCCC</title>
<meta name="description" content="IOCCC Year 1986">
<meta name="keywords" content="IOCCC, 1986, IOCCC 1986, IOCCC entry, The 3rd IOCCC">
</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>1986 - The 3rd IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../1985/index.html">&larr; 1985</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../1987/index.html">1987 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="third-international-obfuscated-c-code-contest">Third
International Obfuscated C Code Contest</h1>
<p>Look at the <code>README.md</code> file for the given winning entry
for information 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>The <a href="rules.txt">rules for 1986</a> suggested categories due
to the success of the <a href="/years.html#1985">1985</a> judging
method. The maximum size was increased from 512 to 1024 bytes. Larry
Bassel joined as the second official judge.</p>
<p>A poll was taken for the worst code for <a
href="https://en.wikipedia.org/wiki/Berkeley_Software_Distribution">BSD</a>
and <a href="https://en.wikipedia.org/wiki/UNIX_System_V">System V</a>
program. The <a href="https://en.wikipedia.org/wiki/Bourne_shell">Bourne
Shell</a> (<code>/bin/sh</code>) won for both systems. The BSD <a
href="https://en.wikipedia.org/wiki/Finger_(protocol)">finger</a>
program took third place.</p>
<p><a href="rules.txt">Rules</a> and <a
href="/years.html#1986">results</a> were posted to <a
href="https://groups.google.com/g/net.lang.c">net.lang.c</a> and <a
href="https://groups.google.com/g/net.unix-wizards">net.unix-wizards</a>.
<a
href="https://www.vintage-computer.com/publications.php?microsystemsjournal">Micro/Systems
Journal</a> started regular publishing of the winners. The practice of
making first announcement of the winners at the Summer USENIX BOF (Birds
of a Feather) started this year. A notice was posted to
net.announce.</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: 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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 1986,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-1986---the-3rd-ioccc"><a name=inventory></a><a name=1986></a>Winning
Entries of 1986 - The 3rd IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="1986/ioccc.1986.tar.bz2">1986 entry source</a></p>
<ul>
<li><a href="1986/applin/index.html">1986/applin</a> - Most adaptable
program</li>
<li><a href="1986/august/index.html">1986/august</a> - Best complex task
done in a complex way</li>
<li><a href="1986/bright/index.html">1986/bright</a> - Most useful
obfuscation</li>
<li><a href="1986/hague/index.html">1986/hague</a> - Worst abuse of the
C preprocessor</li>
<li><a href="1986/holloway/index.html">1986/holloway</a> - Best simple
task performed in a complex way</li>
<li><a href="1986/marshall/index.html">1986/marshall</a> - Best
layout</li>
<li><a href="1986/pawka/index.html">1986/pawka</a> - Most illegible
code</li>
<li><a href="1986/stein/index.html">1986/stein</a> - Best one liner</li>
<li><a href="1986/wall/index.html">1986/wall</a> - Grand prize in most
well-rounded in confusion</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+212
View File
@@ -0,0 +1,212 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>1987 - The 4th IOCCC</title>
<meta name="description" content="IOCCC Year 1987">
<meta name="keywords" content="IOCCC, 1987, IOCCC 1987, IOCCC entry, The 4th IOCCC">
</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>1987 - The 4th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../1986/index.html">&larr; 1986</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../1988/index.html">1988 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="fourth-international-obfuscated-c-code-contest">Fourth
International Obfuscated C Code Contest</h1>
<p>Look at the README.md file for the given winning entry for
information 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>The <a href="rules.txt">rules for 1997</a> suggested even more
categories than in 1986. Hints for what to do and not to do were also
given in the <a href="rules.txt">rules</a>. For example, a simple
excessive abuse of <code>/lib/cpp</code> was discouraged unless the
abuse was unusual. The mailboxes for the contest were moved from nsc to
amdahl. The practice of posting a preliminary set of rules for the next
year was started this year.</p>
<p><a href="rules.txt">Rules</a> and results were posted to comp.lang.c
and comp.unix.wizards with an announcement in news.announce.important.
Micro/Systems Journal published the 1987 winners. <a
href="https://www.amazon.com/stores/Mark-R.-Horton/author/B001HPGRB8">Mark
R. Horton</a> included a version of the <a
href="../years.html#1987">1987 winners</a> in an appendix of his C book
<a
href="https://www.amazon.com/Portable-Software-Mark-R-Horton/dp/0138680507">Portable
C Software International Edition</a>. The first announcement of winners
at the Summer 87 USENIX was helped by a small fly that danced all over
the foils.</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: 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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 1987,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-1987---the-4th-ioccc"><a name=inventory></a><a name=1987></a>Winning
Entries of 1987 - The 4th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="1987/ioccc.1987.tar.bz2">1987 entry source</a></p>
<ul>
<li><a href="1987/biggar/index.html">1987/biggar</a> - Best Abuse of the
Rules</li>
<li><a href="1987/heckbert/index.html">1987/heckbert</a> - Best
Obfuscator of Programs</li>
<li><a href="1987/hines/index.html">1987/hines</a> - Worst Style</li>
<li><a href="1987/korn/index.html">1987/korn</a> - Best One Liner</li>
<li><a href="1987/lievaart/index.html">1987/lievaart</a> - Grand
Prize</li>
<li><a href="1987/wall/index.html">1987/wall</a> - Most Useful
Obfuscation</li>
<li><a href="1987/westley/index.html">1987/westley</a> - Best
Layout</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+214
View File
@@ -0,0 +1,214 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>1988 - The 5th IOCCC</title>
<meta name="description" content="IOCCC Year 1988">
<meta name="keywords" content="IOCCC, 1988, IOCCC 1988, IOCCC entry, The 5th IOCCC">
</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>1988 - The 5th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../1987/index.html">&larr; 1987</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../1989/index.html">1989 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="fifth-international-obfuscated-c-code-contest">Fifth
International Obfuscated C Code Contest</h1>
<p>Look at the README.md file for the given winning entry for
information 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>The maximum size of entries was raised from 1024 to 1536 bytes,
however smaller entries were encouraged. Due to the <a
href="../1987/biggar/">“Best Abuse of the Rules” winner of 1987</a>, a
limit of 160 chars in the compile line was introduced.</p>
<p>This year, the Grand Prize was given to the most unusual entry and
best abuse of the C Preprocessor rather than the most well rounded
entry.</p>
<p><a href="rules.txt">Rules</a> and results were posted to comp.lang.c,
comp.sources.unix and alt.sources. The 1988 winners will be published in
the <a
href="https://www.vintage-computer.com/publications.php?microsystemsjournal">Micro/Systems
Journal</a>.</p>
<p>Winning entries for previous years were repackaged with each year
being in its own directory. Makefiles and hints were also provided. The
package was posted to the comp.sources.unix newsgroup. They are also
available on a wide number of USENET archive sites.</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: 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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 1988,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-1988---the-5th-ioccc"><a name=inventory></a><a name=1988></a>Winning
Entries of 1988 - The 5th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="1988/ioccc.1988.tar.bz2">1988 entry source</a></p>
<ul>
<li><a href="1988/applin/index.html">1988/applin</a> - Best of show</li>
<li><a href="1988/dale/index.html">1988/dale</a> - Best abuse of system
calls</li>
<li><a href="1988/isaak/index.html">1988/isaak</a> - Best visuals</li>
<li><a href="1988/litmaath/index.html">1988/litmaath</a> - Best small
program</li>
<li><a href="1988/phillipps/index.html">1988/phillipps</a> - Least
likely to compile successfully</li>
<li><a href="1988/reddy/index.html">1988/reddy</a> - Most useful
Obfuscated C program</li>
<li><a href="1988/robison/index.html">1988/robison</a> - Best abuse of C
constructs</li>
<li><a href="1988/spinellis/index.html">1988/spinellis</a> - Best abuse
of the rules</li>
<li><a href="1988/westley/index.html">1988/westley</a> - Best
layout</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+218
View File
@@ -0,0 +1,218 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>1989 - The 6th IOCCC</title>
<meta name="description" content="IOCCC Year 1989">
<meta name="keywords" content="IOCCC, 1989, IOCCC 1989, IOCCC entry, The 6th IOCCC">
</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>1989 - The 6th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../1988/index.html">&larr; 1988</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../1990/index.html">1990 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="sixth-international-obfuscated-c-code-contest">Sixth
International Obfuscated C Code Contest</h1>
<p>Look at the README.md file for the given winning entry for
information 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>Instructions for use: Run <code>make</code> to compile entries (it is
possible that on System V or non-Unix systems the Makefile needs to be
changed).</p>
<p>This year, the Grand Prize was given to the most useful program.</p>
<p>The <a href="jar.1/README.md">“Strangest abuse of the rules”</a>
award was given this year to stress the fact that starting in 1990,
compiling entries must result an executable regular file.</p>
<p>The Makefile always uses the portable version of the <a
href="fubar/README.md">“Best self modifying program”</a> because there
is no loss of functionality in using it. In the case of the <a
href="tromp/README">“Best game”</a> winner, however, some functionality
is lost in the portable version and so the Makefile uses the original
program. System V users may need to change the Makefile to use the s5
version. See the hint files or the Makefile for details.</p>
<p><a href="rules.txt">Rules</a> and results were posted to comp.lang.c,
comp.sources.unix, and alt.sources. They have been made available on a
wide number of USENET archive sites such as uunet. The 1989 winners will
be published in the <a
href="https://www.vintage-computer.com/publications.php?microsystemsjournal">Micro/Systems
Journal</a>.</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: 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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 1989,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-1989---the-6th-ioccc"><a name=inventory></a><a name=1989></a>Winning
Entries of 1989 - The 6th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="1989/ioccc.1989.tar.bz2">1989 entry source</a></p>
<ul>
<li><a href="1989/fubar/index.html">1989/fubar</a> - Best self-modifying
program</li>
<li><a href="1989/jar.1/index.html">1989/jar.1</a> - Strangest abuse of
the rules</li>
<li><a href="1989/jar.2/index.html">1989/jar.2</a> - Best of show</li>
<li><a href="1989/ovdluhe/index.html">1989/ovdluhe</a> - Most humorous
output</li>
<li><a href="1989/paul/index.html">1989/paul</a> - Most complex
algorithm</li>
<li><a href="1989/robison/index.html">1989/robison</a> - Best minimal
use of C</li>
<li><a href="1989/roemer/index.html">1989/roemer</a> - Best layout</li>
<li><a href="1989/tromp/index.html">1989/tromp</a> - Best game</li>
<li><a href="1989/vanb/index.html">1989/vanb</a> - Best one liner</li>
<li><a href="1989/westley/index.html">1989/westley</a> - Most algorithms
in one program</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+216
View File
@@ -0,0 +1,216 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>1990 - The 7th IOCCC</title>
<meta name="description" content="IOCCC Year 1990">
<meta name="keywords" content="IOCCC, 1990, IOCCC 1990, IOCCC entry, The 7th IOCCC">
</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>1990 - The 7th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../1989/index.html">&larr; 1989</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../1991/index.html">1991 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="seventh-international-obfuscated-c-code-contest">Seventh
International Obfuscated C Code Contest</h1>
<p>Look at the README.md file for the given winning entry for
information 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>This year, the Grand Prize won a standing ovation at USENIX.</p>
<p>The <a href="1990/stig/README.md">“Strangest abuse of the rules”</a>
award was given this year to stress the fact that starting in 1991,
entries should be shell-specific.</p>
<p>This year was the first year that we accepted ANSI C entries. It was
interesting to note that the ANSI C entries were as a whole less
portable than the K&amp;R C entries. We hope that in future contests
people will enter more obfuscated and challenging ANSI C programs.</p>
<p>We would like to thank Barbara Frezza (loving wife of Larry Bassel)
for her role as official chef of the contest. Her opinions regarding
some of the contest entries were appreciated.</p>
<p><a href="rules.txt">Rules</a> and <a
href="https://www.ioccc.org/years.html#1990">results</a> were posted to
comp.lang.c, comp.sources.unix, and alt.sources. They have been made
available on a wide number of USENET archive sites such as uunet.</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: 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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 1990,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-1990---the-7th-ioccc"><a name=inventory></a><a name=1990></a>Winning
Entries of 1990 - The 7th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="1990/ioccc.1990.tar.bz2">1990 entry source</a></p>
<ul>
<li><a href="1990/baruch/index.html">1990/baruch</a> - Best Small
Program</li>
<li><a href="1990/cmills/index.html">1990/cmills</a> - Best Game</li>
<li><a href="1990/dds/index.html">1990/dds</a> - Best Language Tool</li>
<li><a href="1990/dg/index.html">1990/dg</a> - Best Abuse of the C
Preprocessor</li>
<li><a href="1990/jaw/index.html">1990/jaw</a> - Best
Entropy-reducer</li>
<li><a href="1990/pjr/index.html">1990/pjr</a> - Most Unusual Data
Structure</li>
<li><a href="1990/scjones/index.html">1990/scjones</a> - ANSI
Committee’s Worst Abuse of C</li>
<li><a href="1990/stig/index.html">1990/stig</a> - Strangest Abuse of
the Rules</li>
<li><a href="1990/tbr/index.html">1990/tbr</a> - Best Utility</li>
<li><a href="1990/theorem/index.html">1990/theorem</a> - Best of
Show</li>
<li><a href="1990/westley/index.html">1990/westley</a> - Best
Layout</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+267
View File
@@ -0,0 +1,267 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>1991 - The 8th IOCCC</title>
<meta name="description" content="IOCCC Year 1991">
<meta name="keywords" content="IOCCC, 1991, IOCCC 1991, IOCCC entry, The 8th IOCCC">
</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>1991 - The 8th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../1990/index.html">&larr; 1990</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../1992/index.html">1992 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="eighth-international-obfuscated-c-code-contest">Eighth
International Obfuscated C Code Contest</h1>
<p>Look at the README.md file for the given winning entry for
information 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>Instructions for use: Run <code>make</code> to compile entries. It is
possible that on BSD or non-Unix systems the Makefile needs to be
changed.</p>
<p>This year, we did not single out an entry that was better than all of
the rest. We selected 3 entries that were, in our opinion, went beyond
all of the other entries this year:</p>
<ul>
<li><a href="westley/README.md">Grand Prize</a> by <a
href="https://www.ioccc.org/winners.html#Brian_Westley">Brian
Westley</a></li>
<li><a href="dds/README.md">Most Well Rounded</a> by <a
href="https://www.ioccc.org/winners.html#Diomidis_Spinellis">Diomidis
Spinellis</a></li>
<li><a href="brnstnd/README.md">Best Of Show</a> by <a
href="https://www.ioccc.org/winners.html#Daniel_J._Bernstein">Daniel J.
Bernstein</a></li>
</ul>
<p>Name and address information are separated from the actual program
prior to judging. This eliminates any chance that we would bias our
judging for/against any person or group. In the end, we are surprised as
you are to see who has won. Even so, it is worth noting that <a
href="https://www.ioccc.org/winners.html#Brian_Westley">Brian
Westley</a> has submitted a winning entry for the past 5 years!</p>
<h2 id="a-few-notes-regarding-possible-changes-to-the-contest">A few
notes regarding possible changes to the contest:</h2>
<p>We did not give awards to some traditional contest categories such as
“Best Layout” or “Worst Abuse of the Rules”. We felt that to do so would
deny awards to more deserving entries. These categories have not been
eliminated, and will likely be considered in future years.</p>
<p>A number of entries made use of the following C pre-processor
feature:</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="pp">#define X define</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="pp">#</span><span class="er">X foo bar</span></span></code></pre></div>
<p>This is not permitted under ANSI C. Some ANSI C compilers do allow
this. In the future, we do not want programs to use this feature.
Because this request was not stated in the <a href="rules.txt">1991
rules</a>, we did not reject entries of this type. However we provided
more portable versions so that more people could compile these
programs.</p>
<p>This year we received entries that made use of the X Window System.
Since this functionality is now available on many systems, we feel that
programs that use these are now portable enough to be valid entries.</p>
<p>We may allow programs to make use of the X Window System libs and
include files, provided that they can operate with a system running at
the level of at least X11r4. Requiring the use of imake, a specific
window manager, specific display hardware, or a specific user interface
(<code>Openl**k</code>, <code>M*tif</code>, …) is likely not to be
allowed. We will provide a more detailed explanation of our viewpoint in
next year’s rules.</p>
<p>In order to encourage more ‘normal’ looking C programs, we are
considering the following change to the maximum size rule:</p>
<pre><code>Your source, not counting any &lt;space&gt;, &lt;tab&gt;, and a &lt;newline&gt; character,
and not counting any &#39;;&#39;, &#39;{&#39; and &#39;}&#39; character followed by a &lt;newline&gt;
character, must be 1536 bytes or less. The entire source, counting all
characters, be 4096 bytes or less.</code></pre>
<p>Some thought has been given to adding some C++ categories, however
this is not likely to happen soon. We are waiting until C++ compilers
become common place on a wide number of systems. We also need time to
brace ourselves for what obfuscation C++ could wield!</p>
<p>Be sure to wait until the 1992 rules are posted before submitting
entries. We may fine tune the rules to reflect the some ideas above.</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>
<pre><code>...!{sun,pacbell,uunet,pyramid}!hoptoad!judges
judges@toad.com</code></pre>
<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>
<h2 id="credits">Credits:</h2>
<p>We would like to thank Barbara Frezza for her role as official chef
of the contest. Landon Noll appreciated the opportunity to serve as
assistant pizza chef. Larry Bassel was official taste tester. Yummo!</p>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 1991,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-1991---the-8th-ioccc"><a name=inventory></a><a name=1991></a>Winning
Entries of 1991 - The 8th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="1991/ioccc.1991.tar.bz2">1991 entry source</a></p>
<ul>
<li><a href="1991/ant/index.html">1991/ant</a> - Best Utility</li>
<li><a href="1991/brnstnd/index.html">1991/brnstnd</a> - Best Of
Show</li>
<li><a href="1991/buzzard/index.html">1991/buzzard</a> - Best
Output</li>
<li><a href="1991/cdupont/index.html">1991/cdupont</a> - Most Useful
Label</li>
<li><a href="1991/davidguy/index.html">1991/davidguy</a> - Best X11
Graphics</li>
<li><a href="1991/dds/index.html">1991/dds</a> - Most Well Rounded</li>
<li><a href="1991/fine/index.html">1991/fine</a> - Best One Liner</li>
<li><a href="1991/rince/index.html">1991/rince</a> - Best Game</li>
<li><a href="1991/westley/index.html">1991/westley</a> - Grand
Prize</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+265
View File
@@ -0,0 +1,265 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>1992 - The 9th IOCCC</title>
<meta name="description" content="IOCCC Year 1992">
<meta name="keywords" content="IOCCC, 1992, IOCCC 1992, IOCCC entry, The 9th IOCCC">
</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>1992 - The 9th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../1991/index.html">&larr; 1991</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../1993/index.html">1993 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="ninth-international-obfuscated-c-code-contest">Ninth
International Obfuscated C Code Contest</h1>
<p>Look at the README.md file for the given winning entry for
information 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). A number of
compilers had problems optimizing certain entries. Some compilers do
optimize, but the resulting program does not work. By default we have
left off <code>-O</code> from compile lines. You might want to add
<code>-O</code> back, or add it back for certain entries where
performance is important.</p>
<p>This year marked an all time high for number of entries as well as
the quality of entries. Nearly twice the usual number of entries made it
to the final judging rounds. Even when we raised the standards for
winning, we still wound up giving out a few more awards than in other
years. The new size rules size probably contributed to the overall high
quality.</p>
<p>FYI: By tradition, we do not record the count of the number entries,
nor do we give our our guess as to the number of entries received. For
folks who wonder, we can say that we consumed about 2000 pages of output
(printing between 2 and 4 normal pages per side) during the judging
process this year.</p>
<p>The new instructions for submitting entries worked well - we were
able to write scripts to unpack them and eliminate duplicates.</p>
<p>As promised last year, we accepted programs that made use of the X
libraries for the first time. We now consider ANSI C compilers to be the
“standard” version that the entries were compiled with.</p>
<p>Name and address information are separated from the actual program
prior to judging. This eliminates any chance that we would bias our
judging for/against any person or group. In the end, we are surprised as
you are to see who has won. Even so, it is worth noting that <a
href="https://www.ioccc.org/winners.html#Brian_Westley">Brian
Westley</a> has submitted a winning entry for the past 6 years!</p>
<h2 id="a-few-notes-regarding-future-contests">A few notes regarding
future contests:</h2>
<p>We did not give awards to some traditional contest categories such as
“Best Layout”. We felt that to do so would deny awards to more deserving
entries. These categories have not been eliminated. We will likely be
awarding them in future years.</p>
<p>We received a few entries whose instructions were rot13’d. While
nothing was said about this in the rules, we found that it made the
judging process a little harder, so we may request that this not be done
this in the future.</p>
<p>Some thought has been given to a separate obfuscated perl contest.
Watch comp.lang.perl for details!</p>
<p>Be sure to wait until the 1993 rules are posted before submitting
entries. We may fine tune the rules to reflect the some ideas above.</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>
<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>
<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>
<h2 id="credits">Credits:</h2>
<p>We would like to thank Barbara Frezza for her role as official chef
of the contest. Landon Noll and Larry Bassel appreciated the opportunity
to serve as official taste testers. Yummo!</p>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 1992,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-1992---the-9th-ioccc"><a name=inventory></a><a name=1992></a>Winning
Entries of 1992 - The 9th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="1992/ioccc.1992.tar.bz2">1992 entry source</a></p>
<ul>
<li><a href="1992/adrian/index.html">1992/adrian</a> - Most
Educational</li>
<li><a href="1992/albert/index.html">1992/albert</a> - Most Useful
Program</li>
<li><a href="1992/ant/index.html">1992/ant</a> - Best Utility</li>
<li><a href="1992/buzzard.1/index.html">1992/buzzard.1</a> - Most
Obfuscated Algorithm</li>
<li><a href="1992/buzzard.2/index.html">1992/buzzard.2</a> - Best
Language Tool</li>
<li><a href="1992/gson/index.html">1992/gson</a> - Most Humorous
Output</li>
<li><a href="1992/imc/index.html">1992/imc</a> - Best Output</li>
<li><a href="1992/kivinen/index.html">1992/kivinen</a> - Best X
Program</li>
<li><a href="1992/lush/index.html">1992/lush</a> - Worst Abuse of the C
Preprocessor</li>
<li><a href="1992/marangon/index.html">1992/marangon</a> - Best
Game</li>
<li><a href="1992/nathan/index.html">1992/nathan</a> - Worst Abuse of
the Rules</li>
<li><a href="1992/vern/index.html">1992/vern</a> - Best of Show</li>
<li><a href="1992/westley/index.html">1992/westley</a> - Best Small
Program</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+241
View File
@@ -0,0 +1,241 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>1993 - The 10th IOCCC</title>
<meta name="description" content="IOCCC Year 1993">
<meta name="keywords" content="IOCCC, 1993, IOCCC 1993, IOCCC entry, The 10th IOCCC">
</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>1993 - The 10th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../1992/index.html">&larr; 1992</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../1994/index.html">1994 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="tenth-international-obfuscated-c-code-contest">Tenth
International Obfuscated C Code Contest</h1>
<p>Look at the README.md file for the given winning entry for
information 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 Makefiles
and/or README.md files for details.</p>
<p>Read over the Makefile and/or README.md files 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>
<p>Name and address information are separated from the actual program
prior to judging. This eliminates any chance that we would bias our
judging for/against any person or group.</p>
<p>This year was the first year that ANSI C was the default. Use of
classic K&amp;R C was allowed so long as ANSI C compilers could still
compile the entry. If you do not have an ANSI C compiler, you may not be
able to compile the winners, sorry!</p>
<h2 id="a-few-notes-regarding-future-contests">A few notes regarding
future contests:</h2>
<p>Be sure to wait until the 1994 rules are posted before submitting
entries. Rules differ from year to year, sometimes in significant
ways.</p>
<p>In 1994, we will retract 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>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>
<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>
<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>
<h3 id="credits">Credits:</h3>
<p>We would like to thank Barbara Frezza for her role as official chef
of the contest. Landon Noll and Larry Bassel appreciated the opportunity
to serve as official taste testers. And as usual, the food was
excellent.</p>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 1993,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-1993---the-10th-ioccc"><a name=inventory></a><a name=1993></a>Winning
Entries of 1993 - The 10th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="1993/ioccc.1993.tar.bz2">1993 entry source</a></p>
<ul>
<li><a href="1993/ant/index.html">1993/ant</a> - Best Utility</li>
<li><a href="1993/cmills/index.html">1993/cmills</a> - Bill Gates
Award</li>
<li><a href="1993/dgibson/index.html">1993/dgibson</a> - Best Abuse of
the C Preprocessor</li>
<li><a href="1993/ejb/index.html">1993/ejb</a> - Best Obfuscated
Algorithm</li>
<li><a href="1993/jonth/index.html">1993/jonth</a> - Most Obfuscated X
Program</li>
<li><a href="1993/leo/index.html">1993/leo</a> - Best Game</li>
<li><a href="1993/lmfjyh/index.html">1993/lmfjyh</a> - Most Versatile
Source</li>
<li><a href="1993/plummer/index.html">1993/plummer</a> - Best One
Liner</li>
<li><a href="1993/rince/index.html">1993/rince</a> - Most Well
Rounded</li>
<li><a href="1993/schnitzi/index.html">1993/schnitzi</a> - Obfuscated
Intelligence Award</li>
<li><a href="1993/vanb/index.html">1993/vanb</a> - Most Irregular
Expression</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+301
View File
@@ -0,0 +1,301 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>1994 - The 11th IOCCC</title>
<meta name="description" content="IOCCC Year 1994">
<meta name="keywords" content="IOCCC, 1994, IOCCC 1994, IOCCC entry, The 11th IOCCC">
</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>1994 - The 11th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../1993/index.html">&larr; 1993</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../1995/index.html">1995 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="eleventh-international-obfuscated-c-code-contest">Eleventh
International Obfuscated C Code Contest</h1>
<p>Look at the README.md file for the given winning entry for
information 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>
<p>Name and address information are separated from the actual program
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 winners
found new and interesting abuses of the rules. Next year’s rules will
change due to these (<a href="smr/README.md">smr</a> and <a
href="dodsond2/README.md">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
possibly expand or reshape the contest.</p>
<p>The ideal 3rd judge would have all of the following:</p>
<ul>
<li>thorough knowledge of the C language (ANSI and K&amp;R)</li>
<li>thorough knowledge of common C libs (libc, libm, curses, …)</li>
<li>reasonable written communication skills (able to write README.md
files)</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>
</ul>
<p>Any of the following, though not required, would be a plus:</p>
<ul>
<li>familiar with portability issues</li>
<li>some <code>/bin/sh</code> experience</li>
<li>some Perl experience</li>
<li>some C++ experience</li>
<li>some experience with low-level X11 programming</li>
<li>attends USENIX conferences on a regular basis</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>
<pre><code>judges@toad.com (use the Subject: 3rd judge)</code></pre>
<p>Include in your message:</p>
<ul>
<li>Your name, address, email address and phone number</li>
<li>Why would you want to be an IOCCC judge?</li>
<li>How well do you match each of the above qualifications?</li>
<li>What special skills would you bring to the team?</li>
</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>
<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 winners 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>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>
<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.
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>
<h2 id="credits">Credits</h2>
<p>We would like to thank Barbara Frezza for her role as official chef
of the contest. Landon 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>
<!-- 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>
<ul>
<li><a href="1994/dodsond1/index.html">1994/dodsond1</a> - Best
Game</li>
<li><a href="1994/dodsond2/index.html">1994/dodsond2</a> - Most
Obfuscated Packaging</li>
<li><a href="1994/horton/index.html">1994/horton</a> - Best Utility</li>
<li><a href="1994/imc/index.html">1994/imc</a> - Most Obfuscated
Algorithm</li>
<li><a href="1994/ldb/index.html">1994/ldb</a> - Best One-liner</li>
<li><a href="1994/schnitzi/index.html">1994/schnitzi</a> - Best
Layout</li>
<li><a href="1994/shapiro/index.html">1994/shapiro</a> - Most Well
Rounded Obfuscation</li>
<li><a href="1994/smr/index.html">1994/smr</a> - Worst Abuse of the
Rules</li>
<li><a href="1994/tvr/index.html">1994/tvr</a> - Best X11 Program</li>
<li><a href="1994/weisberg/index.html">1994/weisberg</a> - Best Short
Program</li>
<li><a href="1994/westley/index.html">1994/westley</a> - Worst Abuse of
the C Preprocessor</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+297
View File
@@ -0,0 +1,297 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>1995 - The 12th IOCCC</title>
<meta name="description" content="IOCCC Year 1995">
<meta name="keywords" content="IOCCC, 1995, IOCCC 1995, IOCCC entry, The 12th IOCCC">
</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>1995 - The 12th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../1994/index.html">&larr; 1994</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../1996/index.html">1996 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="twelfth-international-obfuscated-c-code-contest">Twelfth
International Obfuscated C Code Contest</h1>
<p>Look at the README.md file for the given winning entry for
information on how to compile and 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 <code>Author's remarks</code> section for even more
details.</p>
<p>The IOCCC has an official home page, <a href="https://www.ioccc.org"
class="uri">https://www.ioccc.org</a>, which contains previous winning
entries, information about the judges, announcements and much more.</p>
<p>Use <code>make</code> to compile entries. It is possible that on BSD
or non-Unix systems the <code>Makefile</code> needs to be changed. See
the <code>Makefile</code> for details.</p>
<p>Read over the <code>Makefile</code> 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>
<p>This year <a href="http://www.malhar.net/sriram/">Sriram
Srinivasan</a> joined the judging.</p>
<p>The moderator of <a
href="https://groups.google.com/g/comp.unix.wizards">comp.unix.wizards</a>
did not feel that the IOCCC was “wizardly” enough to be posted to
comp.unix.wizards so we will no longer post the winners to this
newsgroup - we’ll let you the reader decide for yourself the wizardry of
these entries.</p>
<p>This year there were several people who won more than once and
several <a href="/winners.html">previous winners</a> as well. The
judging was done without knowledge of the names of the submitters -
multiple winners were a coincidence. Since we tend to discount entries
that are similar to previous winners, these people had to come with
original ideas to stay in the winners circle.</p>
<p>We wish to thank <a
href="https://catalogs.rutgers.edu/generated/nb-grad_0305/pg20199.html">CAIP
at Rutgers University</a> for the use of their machines.</p>
<h2 id="a-few-notes-regarding-future-contests">A few notes regarding
future contests</h2>
<p>Due to changes in the <a
href="https://www.usenix.org/conferences/all">USENIX conference</a>
calendar, the <a href="/years.html#1996">1996 contest</a> will be
delayed. Because there will be no Summer 1996 USENIX conference, the
1996 IOCCC winners will be announced at the Jan 1997 USENIX
conference.</p>
<p>The 1996 contest will not open until sometime in October 1996, and
will close sometime around the end of December 1996. The <a
href="/1996/rules.txt">rules for the 1996 contest</a> have not been
formed at this time and are not expected to be ready for distribution
until late September 1996.</p>
<p>Be sure to wait until the <a href="/1996/rules.txt">1996 rules</a>
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>
<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>
<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>
<h2 id="credits">Credits</h2>
<p>We would like to thank Barbara Frezza for her role as official chef
of the contest. Landon Noll, Larry Bassel and Sriram Srinivasan
appreciated the opportunity to serve as official taste testers. And as
usual, the food was excellent. The official menus of the 1995 Obfuscated
C Contest dinners were:</p>
<h3 id="session-one">Session One:</h3>
<p>Antipasti: Crudites, olive selection, pickles, cheese selection Soup:
Homemade mushroom and green onion soup Salad: artichoke, red bell
peppers, Italian onions, cucumbers and Greek olives with mustard
vinaigrette Main Course: Pizzas, with a variety of toppings Dessert:
Chocolate torte</p>
<h3 id="session-two">Session Two:</h3>
<p>Antipasti: crudites, olives, roasted red peppers, cheese selection
Salad: Mixed greens with vinaigrette Main Course: Spaghetti with tomato
sauce containing mushrooms and black olives selection of hot and mild
Italian sausages Bread: Fresh French bread Dessert: Cookie selection,
featuring chocolate chocolate chip cookies and chocolate butter
cookies</p>
<h3 id="session-three">Session Three</h3>
<p>Antipasti: Crudites, olive selection Salad: Mixed greens with mustard
vinaigrette Main Course: Broiled salmon with lemon pepper mayonnaise,
chard, mixture of white and wild rices Bread: Cheese bread with herbs
Dessert: Chocolate cheesecake (Courtesy of Elizabeth Watson)</p>
<h3 id="session-four">Session Four:</h3>
<p>Antipasti: Crudites, olive selection, roasted red peppers, cheese
selection Bread: Sourdough Salad: Mixed spring greens with flowers, and
mustard vinaigrette Main Course: Surf and Turf–Grilled steaks of salmon
and New York steak grilled vegetables–onions, peppers, portobello
mushrooms wild rice Dessert: Chocolate mousse</p>
<h3 id="session-five">Session Five:</h3>
<p>Antipasti: Crudites, olive selection, pickles Salad: Mixed spring
greens with mustard vinaigrette Main Course: Linguini with a cream sauce
of shiitake mushrooms and smoked salmon Bread: Garlic bread Dessert:
Flour-less chocolate torte</p>
<h3 id="session-six">Session Six:</h3>
<p>Antipasti: Carrot and celery sticks with cheese spread, olive
selection, pickles Bread: Focaccia with black olives and mozzarella
cheeses Salad: Mixed spring greens with flowers and mustard vinaigrette
Soup: Homemade butternut squash soup with mushrooms Main Course: Cracked
Dungeness crab with lemon mayonnaise, broccoli, mixture of white and
brown rice Dessert: Key lime pie</p>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 1995,2023, Landon Curt Noll, Larry Bassel, Sriram
Srinivasan. 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-1995---the-12th-ioccc"><a name=inventory></a><a name=1995></a>Winning
Entries of 1995 - The 12th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="1995/ioccc.1995.tar.bz2">1995 entry source</a></p>
<ul>
<li><a href="1995/cdua/index.html">1995/cdua</a> - Best Output</li>
<li><a href="1995/dodsond1/index.html">1995/dodsond1</a> - Most
Humorous</li>
<li><a href="1995/dodsond2/index.html">1995/dodsond2</a> - Best
Game</li>
<li><a href="1995/esde/index.html">1995/esde</a> - Interesting
Algorithm</li>
<li><a href="1995/garry/index.html">1995/garry</a> - Best Utility</li>
<li><a href="1995/heathbar/index.html">1995/heathbar</a> - Best
Layout</li>
<li><a href="1995/leo/index.html">1995/leo</a> - Best Use of
Obfuscation</li>
<li><a href="1995/makarios/index.html">1995/makarios</a> - Best Short
Program</li>
<li><a href="1995/savastio/index.html">1995/savastio</a> - Most
Obfuscated Syntax</li>
<li><a href="1995/schnitzi/index.html">1995/schnitzi</a> - Best One
Liner</li>
<li><a href="1995/spinellis/index.html">1995/spinellis</a> - Abusing The
Rules</li>
<li><a href="1995/vanschnitz/index.html">1995/vanschnitz</a> - Worst
Abuse of the C Preprocessor and Most Likely to Amaze</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+263
View File
@@ -0,0 +1,263 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>1996 - The 13th IOCCC</title>
<meta name="description" content="IOCCC Year 1996">
<meta name="keywords" content="IOCCC, 1996, IOCCC 1996, IOCCC entry, The 13th IOCCC">
</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>1996 - The 13th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../1995/index.html">&larr; 1995</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../1998/index.html">1998 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="thirteenth-international-obfuscated-c-code-contest">Thirteenth
International Obfuscated C Code Contest</h1>
<h2 id="standard-ioccc-stuff">Standard IOCCC stuff</h2>
<p>Look at the README.md file for the given winning entry for
information 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>The IOCCC has an official home page: <a href="https://www.ioccc.org"
class="uri">https://www.ioccc.org</a></p>
<p>containing previous winning entries, information about the judges,
announcements and much more.</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>
<h2 id="where-are-larry-bassel-and-barbara-frezza">Where are Larry
Bassel and Barbara Frezza?</h2>
<p>It is not true that Larry Bassel avoided the 13th IOCCC on grounds of
superstition! Larry (as well as Landon) is fond of prime numbers. Larry
is so fond of prime numbers that he decided to become a graduate student
in number theory at UC San Diego. For this reason Larry decided to sit
out this year and plans to be back next year.</p>
<p>Barbara Frezza also went to San Diego to enter into law school at the
same time. Her cooking in the role of official chef was sorely missed.
We look forward to her return to the contest next year as well.</p>
<p>Both Larry and Barbara have taken important new steps in their lives
and we wish them the best. When it is all over, Larry will be able to
produce obfuscated mathematical proofs, and Barbara will be able
deobfuscate the many legal obfuscations. :-)</p>
<h2 id="remarks-on-some-of-the-entries">Remarks on some of the
entries</h2>
<p>This year, <a
href="https://www.ioccc.org/winners.html#Jens_Schweikhardt">Jens
Schweikhardt</a> won 3 times … a new IOCCC record. Meanwhile, <a
href="https://www.ioccc.org/winners.html#Brian_Westley">Brian
Westley</a> came up with his 8th winning entry, twice the number of the
next highest count. But with people like Schweikhardt around, this lead
could fall fast.</p>
<p>As we stated in the <a href="guidelines.txt">guidelines</a>, the
names of the winners are as much news to us as they are to you because
we keep authorship separate from rest of the entry. Some people have it,
we guess!</p>
<p>There were a few very good entries that might have won if it were not
for the fact that they didn’t work. If you didn’t win, but think you had
a chance: test your program, fix it and submit it next year!</p>
<h2 id="a-few-notes-regarding-future-contests">A few notes regarding
future contests</h2>
<p>There will be no 1997 contest.</p>
<p>The next contest will not open until sometime in March 1998, and will
close sometime around the end of May 1998. The rules for the 1998
contest have not been formed at this time and are not expected to be
ready for distribution until late February 1998.</p>
<p>So what happened to 1997? Well the next USENIX Technical Conference
will be held Jun 15-19, 1998 (in New Orleans, US). The 18 month span
between conferences will cause the IOCCC to skip over 1997.</p>
<p>Be sure to wait until the 1998 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>
<pre><code>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>
<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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 1997,2023, Landon Curt Noll and Sriram Srinivasan. 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-1996---the-13th-ioccc"><a name=inventory></a><a name=1996></a>Winning
Entries of 1996 - The 13th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="1996/ioccc.1996.tar.bz2">1996 entry source</a></p>
<ul>
<li><a href="1996/august/index.html">1996/august</a> - Best of Show</li>
<li><a href="1996/dalbec/index.html">1996/dalbec</a> - Best Numerical
Obfuscation</li>
<li><a href="1996/eldby/index.html">1996/eldby</a> - Best Output</li>
<li><a href="1996/gandalf/index.html">1996/gandalf</a> - Best
Layout</li>
<li><a href="1996/huffman/index.html">1996/huffman</a> - Best Obfuscated
Character Set Utility</li>
<li><a href="1996/jonth/index.html">1996/jonth</a> - Best X11 Entry</li>
<li><a href="1996/rcm/index.html">1996/rcm</a> - Best RFC
Obfuscation</li>
<li><a href="1996/schweikh1/index.html">1996/schweikh1</a> - Worst Abuse
of the C Preprocessor</li>
<li><a href="1996/schweikh2/index.html">1996/schweikh2</a> - Best
Algorithm</li>
<li><a href="1996/schweikh3/index.html">1996/schweikh3</a> - Best
Utility</li>
<li><a href="1996/westley/index.html">1996/westley</a> - Best One
Liner</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+304
View File
@@ -0,0 +1,304 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>1998 - The 14th IOCCC</title>
<meta name="description" content="IOCCC Year 1998">
<meta name="keywords" content="IOCCC, 1998, IOCCC 1998, IOCCC entry, The 14th IOCCC">
</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>1998 - The 14th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../1996/index.html">&larr; 1996</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../2000/index.html">2000 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="fourteenth-international-obfuscated-c-code-contest">Fourteenth
International Obfuscated C Code Contest</h1>
<h2 id="standard-ioccc-stuff">Standard IOCCC stuff</h2>
<p>Look at the README.md file for the given winning entry for
information 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>The IOCCC has its own domain. The IOCCC has an official home page is
now: <a href="https://www.ioccc.org"
class="uri">https://www.ioccc.org</a>.</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>
<p>Some ANSI C compilers are not quite as good as they should be. If
yours is lacking, you may need to compile using gcc instead of your
local compiler.</p>
<h2 id="new-judges">New Judges</h2>
<p>Larry Bassel is now a graduate student in number theory at UC San
Diego. Barbara Frezza also went to San Diego to enter into law school at
the same time. Her cooking in the role of official chef was sorely
missed. Both Larry and Barbara have taken important new steps in their
lives. We wish them the best.</p>
<p>Landon was unable to contact Sriram Srinivasan at the start of the
1998 IOCCC season. Having not heard from Sriram, Landon put out a call
for new IOCCC judges. A number of excellent people applied.</p>
<p>Landon selected Leonid A. Broukhis, a two time IOCCC winner, as a
co-judge. Landon and Leo together selected Jeremy Horn and Peter
Seebach. The four judges (<a href="https://www.ioccc.org/judges.html"
class="uri">https://www.ioccc.org/judges.html</a>) together worked
thru-out the 1998 IOCCC season.</p>
<h3 id="note-about-judges">2023 note about judges:</h3>
<p>The number of judges now is only 2, Landon Curt Noll and Leonid A.
Broukhis.</p>
<h2 id="remarks-on-some-of-the-entries">Remarks on some of the
entries</h2>
<p>This year, <a
href="https://www.ioccc.org/winners.html#Jens_Schweikhardt">Jens
Schweikhardt</a> won 3 times … AGAIN! He is the only person who was able
to do this, let alone do it in two contests in a row. <a
href="https://www.ioccc.org/winners.html#Bas_de_Bakker">Bas de
Bakker</a> and <a
href="https://www.ioccc.org/winners.html#J_David_Lowe">David Lowe</a>
won twice this year as well.</p>
<p>As we stated in the <a href="guidelines.txt">guidelines</a>, the
names of the winners are as much news to us as they are to you because
we keep authorship separate from rest of the entry. Some people have it,
we guess!</p>
<p>There were a few very good entries that might have won if it were not
for the fact that they didn’t work. If you didn’t win, but think you had
a chance: test your program, fix it and submit it next year!</p>
<p>This year we awarded some outstanding entries. We recommend that you
look at all of the winners. The list of winners is a bit too long to say
something about every winner. On the other hand a partial mention of a
few is in order:</p>
<ul>
<li>Audiences were very impressed with the Best of Show entry.</li>
<li>The judges were amused that for the first time we received an entry
that caused gcc to give the assembler bad input in some cases.</li>
<li>The poot entries got a good laugh from the USENIX IOCCC BOF (Birds
Of a Feather) crowd.</li>
<li>Those with Functional Programming knowledge as well as those
impressed with CPP code expansion liked the entry that translated lambda
expressions into combinator expressions.</li>
<li>Logic minded folks will get somewhat twisted up while following the
flow of the <a href="1998/schnitzi/README.md">Best Flow Control
entry</a>.</li>
<li>Those who know the PostScript language will be ‘bemused’ by the <a
href="bas1/README.md">Best Encapsulation entry</a>.</li>
</ul>
<p>There were some outstanding entries that did not win. Unfortunately
some very good entries lost because they:</p>
<ul>
<li>depended too much on non-portable side effects in expressions;</li>
<li>depended too much on a particular byte order;</li>
<li>required the use of a special script, data file or pseudo-machine
language that was not supplied with the entry.</li>
</ul>
<p>We hope the authors of some of those entries will fix and re-submit
them for the next IOCCC.</p>
<h2 id="there-was-no-1997-contest">There was no 1997 contest</h2>
<p>So what happened to 1997? There was no summer USENIX Technical
Conference. The Technical Conference was held Jun 15-19, 1998 instead …
18 months later than the 1996 summer USENIX Technical Conference. In
addition we had to select some new IOCCC judges. As a result the IOCCC
skipped over 1997.</p>
<h2 id="final-comments">Final Comments</h2>
<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>
<pre><code>questions@ioccc.org</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>
<p>You must include the words ‘ioccc question’ in the subject of your
email message when sending email to the judges.</p>
<p>The next IOCCC is planned to start towards the end of 1999. Watch <a
href="https://www.ioccc.org" class="uri">https://www.ioccc.org</a></p>
<p>for news of the next contest.</p>
<h2 id="final-comments-1">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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 1999,2023, Landon Curt Noll, Jeremy Horn, Peter Seebach
and Leonid A. Broukhis. 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-1998---the-14th-ioccc"><a name=inventory></a><a name=1998></a>Winning
Entries of 1998 - The 14th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="1998/ioccc.1998.tar.bz2">1998 entry source</a></p>
<ul>
<li><a href="1998/banks/index.html">1998/banks</a> - Best of Show</li>
<li><a href="1998/bas1/index.html">1998/bas1</a> - Best
Encapsulation</li>
<li><a href="1998/bas2/index.html">1998/bas2</a> - Best Small
Program</li>
<li><a href="1998/chaos/index.html">1998/chaos</a> - Best Object
Orientation</li>
<li><a href="1998/df/index.html">1998/df</a> - Best Data Hiding</li>
<li><a href="1998/dlowe/index.html">1998/dlowe</a> - Best Utility</li>
<li><a href="1998/dloweneil/index.html">1998/dloweneil</a> - Most
Fun</li>
<li><a href="1998/dorssel/index.html">1998/dorssel</a> - Obsolescent
Feature</li>
<li><a href="1998/fanf/index.html">1998/fanf</a> - Most Obfuscated
Translator</li>
<li><a href="1998/schnitzi/index.html">1998/schnitzi</a> - Best Flow
Control</li>
<li><a href="1998/schweikh1/index.html">1998/schweikh1</a> - CPP
Abuse</li>
<li><a href="1998/schweikh2/index.html">1998/schweikh2</a> - Most
Erratic Behavior</li>
<li><a href="1998/schweikh3/index.html">1998/schweikh3</a> - Most Space
Efficient</li>
<li><a href="1998/tomtorfs/index.html">1998/tomtorfs</a> - Best
Self-Documenting</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+271
View File
@@ -0,0 +1,271 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2000 - The 15th IOCCC</title>
<meta name="description" content="IOCCC Year 2000">
<meta name="keywords" content="IOCCC, 2000, IOCCC 2000, IOCCC entry, The 15th IOCCC">
</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 - The 15th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../1998/index.html">&larr; 1998</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../2001/index.html">2001 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="fifteenth-international-obfuscated-c-code-contest">Fifteenth
International Obfuscated C Code Contest</h1>
<h2 id="standard-ioccc-stuff">Standard IOCCC stuff</h2>
<p>Look at the README.md file for the given winning entry for
information 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
non-Unix / non-Linux 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
#define).</p>
<p>Some ANSI C compilers are not quite as good as they should be. If
yours is lacking, you may need to compile using gcc instead of your
local compiler.</p>
<h2 id="new-judge">New Judge</h2>
<p>The judges were unable to contact Jeremy Horn for judging the 2000
contest.</p>
<p>As a result, Simon Cooper: <a href="http://www.sfik.com/"
class="uri">http://www.sfik.com/</a></p>
<p>joined our team. Simon is well known for being a co-author of the 2nd
edition of the Building Internet Firewalls book.</p>
<h2 id="remarks-on-some-of-the-entries">Remarks on some of the
entries</h2>
<p>There were some outstanding entries that did not win. Unfortunately
some very good entries lost because they:</p>
<ul>
<li>depended too much on non-portable side effects in expressions;</li>
<li>depended too much on a particular byte order;</li>
<li>required the use of a special script, data file or pseudo-machine
language that was not supplied with the entry.</li>
</ul>
<p>We hope the authors of some of those entries will fix and re-submit
them for the next IOCCC.</p>
<p>We believe you will be impressed with this year’s winners. The <a
href="jarijyrki/README.md">Best of Show</a> is a fine example of compact
obfuscation. But don’t ignore the shorter winners. The <a
href="natori/README.md">Best Small Program</a>, <a
href="briddlebane/README.m">Best Abuse of User</a> and <a
href="tomx/README.md">Most Complete Program</a> are well worth studying
in detail.</p>
<p>The <a href="dlowe/README.md">Worst Abuse of the Rules</a> is
technically allowed by the rules. We gave it an award this year, but
don’t assume you can get away with using it next time … :-)</p>
<p>Speaking of time, be sure to check out the <a
href="rince/README.md">Astronomically Obfuscated</a> and the <a
href="schneiderwent/README.md">Most Timely Output</a>.</p>
<h2 id="there-was-no-1999-contest">There was no 1999 contest</h2>
<p>So what happened to 1999? Landon Curt Noll was scheduled to take a
vacation from the IOCCC this year. The remaining judges were unable to
contact Jeremy Horn, so the IOCCC stalled.</p>
<p>But thanks to Landon’s returning early from his IOCCC vacation
(Landon will take a full IOCCC vacation during some other year), Simon
Cooper joining the IOCCC judging team as well as the hard work of Peter
Seebach and Leonid A. Broukhis the judging was completed in Dec
2000.</p>
<p>It was decided that the 15th contest would be the year 2000 contest
(the year the judging completed) rather than year 1999 (the initial
scheduled start of the contest). That is why there is no 1999
contest.</p>
<p><strong>NOTE</strong>: The above has been mentioned in an Amici
Curiae for the DeCSS case. See <a
href="https://web.archive.org/web/20231021211330/http://cryptome.org/mpaa-v-2600-bac.htm">BRIEF
OF AMICI CURIAE N SUPPORT OF APPELLANTS AND REVERSAL ..</a>.</p>
<h2 id="final-comments">Final Comments</h2>
<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>
<pre><code>questions@ioccc.org</code></pre>
<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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 2000,2023, Landon Curt Noll, Peter Seebach and Leonid
A. Broukhis. 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-2000---the-15th-ioccc"><a name=inventory></a><a name=2000></a>Winning
Entries of 2000 - The 15th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="2000/ioccc.2000.tar.bz2">2000 entry source</a></p>
<ul>
<li><a href="2000/anderson/index.html">2000/anderson</a> - Best Use of
Flags</li>
<li><a href="2000/bellard/index.html">2000/bellard</a> - Most Specific
Output</li>
<li><a href="2000/bmeyer/index.html">2000/bmeyer</a> - Best Utility</li>
<li><a href="2000/briddlebane/index.html">2000/briddlebane</a> - Best
Abuse of User</li>
<li><a href="2000/dhyang/index.html">2000/dhyang</a> - Best Layout</li>
<li><a href="2000/dlowe/index.html">2000/dlowe</a> - Worst Abuse of the
Rules</li>
<li><a href="2000/jarijyrki/index.html">2000/jarijyrki</a> - Best of
Show</li>
<li><a href="2000/natori/index.html">2000/natori</a> - Best Small
Program</li>
<li><a href="2000/primenum/index.html">2000/primenum</a> - Best Abuse of
CPP</li>
<li><a href="2000/rince/index.html">2000/rince</a> - Astronomically
Obfuscated</li>
<li><a href="2000/robison/index.html">2000/robison</a> - Best game</li>
<li><a href="2000/schneiderwent/index.html">2000/schneiderwent</a> -
Most Timely Output</li>
<li><a href="2000/thadgavin/index.html">2000/thadgavin</a> - Most
Portable Output</li>
<li><a href="2000/tomx/index.html">2000/tomx</a> - Most Complete
Program</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+260
View File
@@ -0,0 +1,260 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2001 - The 16th IOCCC</title>
<meta name="description" content="IOCCC Year 2001">
<meta name="keywords" content="IOCCC, 2001, IOCCC 2001, IOCCC entry, The 16th IOCCC">
</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>2001 - The 16th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../2000/index.html">&larr; 2000</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../2004/index.html">2004 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="sixteenth-international-obfuscated-c-code-contest">Sixteenth
International Obfuscated C Code Contest</h1>
<h2 id="standard-ioccc-stuff">Standard IOCCC stuff</h2>
<p>Look at the README.md file for the given winning entry for
information 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>The IOCCC has a web site and now has a number of international
mirrors. The primary site can be found at <a
href="https://www.ioccc.org" class="uri">https://www.ioccc.org</a>.</p>
<p>Use <code>make</code> to compile entries. It is possible that on
non-Unix / non-Linux 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>
<p>Some ANSI C compilers are not quite as good as they should be. If
yours is lacking, you may need to compile using gcc instead of your
local compiler.</p>
<h2 id="remarks-on-some-of-the-entries">Remarks on some of the
entries</h2>
<p>There were some outstanding entries that did not win. Unfortunately
some very good entries lost because they:</p>
<ul>
<li>depended too much on non-portable side effects in expressions;</li>
<li>depended too much on a particular byte order;</li>
<li>required the use of a special script, data file or pseudo-machine
language that was not supplied with the entry.</li>
</ul>
<p>We hope the authors of some of those entries will fix and re-submit
them for the next IOCCC.</p>
<p>We believe you will be impressed with this year’s winners. The <a
href="ollinger/README.md">Best of Show</a> is a fine example of
obfuscation. But don’t ignore the other winners! There are games,
programs that speak, ones that compile code and <a
href="2001/anonymous/README.md">one that might run binaries you already
have</a>.</p>
<p>The <a href="bellard/README.md">Best/Worst Abuse of the Rules</a> is
technically allowed by the <a href="rules.txt">rules</a>. This year we
awarded it again, but don’t assume you can get away with using the same
technique next time … :-)</p>
<p>This year there were several repeat winners. This is understating the
achievement a little - <a
href="https://www.ioccc.org/winners.html#Brian_Westley">one person</a>
has won 8 times before! (Please note that judging is done completely
anonymously.)</p>
<h2 id="why-has-it-taken-so-long-to-post-the-winning-source">Why has it
taken so long to post the winning source?</h2>
<p>This is somewhat my (Simon Cooper’s) fault. I do apologize to the
IOCCC community for this! Judging does take quite a lot of time, and I
over-committed myself several times this year. Without divulging too
much, we do look at and work out what every entry does.</p>
<h2 id="final-comments">Final Comments</h2>
<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>
<pre><code>questions@ioccc.org</code></pre>
<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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 2001,2002,2023, Landon Curt Noll, Peter Seebach and
Leonid A. Broukhis, 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-2001---the-16th-ioccc"><a name=inventory></a><a name=2001></a>Winning
Entries of 2001 - The 16th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="2001/ioccc.2001.tar.bz2">2001 entry source</a></p>
<ul>
<li><a href="2001/anonymous/index.html">2001/anonymous</a> -
Dishonorable mention</li>
<li><a href="2001/bellard/index.html">2001/bellard</a> - Best abuse of
the rules</li>
<li><a href="2001/cheong/index.html">2001/cheong</a> - Best short
program</li>
<li><a href="2001/coupard/index.html">2001/coupard</a> - Most obfuscated
sound</li>
<li><a href="2001/ctk/index.html">2001/ctk</a> - Worst Driver</li>
<li><a href="2001/dgbeards/index.html">2001/dgbeards</a> - Best AI</li>
<li><a href="2001/herrmann1/index.html">2001/herrmann1</a> - Best abuse
of the C preprocessor</li>
<li><a href="2001/herrmann2/index.html">2001/herrmann2</a> - Most
eye-crossing</li>
<li><a href="2001/jason/index.html">2001/jason</a> - Best Of Show</li>
<li><a href="2001/kev/index.html">2001/kev</a> - Best Curses Game</li>
<li><a href="2001/ollinger/index.html">2001/ollinger</a> - Best of
Show</li>
<li><a href="2001/rosten/index.html">2001/rosten</a> - Best abuse of the
user</li>
<li><a href="2001/schweikh/index.html">2001/schweikh</a> - Best
one-liner</li>
<li><a href="2001/westley/index.html">2001/westley</a> - Best
position-independent code</li>
<li><a href="2001/williams/index.html">2001/williams</a> - Best Graphic
Game</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+254
View File
@@ -0,0 +1,254 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2004 - The 17th IOCCC</title>
<meta name="description" content="IOCCC Year 2004">
<meta name="keywords" content="IOCCC, 2004, IOCCC 2004, IOCCC entry, The 17th IOCCC">
</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>2004 - The 17th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../2001/index.html">&larr; 2001</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../2005/index.html">2005 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="seventeenth-international-obfuscated-c-code-contest">Seventeenth
International Obfuscated C Code Contest</h1>
<h2 id="standard-ioccc-stuff">Standard IOCCC stuff</h2>
<p>Look at the <code>README.md</code> file for the given winner for
information on how to compile the entry 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>The IOCCC has a web site and now has a number of international
mirrors. The primary site can be found at <a
href="https://www.ioccc.org/"
class="uri">https://www.ioccc.org/</a>.</p>
<p>Use <code>make(1)</code> to compile entries. It is possible that on
non-Unix / non-Linux systems the <code>Makefile</code> needs to be
changed. See the <code>Makefile</code> for details.</p>
<p>Read over the <code>Makefile</code> for compile/build issues. Your
system may require certain changes (add or remove a library, add or
remove a <code>#define</code>).</p>
<p>Some ANSI C compilers are not quite as good as they should be. If
yours is lacking, you may need to compile using <code>gcc</code> instead
of your local compiler.</p>
<h2 id="remarks-on-some-of-the-entries">Remarks on some of the
entries</h2>
<p>We believe you will be impressed with this year’s winners. The <a
href="gavin/gavin.c">Best of Show</a> is a fine example of obfuscation.
But don’t ignore the other winners! There are games, utilities, programs
that output images and a one-liner that is incredibly compact for what
it can do.</p>
<p>The <a href="hibachi/hibachi.c">Best Abuse of the Guidelines</a> is
technically allowed by the rules. This year we allowed it due to the
functionality of the program. This entry is one of the easiest to read!
Don’t assume you can win using similar techniques next time … :-)</p>
<p>This year a <a href="/winners.html#Daniel_Vik">single person</a> won
two awards! We also had repeat winners with their 6th, 4th and 2nd
winning entries this year! (Please note that judging is done completely
anonymously. Be warned that we may disqualify entries that reveal the
identity of the submitter.)</p>
<h3 id="remarks-on-some-losing-entries">Remarks on some losing
entries</h3>
<p>There were some outstanding entries that did not win. Unfortunately
some very good entries lost because they:</p>
<ul>
<li>depended too much on non-portable side effects in expressions;
and/or</li>
<li>depended too much on a particular byte order; and/or</li>
<li>required the use of a special script, data file or pseudo-machine
language that was not supplied with the entry.</li>
</ul>
<p>We hope the authors of some of those entries will fix and re-submit
them for the next IOCCC.</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: 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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 2001,2004,2023, Landon Curt Noll, Peter Seebach and
Leonid A. Broukhis. 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-2004---the-17th-ioccc"><a name=inventory></a><a name=2004></a>Winning
Entries of 2004 - The 17th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="2004/ioccc.2004.tar.bz2">2004 entry source</a></p>
<ul>
<li><a href="2004/anonymous/index.html">2004/anonymous</a> - “Best use
of”“Precious”” Lines”</li>
<li><a href="2004/arachnid/index.html">2004/arachnid</a> - Best use of
Vision</li>
<li><a href="2004/burley/index.html">2004/burley</a> - Best Calculated
Risk</li>
<li><a href="2004/gavare/index.html">2004/gavare</a> - Best Use of Light
and Spheres</li>
<li><a href="2004/gavin/index.html">2004/gavin</a> - Best of Show</li>
<li><a href="2004/hibachi/index.html">2004/hibachi</a> - Best Abuse of
the Guidelines</li>
<li><a href="2004/hoyle/index.html">2004/hoyle</a> - Most Functional
Output</li>
<li><a href="2004/jdalbec/index.html">2004/jdalbec</a> - Best Abuse of
the Periodic Table</li>
<li><a href="2004/kopczynski/index.html">2004/kopczynski</a> - Best
One-Liner</li>
<li><a href="2004/newbern/index.html">2004/newbern</a> - Best Font
Engine</li>
<li><a href="2004/omoikane/index.html">2004/omoikane</a> - Best
Utility</li>
<li><a href="2004/schnitzi/index.html">2004/schnitzi</a> - Best Non-Use
of Curses</li>
<li><a href="2004/sds/index.html">2004/sds</a> - Best Abuse of
Indentation</li>
<li><a href="2004/vik1/index.html">2004/vik1</a> - Best X11 Game</li>
<li><a href="2004/vik2/index.html">2004/vik2</a> - Best Abuse of
CPP</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+278
View File
@@ -0,0 +1,278 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2005 - The 18th IOCCC</title>
<meta name="description" content="IOCCC Year 2005">
<meta name="keywords" content="IOCCC, 2005, IOCCC 2005, IOCCC entry, The 18th IOCCC">
</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>2005 - The 18th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../2004/index.html">&larr; 2004</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../2006/index.html">2006 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="eighteenth-international-obfuscated-c-code-contest">Eighteenth
International Obfuscated C Code Contest</h1>
<h2 id="standard-ioccc-stuff">Standard IOCCC stuff</h2>
<p>Look at the <code>README.md</code> file for the given winner for
information on how to compile the entry 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>The IOCCC has a web site and now has a number of international
mirrors. The primary site can be found at <a
href="https://www.ioccc.org/"
class="uri">https://www.ioccc.org/</a>.</p>
<p>Use <code>make(1)</code> to compile entries. It is possible that on
non-Unix / non-Linux systems the <code>Makefile</code> needs to be
changed. See the <code>Makefile</code> for details.</p>
<p>This year we included most of the information included by the
submitters in the <code>README.md</code> files.</p>
<p>Read over the <code>Makefile</code> for compile/build issues. Your
system may require certain changes (add or remove a library, add or
remove a <code>#define</code>).</p>
<p>Some ANSI C compilers are not quite as good as they should be. If
yours is lacking, you may need to compile using <code>gcc</code> instead
of your local compiler.</p>
<h2 id="remarks-on-some-of-the-entries">Remarks on some of the
entries</h2>
<p>We believe you will be impressed with this year’s winners.</p>
<p>In particular:</p>
<ul>
<li><p>The <a href="klausler/klausler.c">Abuse of the rules</a> used
local dictionary data to get around the size limit.</p></li>
<li><p>The <a href="vince/vince.c">Most beauteous visuals</a> made
clever use of <code>{}</code>s and whitespace in their source code and
during execution.</p></li>
<li><p>The <a href="vik/vik.c">Most circuitous walk</a> entry is just
amazing.</p></li>
<li><p>The <a href="toledo/toledo.c">Best game</a> makes full use of its
single function.</p></li>
<li><p>The <a href="sykes">Best emulator</a> may allow you to reconnect
to your first <a
href="https://en.wikipedia.org/wiki/Commodore_PET">PET</a>.</p></li>
<li><p>Our <a href="persano/persano.c">Best of Show</a> this year was
simply (or non-simply :-) ) the best!</p></li>
<li><p>(And we need only mention (parenthetically speaking) that the
best use of parenthesis is self reproducing).</p></li>
<li><p>The <a href="jetro/jetro.c">Most sonorous output</a> might
<code>sound</code> :-) like a good idea.</p></li>
<li><p>The <a href="giljade/giljade.c">Best 2D puzzle</a> takes
editorial license with expressions as well as the with the <a
href="https://en.wikipedia.org/wiki/Vi">vi editor</a>.</p></li>
<li><p>The <a href="chia/chia.c">Most ambiguous language</a> winner is
really a C program.</p></li>
<li><p>The <a href="boutines/boutines.c">Most superfluous output</a>
winner is simply <a href="Voronoi">Voronoi</a>-lific!</p></li>
<li><p>Try not to have your sense of good coding offended by the <a
href="timwi/timwi.c">Most discourteous interpreter</a> winner.</p></li>
<li><p>The <a href="mynx/mynx.c">Best use of the www</a> doesn’t include
those letters.</p></li>
<li><p>You will be puzzled by the <a href="anon/anon.c">Best 3D
puzzle</a> winner; we are sure!</p></li>
<li><p>The <a href="aidan/aidan.c">Most ingenious puzzle solution</a>
might puzzle you more while it puzzles out some puzzles: all in a
puzzling way! :-)</p></li>
</ul>
<h3 id="remarks-on-some-of-the-losing-entries">Remarks on some of the
losing entries</h3>
<p>There were some outstanding entries that did not win. Unfortunately
some very good entries lost because they:</p>
<ul>
<li><p>depended too much on non-portable side effects in expressions;
and/or</p></li>
<li><p>depended too much on a particular byte order; and/or</p></li>
<li><p>required the use of a special script, data file or pseudo-machine
language that was not supplied with the entry.</p></li>
</ul>
<p>We hope the authors of some of those entries will fix and resubmit
them for the next IOCCC.</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: 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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 2005,2023, Landon Curt Noll and Leonid A. Broukhis. 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-2005---the-18th-ioccc"><a name=inventory></a><a name=2005></a>Winning
Entries of 2005 - The 18th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="2005/ioccc.2005.tar.bz2">2005 entry source</a></p>
<ul>
<li><a href="2005/aidan/index.html">2005/aidan</a> - Most ingenious
puzzle solution</li>
<li><a href="2005/anon/index.html">2005/anon</a> - Best 3D puzzle</li>
<li><a href="2005/boutines/index.html">2005/boutines</a> - Most
superfluous output</li>
<li><a href="2005/chia/index.html">2005/chia</a> - Most ambiguous
language</li>
<li><a href="2005/giljade/index.html">2005/giljade</a> - Best 2D
puzzle</li>
<li><a href="2005/jetro/index.html">2005/jetro</a> - Most sonorous
output</li>
<li><a href="2005/klausler/index.html">2005/klausler</a> - Abuse of the
rules</li>
<li><a href="2005/mikeash/index.html">2005/mikeash</a> - Best use of
parenthesis</li>
<li><a href="2005/mynx/index.html">2005/mynx</a> - Best use of the
WWW</li>
<li><a href="2005/persano/index.html">2005/persano</a> - Best of
Show</li>
<li><a href="2005/sykes/index.html">2005/sykes</a> - Best Emulator</li>
<li><a href="2005/timwi/index.html">2005/timwi</a> - Most discourteous
interpreter</li>
<li><a href="2005/toledo/index.html">2005/toledo</a> - Best Game</li>
<li><a href="2005/vik/index.html">2005/vik</a> - Most circuitous
walk</li>
<li><a href="2005/vince/index.html">2005/vince</a> - Most beauteous
visuals</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+248
View File
@@ -0,0 +1,248 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2006 - The 19th IOCCC</title>
<meta name="description" content="IOCCC Year 2006">
<meta name="keywords" content="IOCCC, 2006, IOCCC 2006, IOCCC entry, The 19th IOCCC">
</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>2006 - The 19th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../2005/index.html">&larr; 2005</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../2011/index.html">2011 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="nineteenth-international-obfuscated-c-code-contest">Nineteenth
International Obfuscated C Code Contest</h1>
<h2 id="standard-ioccc-stuff">Standard IOCCC stuff</h2>
<p>Look at the README.md file for the given winning entry for
information 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>The IOCCC has a web site and now has a number of international
mirrors. The primary site can be found at,</p>
<blockquote>
<p><a href="https://www.ioccc.org/"
class="uri">https://www.ioccc.org/</a></p>
</blockquote>
<p>Use <code>make</code> to compile entries. It is possible that on
non-Unix / non-Linux systems the Makefile needs to be changed. See the
Makefile for details.</p>
<p>This year we included most of the information included by the
submitters in the README.md files.</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
#define).</p>
<p>Some ANSI C compilers are not quite as good as they should be. If
yours is lacking, you may need to compile using gcc instead of your
local compiler.</p>
<h2 id="remarks-on-some-of-the-entries">Remarks on some of the
entries</h2>
<p>There were some outstanding entries that did not win. Unfortunately
some very good entries lost because they:</p>
<ul>
<li><p>depended too much on non-portable side effects in
expressions;</p></li>
<li><p>depended too much on a particular byte order;</p></li>
<li><p>required the use of a special script, data file or pseudo-machine
language that was not supplied with the entry.</p></li>
</ul>
<p>We hope the authors of some of those entries will fix and re-submit
them for the next IOCCC.</p>
<p>We believe you will be impressed with this year’s winners. The Best
of Show is a fine example of (retro) obfuscation. But don’t ignore the
other winners! There are games, puzzles, puzzle solvers, simulators,
emulators, calculators and graphical and audio tools.</p>
<p>This year a single person won three awards and another two awards!
Many winners won for the first time. (Please note that judging is done
completely anonymously. Be warned that we may disqualify entries that
reveal the identity of the submitter).</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: 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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 2006,2023, Landon Curt Noll and Leonid A. Broukhis. 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-2006---the-19th-ioccc"><a name=inventory></a><a name=2006></a>Winning
Entries of 2006 - The 19th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="2006/ioccc.2006.tar.bz2">2006 entry source</a></p>
<ul>
<li><a href="2006/birken/index.html">2006/birken</a> - EDAMAME
Award</li>
<li><a href="2006/borsanyi/index.html">2006/borsanyi</a> - Most
Useful</li>
<li><a href="2006/grothe/index.html">2006/grothe</a> - Most Obfuscated
Audio</li>
<li><a href="2006/hamre/index.html">2006/hamre</a> - Most
Irrational</li>
<li><a href="2006/meyer/index.html">2006/meyer</a> - Best Game</li>
<li><a href="2006/monge/index.html">2006/monge</a> - Best Compiled
Graphics</li>
<li><a href="2006/night/index.html">2006/night</a> - Best Abuse of
Computation</li>
<li><a href="2006/sloane/index.html">2006/sloane</a> - Homer’’s
Favorite</li>
<li><a href="2006/stewart/index.html">2006/stewart</a> - Best Computed
Graphics</li>
<li><a href="2006/sykes1/index.html">2006/sykes1</a> - Best
Assembler</li>
<li><a href="2006/sykes2/index.html">2006/sykes2</a> - Best One
Liner</li>
<li><a href="2006/toledo1/index.html">2006/toledo1</a> - Best Small
Program</li>
<li><a href="2006/toledo2/index.html">2006/toledo2</a> - Best of
Show</li>
<li><a href="2006/toledo3/index.html">2006/toledo3</a> - Most Portable
Chess Set</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+243
View File
@@ -0,0 +1,243 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2011 - The 20th IOCCC</title>
<meta name="description" content="IOCCC Year 2011">
<meta name="keywords" content="IOCCC, 2011, IOCCC 2011, IOCCC entry, The 20th IOCCC">
</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>2011 - The 20th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../2006/index.html">&larr; 2006</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../2012/index.html">2012 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="twentieth-international-obfuscated-c-code-contest">Twentieth
International Obfuscated C Code Contest</h1>
<h2 id="standard-ioccc-stuff">Standard IOCCC stuff</h2>
<p>Look at the README.md file for the given winning entry for
information 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>The IOCCC has a web site and now has a number of international
mirrors. The primary site can be found at,</p>
<blockquote>
<p><a href="https://www.ioccc.org/"
class="uri">https://www.ioccc.org/</a></p>
</blockquote>
<p>Use <code>make</code> to compile entries. It is possible that on
non-Unix / non-Linux systems the Makefile needs to be changed. See the
Makefile for details.</p>
<p>This year we included most of the information included by the
submitters in the README.md files.</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
#define).</p>
<p>Some ANSI C compilers are not quite as good as they should be. If
yours is lacking, you may need to compile using gcc instead of your
local compiler.</p>
<h2 id="remarks-on-some-of-the-entries">Remarks on some of the
entries</h2>
<p>There were some outstanding entries that did not win. Unfortunately
some very good entries lost because they:</p>
<ul>
<li><p>did not follow the “one program - one file” rule;</p></li>
<li><p>depended too much on 32 bit architectures;</p></li>
<li><p>were more of the “obfuscated math” kind rather than the
“obfuscated C” kind.</p></li>
</ul>
<p>We hope the authors of some of those entries will fix and re-submit
them for the next IOCCC.</p>
<p>We believe you will be impressed with this year’s winners. The Best
of Show is a fine example of character stitching. But don’t ignore the
other winners! There are games, puzzle solvers, utilities, eye candy,
calculators and graphical and audio tools.</p>
<p>This year all winners are different, and there is a winner from a new
country - China! Many winners won for the first time. (Please note that
judging is done completely anonymously. Be warned that we may disqualify
entries that reveal the identity of the submitter).</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: 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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 2012,2023, Landon Curt Noll and Leonid A. Broukhis. 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-2011---the-20th-ioccc"><a name=inventory></a><a name=2011></a>Winning
Entries of 2011 - The 20th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="2011/ioccc.2011.tar.bz2">2011 entry source</a></p>
<ul>
<li><a href="2011/akari/index.html">2011/akari</a> - Best of Show - Most
Shrinkable</li>
<li><a href="2011/blakely/index.html">2011/blakely</a> - Most
devolving</li>
<li><a href="2011/borsanyi/index.html">2011/borsanyi</a> - Best data
utility</li>
<li><a href="2011/dlowe/index.html">2011/dlowe</a> - Most self
deprecating</li>
<li><a href="2011/eastman/index.html">2011/eastman</a> - Best ball</li>
<li><a href="2011/fredriksson/index.html">2011/fredriksson</a> - Most
useful</li>
<li><a href="2011/goren/index.html">2011/goren</a> - Most artistic</li>
<li><a href="2011/hamaji/index.html">2011/hamaji</a> - Best solved
puzzle</li>
<li><a href="2011/hou/index.html">2011/hou</a> - Best self documenting
program</li>
<li><a href="2011/konno/index.html">2011/konno</a> - Best one liner</li>
<li><a href="2011/richards/index.html">2011/richards</a> - Most
surprisingly portable</li>
<li><a href="2011/toledo/index.html">2011/toledo</a> - Best non-chess
game</li>
<li><a href="2011/vik/index.html">2011/vik</a> - Most sound</li>
<li><a href="2011/zucker/index.html">2011/zucker</a> - Most shiny</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+283
View File
@@ -0,0 +1,283 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2012 - The 21st IOCCC</title>
<meta name="description" content="IOCCC Year 2012">
<meta name="keywords" content="IOCCC, 2012, IOCCC 2012, IOCCC entry, The 21st IOCCC">
</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>2012 - The 21st IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../2011/index.html">&larr; 2011</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../2013/index.html">2013 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="twenty-first-international-obfuscated-c-code-contest">Twenty
First International Obfuscated C Code Contest</h1>
<h2 id="standard-ioccc-stuff">Standard IOCCC stuff</h2>
<p>Look at the README.md file for the given winning entry for
information 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>The IOCCC has a web site and now has a number of international
mirrors. The primary site can be found at,</p>
<blockquote>
<p><a href="https://www.ioccc.org/"
class="uri">https://www.ioccc.org/</a></p>
</blockquote>
<p>Use <code>make</code> to compile entries. It is possible that on
non-Unix / non-Linux 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
#define).</p>
<p>Some ANSI C compilers are not quite as good as they should be. If
yours is lacking, you may need to compile using gcc instead of your
local compiler.</p>
<h2 id="remarks-on-some-of-the-entries">Remarks on some of the
entries</h2>
<p>We believe you will be impressed with this year’s winners. We had a
very difficult time picking a single best from among the other winners
because the overall quality of the winners were so high.</p>
<p>This year we selected the top 4 entries for particularly high
honors:</p>
<ul>
<li><p>Gold award - Balanced use of obfuscation</p>
<p>A very extremely subtle and twisted piece of source code! Even if you
start with the zeitak_deobfucate.c source, you will still have a very
challenging time to understand it!</p></li>
<li><p>Silver award - Most elementary use of C</p>
<p>A fun program that could also have won “Best abuse of Ghostscript”
because it managed to create some PDF files that Ghostscript could not
read.</p></li>
<li><p>Bronze award - Best use of cocoa</p>
<p>A picture within a picture is worth more than a thousand (4 byte)
words. :-)</p></li>
<li><p>Honorable mention - Most complex ASCII fluid</p>
<p>When you see this program in action, you too will very likely say <a
href="http://bit.ly/R6ALpK">wow</a> as we did!</p></li>
</ul>
<p>But don’t ignore the other winners! There are games, utilities, eye
candy, calculators and graphical tools to explore.</p>
<p>This year, Yusuke Endoh won with two entries, one of which (endoh1)
won the special Honorable mention award. Eight of the winning entries
were from people who won in previous years.</p>
<p>This year we had a number of winners from Asia. We saw our second
winner from China and first from Korea. We are pleased to see
outstanding entries from areas of the world that have not been active in
past contests. Will we see an upswing of entries from South America,
Africa and Antarctica next year? :-)</p>
<p>Please note that judging is done completely anonymously. Please do
NOT reveal your identity in your source code. In the future we may
disqualify entries that reveal the identity of the submitter!</p>
<p>There were some outstanding entries that did not win. Unfortunately
some very good entries lost because they:</p>
<ul>
<li><p>would take years to execute</p></li>
<li><p>were way way oversize and didn’t even attempt to justify their
excess by a clever abuse of the rules</p></li>
<li><p>obfuscate themselves by simply invoking a complex state
machine</p></li>
<li><p>depend on a single obfuscation trick</p></li>
<li><p>could only be run on a particular vendor’s platform</p></li>
<li><p>were very similar to previous winners</p></li>
<li><p>were based on an overused theme such as yet another fractal
display program</p></li>
<li><p>didn’t work as documented</p></li>
</ul>
<p>We hope the authors of some of those entries will fix and re-submit
them for the next IOCCC.</p>
<p>There is a risk in submitting an entry that is similar to a well used
theme by previous winners. Previous winners set a very high bar. A new
winner must not only compete against other submissions form the current
year, they must also excel over similar winners in some particularly
impressive way.</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: 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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 2012,2023, Landon Curt Noll and Leonid A. Broukhis. 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-2012---the-21st-ioccc"><a name=inventory></a><a name=2012></a>Winning
Entries of 2012 - The 21st IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="2012/ioccc.2012.tar.bz2">2012 entry source</a></p>
<ul>
<li><a href="2012/blakely/index.html">2012/blakely</a> - Most GIFted
expressions</li>
<li><a href="2012/deckmyn/index.html">2012/deckmyn</a> - Most notable
and best tool</li>
<li><a href="2012/dlowe/index.html">2012/dlowe</a> - Best way to lose a
life</li>
<li><a href="2012/endoh1/index.html">2012/endoh1</a> - Most complex
ASCII fluid - Honorable mention</li>
<li><a href="2012/endoh2/index.html">2012/endoh2</a> - PiE in the sky
award</li>
<li><a href="2012/grothe/index.html">2012/grothe</a> - Most
conspiratorial</li>
<li><a href="2012/hamano/index.html">2012/hamano</a> - Most elementary
use of C - Silver award</li>
<li><a href="2012/hou/index.html">2012/hou</a> - Most useful
obfuscation</li>
<li><a href="2012/kang/index.html">2012/kang</a> - Best short
program</li>
<li><a href="2012/konno/index.html">2012/konno</a> - Best one liner</li>
<li><a href="2012/omoikane/index.html">2012/omoikane</a> - Most
surreptitious</li>
<li><a href="2012/tromp/index.html">2012/tromp</a> - Most
functional</li>
<li><a href="2012/vik/index.html">2012/vik</a> - Best use of cocoa -
Bronze award</li>
<li><a href="2012/zeitak/index.html">2012/zeitak</a> - Balanced use of
obfuscation - Gold award</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+268
View File
@@ -0,0 +1,268 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2013 - The 22nd IOCCC</title>
<meta name="description" content="IOCCC Year 2013">
<meta name="keywords" content="IOCCC, 2013, IOCCC 2013, IOCCC entry, The 22nd IOCCC">
</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>2013 - The 22nd IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../2012/index.html">&larr; 2012</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../2014/index.html">2014 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="twenty-second-international-obfuscated-c-code-contest">Twenty
Second International Obfuscated C Code Contest</h1>
<h2 id="standard-ioccc-stuff">Standard IOCCC stuff</h2>
<p>Look at the README.md file for the given winning entry for
information on how to compile the entry 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>The IOCCC has a web site and now has a number of international
mirrors. The primary site can be found at: <a
href="https://www.ioccc.org/" class="uri">https://www.ioccc.org/</a></p>
<p>Use <code>make</code> to compile entries. It is possible that on
non-Unix / non-Linux systems the Makefile needs to be changed. See the
Makefile for details.</p>
<p>Read over the Makefile for compile/build issues. Your system might
require certain changes (add or remove a library, add or remove a
<code>#define</code> i.e. <code>-D</code> flag).</p>
<p>Some ANSI C compilers are not quite as good as they should be. If
yours is lacking, you may need to compile using gcc instead of your
local compiler.</p>
<h2 id="remarks-on-some-of-the-entries">Remarks on some of the
entries</h2>
<p>We believe you will again be impressed with this year’s winners.</p>
<p>This year, 9 won 15 awards. For the first time in the history of the
contest, one person, <a
href="https://www.ioccc.org/winners.html#Yusuke_Endoh">Yusuke Endoh</a>
won 4 times while <a
href="https://www.ioccc.org/winners.html#Adrian_Cable">Adrian Cable</a>
won 3 times! It is also worth noting that <a
href="https://www.ioccc.org/winners.html#Christopher_Mills">Chris
Mills</a> last win was in 1993. Welcome back Chris!</p>
<p>We, the judges, were very surprised by this as many of the multiple
winners submitted very different styles of entries.</p>
<p>This year was the first time the IOCCC size tool was used. Entries
had to print a value 2053 or less when the <code>-i</code> flag was
used.</p>
<p>Several people discovered an undocumented feature in that certain
comments such as:</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="co">///*</span></span></code></pre></div>
<p>or:</p>
<div class="sourceCode" id="cb2"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a> <span class="op">*</span>\</span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a> <span class="op">/</span></span></code></pre></div>
<p>were not correctly parsed by the tool. The guidelines stated:</p>
<pre><code>In cases where the above summary and the algorithm implemented by
the IOCCC size tool source code conflict, the algorithm implemented
by the IOCCC size tool source code is preferred by the judges.</code></pre>
<p>so this abuse was allowed (and encouraged). The judges hope that the
IOCCC size tool author will patch the tool to block this kind of size
abuse in future contests.</p>
<p>There were some outstanding entries that did not win. Unfortunately
some very good entries lost because they:</p>
<ul>
<li>were way way oversized and didn’t even attempt to justify their
excess by a clever abuse of the rules</li>
<li>depended on a single obfuscation trick</li>
<li>could only be run on a particular vendor’s platform</li>
<li>were very similar to previous winners</li>
<li>didn’t work as documented</li>
</ul>
<p>We hope that the authors of some of those entries will fix and
resubmit them for the next IOCCC.</p>
<p>There is a risk in submitting an entry that is similar to a well used
theme by previous winners. Previous winners set a very high bar. A new
winner must not only compete against other submissions from the current
year but they must also excel over similar previous winners in some
particularly impressive way.</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: 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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 2013,2023, Landon Curt Noll and Leonid A. Broukhis. 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-2013---the-22nd-ioccc"><a name=inventory></a><a name=2013></a>Winning
Entries of 2013 - The 22nd IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="2013/ioccc.2013.tar.bz2">2013 entry source</a></p>
<ul>
<li><a href="2013/birken/index.html">2013/birken</a> - Best painting
tool</li>
<li><a href="2013/cable1/index.html">2013/cable1</a> - Most partisan
1-liner</li>
<li><a href="2013/cable2/index.html">2013/cable2</a> - Best of show</li>
<li><a href="2013/cable3/index.html">2013/cable3</a> - Largest small
system emulator</li>
<li><a href="2013/dlowe/index.html">2013/dlowe</a> - Best sparkling
utility</li>
<li><a href="2013/endoh1/index.html">2013/endoh1</a> - Most lazy
SKIer</li>
<li><a href="2013/endoh2/index.html">2013/endoh2</a> - Most
recyclable</li>
<li><a href="2013/endoh3/index.html">2013/endoh3</a> - Most tweetable
1-liner</li>
<li><a href="2013/endoh4/index.html">2013/endoh4</a> - Most solid</li>
<li><a href="2013/hou/index.html">2013/hou</a> - Best use of 1 Infinite
Loop</li>
<li><a href="2013/mills/index.html">2013/mills</a> - Most timely
rendered</li>
<li><a href="2013/misaka/index.html">2013/misaka</a> - Most catty</li>
<li><a href="2013/morgan1/index.html">2013/morgan1</a> - Smallest large
system simulator</li>
<li><a href="2013/morgan2/index.html">2013/morgan2</a> - Most playfully
versatile</li>
<li><a href="2013/robison/index.html">2013/robison</a> - Most poetic use
of strings</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+273
View File
@@ -0,0 +1,273 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2014 - The 23rd IOCCC</title>
<meta name="description" content="IOCCC Year 2014">
<meta name="keywords" content="IOCCC, 2014, IOCCC 2014, IOCCC entry, The 23rd IOCCC">
</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>2014 - The 23rd IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../2013/index.html">&larr; 2013</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../2015/index.html">2015 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="twenty-third-international-obfuscated-c-code-contest">Twenty
Third International Obfuscated C Code Contest</h1>
<h2 id="standard-ioccc-stuff">Standard IOCCC stuff</h2>
<p>The IOCCC has a web site and now has a number of international
mirrors. The primary site can be found at,</p>
<ul>
<li><a href="http://www.ioccc.org/">http://www.ioccc.org/</a></li>
</ul>
<p>Use make to compile entries. It is possible that on non-Un*x /
non-Linux systems the makefile needs to be changed. See the Makefile for
details.</p>
<p>Look at the source and try to figure out what the programs do, and
run them with various inputs. If you want to, look at the hints files
for spoilers - this year we included most of the information included by
the submitter.</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
#define).</p>
<p>Some ANSI C compilers are not quite as good as they should be. If
yours is lacking, you may need to compile using gcc instead of your
local compiler.</p>
<h2 id="remarks-on-some-of-the-entries">Remarks on some of the
entries</h2>
<p>We believe you will again be impressed with this year’s winners.</p>
<p>This year, 2014:</p>
<p>We, the judges, were very surprised by this as many of the multiple
winners submitted very different styles of entries.</p>
<p>This year was the second time the IOCCC size tool was used. Rule 2
required that when program source is fed as input to the current IOCCC
size tool, and the IOCCC size tool -i command line option is used, the
value printed should be less than or equal to 2053.</p>
<p>We were pleased to see that abuse of the rules was extended to abuse
to the IOCCC size tool. Matt Zucker, followed by a few users, were able
to discover cleaver use of certain // comments to perplex the size tool.
The abuse was so bad that the judges released a critical and mandatory
patch to the IOCCC size tool on 2014-09-23.</p>
<p>There were some great entries that did not win. Unfortunately some
entries lost because they:</p>
<ul>
<li><p>were too large according the IOCCC size tool and didn’t even
attempt to justify their excess by a clever abuse of the rules</p></li>
<li><p>depended on a single obfuscation trick</p></li>
<li><p>didn’t work as documented</p></li>
</ul>
<p>We hope the authors of some of those entries will fix and re-submit
them for the next IOCCC.</p>
<p>There is a risk in submitting an entry that is similar to a well used
theme by previous winners. Previous winners set a very high bar. A new
winner must not only compete against submissions from the current year,
they must also excel over any similar winners in some particularly
impressive way.</p>
<h2 id="on-the-delay-in-releasing-the-winners">On the delay in releasing
the winners</h2>
<p>We apologize on the delay of sending the winners the tarball for them
to review. There were some unforeseen events, such as unplanned
mandatory business travel, the death of a IOCCC judge mother, etc. that
impacted our planned schedule for building the IOCCC winner tarball.</p>
<p>During some of these forced delays, we took the time to better
automate some of the tools needed to package the source for the winners
to review and to post the edited winners to the web site. It is our
intent that these changes made during those delays will make releasing
future IOCCC winners a faster procedure.</p>
<p>p.s. The final advice given to Landon by his mom: “Have fun.” We
recommend following this advice were possible.</p>
<h2 id="final-comments">Final Comments</h2>
<p>Please feel free to send us comments and suggestions about the
competition, this README or anything else that you would like to see in
future contests.</p>
<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>
<p>If you have problems with any of the entries, AND YOU HAVE A FIX,
please send us the fix (patch file or the entire changed file).</p>
<p>For the latest information on how to contact the IOCCC Judges please
visit</p>
<ul>
<li><a
href="http://www.ioccc.org/contact.html">http://www.ioccc.org/contact.html</a></li>
</ul>
<p>For news of the next contest watch:</p>
<ul>
<li><a href="http://www.ioccc.org/">http://www.ioccc.org/</a></li>
</ul>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (C) 2014,2024, Landon Curt Noll and Leonid A. Broukhis. 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-2014---the-23rd-ioccc"><a name=inventory></a><a name=2014></a>Winning
Entries of 2014 - The 23rd IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="2014/ioccc.2014.tar.bz2">2014 entry source</a></p>
<ul>
<li><a href="2014/birken/index.html">2014/birken</a> - Best use of port
1701</li>
<li><a href="2014/deak/index.html">2014/deak</a> - Most underscored
argument</li>
<li><a href="2014/endoh1/index.html">2014/endoh1</a> - Most square (YODA
award)</li>
<li><a href="2014/endoh2/index.html">2014/endoh2</a> - Best use of
bioinformatics</li>
<li><a href="2014/maffiodo1/index.html">2014/maffiodo1</a> - Homage to a
classic game</li>
<li><a href="2014/maffiodo2/index.html">2014/maffiodo2</a> - Most
tweetable entry</li>
<li><a href="2014/morgan/index.html">2014/morgan</a> - Most likely to
succeed</li>
<li><a href="2014/sinon/index.html">2014/sinon</a> - Best choice of
optimization</li>
<li><a href="2014/skeggs/index.html">2014/skeggs</a> - Most dynamic</li>
<li><a href="2014/vik/index.html">2014/vik</a> - Best handling of
beeps</li>
<li><a href="2014/wiedijk/index.html">2014/wiedijk</a> - Most
functional</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+284
View File
@@ -0,0 +1,284 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2015 - The 24th IOCCC</title>
<meta name="description" content="IOCCC Year 2015">
<meta name="keywords" content="IOCCC, 2015, IOCCC 2015, IOCCC entry, The 24th IOCCC">
</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>2015 - The 24th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../2014/index.html">&larr; 2014</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../2018/index.html">2018 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="twenty-fourth-international-obfuscated-c-code-contest">Twenty
Fourth International Obfuscated C Code Contest</h1>
<h2 id="standard-ioccc-stuff">Standard IOCCC stuff</h2>
<p>The IOCCC has a web site and now has a number of international
mirrors. The primary site can be found at,</p>
<ul>
<li><a href="http://www.ioccc.org/">http://www.ioccc.org/</a></li>
</ul>
<p>Use make to compile entries. It is possible that on non-Un*x /
non-Linux systems the makefile needs to be changed. See the Makefile for
details.</p>
<p>Look at the source and try to figure out what the programs do, and
run them with various inputs. If you want to, look at the hints files
for spoilers - this year we included most of the information included by
the submitter.</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
#define).</p>
<p>Some ANSI C compilers are not quite as good as they should be. If
yours is lacking, you may need to compile using gcc instead of your
local compiler.</p>
<h2 id="remarks-on-some-of-the-winners">Remarks on some of the
winners</h2>
<p>We believe you will again be impressed with this year’s winners.</p>
<p>The fraction of worthy entries was higher than usual.</p>
<p>We call to your attention, the <em>hou</em> entry, that performs the
MD5 cryptographic hash. Normally implemented with a set of integer and
boolean operations, this code uses floating point variables inside a
single while loop filled with unusual constants, cosine, square root,
and exponent function calls. The number of lines of code is also smaller
than the original algorithm.</p>
<p>The <em>mills2</em> source code is a very compressed version of a
decompression algorithm. We think those who enjoy compression algorithms
will particularly enjoy this entry.</p>
<p>We suggest that you attempt to completely understand the
<em>endoh4</em> 1-liner program: another impressive compact piece of C
code.</p>
<p>And while you are at it, cat the <em>endoh2</em> prog.c code. Compile
it and look at the source code again.</p>
<p>In a “Back to the Future” moment, <em>endoh3</em> gave us a twist on
one of the all time best IOCCC winners from 1984.</p>
<p>We also suggest that you take a very good look at how the
<em>muth</em> code makes full use of the C Pre-Processor.</p>
<p>…We’ll stop spouting spoilers now. Have fun exploring all the
entries!</p>
<h2 id="remarks-on-some-of-submissions-that-did-not-win">Remarks on some
of submissions that did not win</h2>
<p>The number of entries that would have made it into the final rounds
would have been much higher had some people paid attention to rules 2
and 22 (one third of 666).</p>
<p>Rule 22, now known as <strong>Catch 22</strong> states:</p>
<pre><code>| 22) Your source code, data files, remarks and program output must NOT
| identify the authors of your code. The judges STRONGLY prefer to
| not know who is submitting entries to the IOCCC.
| The &quot;Peter Honeyman is exempt&quot; guideline also applies to this rule.
| Identifying yourself, in an obvious way in your code, data, remarks
| or program output, unless you are Peter Honeyman or pretending
| to be Peter Honeyman, will be grounds for disqualification of your entry.</code></pre>
<p>A number of other entries were based on iocccsize.c, making
derivative works rather than original works.</p>
<p>Still other entries were too large, violating the first line of rule
2:</p>
<ol start="2" type="1">
<li>The size of your program source must be &lt;= 4096 bytes in
length.</li>
</ol>
<p>While these entries might have passed under the 2053 limit for
iocccsize, they were larger than &lt;= 4096 bytes, sometimes by an order
or magnitude.</p>
<p>We hope the authors of some of those entries will fix and re-submit
them for the next IOCCC.</p>
<h2 id="final-comments">Final Comments</h2>
<p>Please feel free to send us comments and suggestions about the
competition, this README or anything else that you would like to see in
future contests.</p>
<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>
<p>If you have problems with any of the entries, AND YOU HAVE A FIX,
please send us the fix (patch file or the entire changed file).</p>
<p>For the latest information on how to contact the IOCCC Judges please
visit</p>
<ul>
<li><a
href="http://www.ioccc.org/contact.html">http://www.ioccc.org/contact.html</a></li>
</ul>
<p>For news of the next contest watch:</p>
<ul>
<li><a href="http://www.ioccc.org/">http://www.ioccc.org/</a></li>
</ul>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (C) 2015,2024, Landon Curt Noll and Leonid A. Broukhis. 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-2015---the-24th-ioccc"><a name=inventory></a><a name=2015></a>Winning
Entries of 2015 - The 24th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="2015/ioccc.2015.tar.bz2">2015 entry source</a></p>
<ul>
<li><a href="2015/burton/index.html">2015/burton</a> - Most Useful</li>
<li><a href="2015/dogon/index.html">2015/dogon</a> - Most Crafty</li>
<li><a href="2015/duble/index.html">2015/duble</a> - Best
Handwriting</li>
<li><a href="2015/endoh1/index.html">2015/endoh1</a> - Most Diffused
Reaction</li>
<li><a href="2015/endoh2/index.html">2015/endoh2</a> - Most Overlooked
Obfuscation</li>
<li><a href="2015/endoh3/index.html">2015/endoh3</a> - Back to the
Future Award</li>
<li><a href="2015/endoh4/index.html">2015/endoh4</a> - Best
One-liner</li>
<li><a href="2015/hou/index.html">2015/hou</a> - Most Well-rounded
Hash</li>
<li><a href="2015/howe/index.html">2015/howe</a> - Most Different</li>
<li><a href="2015/mills1/index.html">2015/mills1</a> - For the Birds!
Award</li>
<li><a href="2015/mills2/index.html">2015/mills2</a> - Most Compact</li>
<li><a href="2015/muth/index.html">2015/muth</a> - Most Complete Use of
CPP</li>
<li><a href="2015/schweikhardt/index.html">2015/schweikhardt</a> - Best
Documented</li>
<li><a href="2015/yang/index.html">2015/yang</a> - Most Pointed
Reaction</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+270
View File
@@ -0,0 +1,270 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2018 - The 25th IOCCC</title>
<meta name="description" content="IOCCC Year 2018">
<meta name="keywords" content="IOCCC, 2018, IOCCC 2018, IOCCC entry, The 25th IOCCC">
</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>2018 - The 25th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../2015/index.html">&larr; 2015</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../2019/index.html">2019 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="twenty-fifth-international-obfuscated-c-code-contest">Twenty
Fifth International Obfuscated C Code Contest</h1>
<h2 id="standard-ioccc-stuff">Standard IOCCC stuff</h2>
<p>The primary IOCCC web site can be found at,</p>
<blockquote>
<p><a href="https://www.ioccc.org/"
class="uri">https://www.ioccc.org/</a></p>
</blockquote>
<p>Use <code>make</code> to compile entries. It is possible that on
non-Unix / non-Linux systems the Makefile needs to be changed. See the
Makefile for details.</p>
<p>Look at the source and try to figure out what the programs do, and
run them with various inputs. If you want to, look at the hints files
for spoilers - this year we included most of the information included by
the submitter.</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
#define).</p>
<p>Some C compilers are not quite as good as they should be. If yours is
lacking, you may need to compile using clang or gcc instead of your
local compiler.</p>
<h2 id="remarks-on-some-of-the-winners">Remarks on some of the
winners</h2>
<p>We believe you will again be impressed with this year’s winners.</p>
<p>The “Best of show” (mills) is an amazing tribute to winners from 1984
and 2015.</p>
<p>Take a close look at the “Most likely to top the charts” (hou)
winner. Observe that while it contains no variables and no operators, it
remains functional in what it does.</p>
<p>The “Best one-liner” (burton1), at 109 characters, is a short and
sweet implementation of a classic utility and a nod to a winner from
1986. Sometimes it takes 20 ox years to do things the true IOCCC
way.</p>
<p>The color of the remarks text this year was inspired by one of the
stars of the “Most stellar” winner (poikola).</p>
<p>The “Best use of python” (endoh2) is a not what you might think it
is. It is something completely different.</p>
<p>The “Most likely to be awarded” (ciura) has an amazing
vocabulary!</p>
<p>There are also nods to winners of the years 2000 (bellard), 1989
(yang), …</p>
<p>…We’ll stop spouting spoilers now. Have fun exploring all the
entries!</p>
<h2 id="remarks-on-some-of-submissions-that-did-not-win">Remarks on some
of submissions that did not win</h2>
<p>The number of entries that would have made it into the final rounds
would have been much higher had some people paid attention to rules 2
and 22 (one third of 666).</p>
<p>Rule 22, now known as “Catch 22” states:</p>
<pre><code>| 22) Your source code, data files, remarks and program output must NOT
| identify the authors of your code. The judges STRONGLY prefer to
| not know who is submitting entries to the IOCCC.
| The &quot;Peter Honeyman is exempt&quot; guideline also applies to this rule.
| Identifying yourself, in an obvious way in your code, data, remarks
| or program output, unless you are Peter Honeyman or pretending
| to be Peter Honeyman, will be grounds for disqualification of your entry.</code></pre>
<p>A number of other entries were based on iocccsize.c, making
derivative works rather than original works.</p>
<p>Still other entries were too large, violating the first line of rule
2:</p>
<pre><code>2) The size of your program source must be &lt;= 4096 bytes in length.</code></pre>
<p>While these entries might have passed under the 2053 limit for
iocccsize, they were larger than &lt;= 4096 bytes, sometimes by an order
or magnitude.</p>
<p>We hope the authors of some of those entries will fix and re-submit
them for the next IOCCC.</p>
<p>Some entries seemed to have a good idea, but the implementation of
the idea was limited in scope.</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: 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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (C) 2018,2023, Landon Curt Noll and Leonid A. Broukhis. 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-2018---the-25th-ioccc"><a name=inventory></a><a name=2018></a>Winning
Entries of 2018 - The 25th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="2018/ioccc.2018.tar.bz2">2018 entry source</a></p>
<ul>
<li><a href="2018/algmyr/index.html">2018/algmyr</a> - Most
cacophonic</li>
<li><a href="2018/anderson/index.html">2018/anderson</a> - Most able to
divine code gaps</li>
<li><a href="2018/bellard/index.html">2018/bellard</a> - Most
inflationary</li>
<li><a href="2018/burton1/index.html">2018/burton1</a> - Best
one-liner</li>
<li><a href="2018/burton2/index.html">2018/burton2</a> - Best abuse of
the rules</li>
<li><a href="2018/ciura/index.html">2018/ciura</a> - Most likely to be
awarded</li>
<li><a href="2018/endoh1/index.html">2018/endoh1</a> - Best tool to
reveal holes</li>
<li><a href="2018/endoh2/index.html">2018/endoh2</a> - Best use of
python</li>
<li><a href="2018/ferguson/index.html">2018/ferguson</a> - Best use of
weasel words</li>
<li><a href="2018/giles/index.html">2018/giles</a> - Most unstable</li>
<li><a href="2018/hou/index.html">2018/hou</a> - Most likely to top the
charts</li>
<li><a href="2018/mills/index.html">2018/mills</a> - Best of show</li>
<li><a href="2018/poikola/index.html">2018/poikola</a> - Most
stellar</li>
<li><a href="2018/vokes/index.html">2018/vokes</a> - Most connected</li>
<li><a href="2018/yang/index.html">2018/yang</a> - Most shifty</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+259
View File
@@ -0,0 +1,259 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2019 - The 26th IOCCC</title>
<meta name="description" content="IOCCC Year 2019">
<meta name="keywords" content="IOCCC, 2019, IOCCC 2019, IOCCC entry, The 26th IOCCC">
</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>2019 - The 26th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="../2018/index.html">&larr; 2018</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left" href="../2020/index.html">2020 &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="twenty-sixth-international-obfuscated-c-code-contest">Twenty
Sixth International Obfuscated C Code Contest</h1>
<h2 id="standard-ioccc-stuff">Standard IOCCC stuff</h2>
<p>Look at the README.md file for the given winning entry for
information 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>The primary IOCCC web site can be found at,</p>
<blockquote>
<p><a href="https://www.ioccc.org/"
class="uri">https://www.ioccc.org/</a></p>
</blockquote>
<p>Use <code>make</code> to compile entries. It is possible that on
non-Unix / non-Linux 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
#define).</p>
<p>Some C compilers are not quite as good as they should be. If yours is
lacking, you may need to compile using clang or gcc instead of your
local compiler.</p>
<h2 id="remarks-on-some-of-the-winners">Remarks on some of the
winners</h2>
<p>This year’s winners are impressive!</p>
<p>The “Most in need of debugging” (endoh) is very inventive in a way it
produces its own text!</p>
<p>The “Most likely to be awarded” (ciura) has an amazing
vocabulary!</p>
<p>There are again nods to winners of the years:</p>
<pre><code>[1991/davidguy](http://ioccc.org/years.html#1991_davidguy)
[2011/blakely](http://ioccc.org/years.html#2011_blakely)</code></pre>
<p>These nods to not run afoul of the guideline:</p>
<pre><code>We tend to dislike programs that:
...
are rather similar to previous winners</code></pre>
<p>because the entry (dogon) appropriately pays homage to past winners
without blatantly reusing their code.</p>
<p>…We’ll stop spouting spoilers now. Have fun exploring all the
entries!</p>
<h2 id="remarks-on-some-of-submissions-that-did-not-win">Remarks on some
of submissions that did not win</h2>
<p>Some entries tried to get around the size limit by submitting a data
file that was really C code and then blindly including code in
prog.c.</p>
<p>Quite a few entries suffered from undefined behavior like accessing
uninitialized locals and/or reading-writing below the stack. We advise
running your entry through valgrind to make sure those mistakes are
avoided.</p>
<p>Using extra arguments to main, or arguments of wrong types as a quick
and dirty way of declaring variables is now passé. Clang, for example,
rejects them outright.</p>
<p>We hope the authors of some of those entries will fix and re-submit
them for the next IOCCC.</p>
<p>Some entries seemed to have a good idea, but the implementation of
the idea was limited in scope.</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: 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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (c) 2019,2023, Landon Curt Noll and Leonid A. Broukhis. 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-2019---the-26th-ioccc"><a name=inventory></a><a name=2019></a>Winning
Entries of 2019 - The 26th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="2019/ioccc.2019.tar.bz2">2019 entry source</a></p>
<ul>
<li><a href="2019/adamovsky/index.html">2019/adamovsky</a> - Most
functional interpreter</li>
<li><a href="2019/burton/index.html">2019/burton</a> - Best
one-liner</li>
<li><a href="2019/ciura/index.html">2019/ciura</a> - Most
alphabetic</li>
<li><a href="2019/diels-grabsch1/index.html">2019/diels-grabsch1</a> -
Best small program</li>
<li><a href="2019/diels-grabsch2/index.html">2019/diels-grabsch2</a> -
Most self-aware</li>
<li><a href="2019/dogon/index.html">2019/dogon</a> - Best use of space
and time</li>
<li><a href="2019/duble/index.html">2019/duble</a> - Best collaborative
graphics</li>
<li><a href="2019/endoh/index.html">2019/endoh</a> - Most in need of
debugging</li>
<li><a href="2019/giles/index.html">2019/giles</a> - Most in need of
wide space</li>
<li><a href="2019/karns/index.html">2019/karns</a> - Most in need of
whitespace</li>
<li><a href="2019/lynn/index.html">2019/lynn</a> - Most functional
compiler</li>
<li><a href="2019/mills/index.html">2019/mills</a> - Most in need to be
tweeted</li>
<li><a href="2019/poikola/index.html">2019/poikola</a> - Most
calendrical</li>
<li><a href="2019/yang/index.html">2019/yang</a> - Most in need of
transparency</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+260
View File
@@ -0,0 +1,260 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- The original markdown content was formed by the tool: unspecified -->
<!-- The HTML was converted from markdown by the tool: bin/md2html.sh -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2020 - The 27th IOCCC</title>
<meta name="description" content="IOCCC Year 2020">
<meta name="keywords" content="IOCCC, 2020, IOCCC 2020, IOCCC entry, The 27th IOCCC">
</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>2020 - The 27th IOCCC</h2>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.year.last.html -->
<div class="topnav">
<a class="Left" href="../2019/index.html">&larr; 2019</a>
<a class="Left" href="../index.html">&uarr; top &uarr;</a>
<a class="Left Disabled" href="#">In most recent year</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.last.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="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../faq.html#submit">How to enter the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../faq.html#fix_author">Fixing winner info</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<h1 id="twenty-seventh-international-obfuscated-c-code-contest">Twenty
Seventh International Obfuscated C Code Contest</h1>
<h2 id="standard-ioccc-stuff">Standard IOCCC stuff</h2>
<p>Look at the README.md file for the given winning entry for
information 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>The primary IOCCC web site can be found at,</p>
<blockquote>
<p><a href="https://www.ioccc.org/"
class="uri">https://www.ioccc.org/</a></p>
</blockquote>
<p>Use <code>make</code> to compile entries. It is possible that on
non-Unix / non-Linux 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
#define).</p>
<p>Some C compilers are not quite as good as they should be. If yours is
lacking, you may need to compile using clang or gcc instead of your
local compiler.</p>
<h2 id="remarks-on-some-of-the-winners">Remarks on some of the
winners</h2>
<p>This year’s Best of Show (carlini) is such a novel way of obfuscation
that it would be worth of a special mention in the (future) Best of
IOCCC list!</p>
<p>For some reason, this year’s set of winners contains three nostalgic
games, Asteroids (tsoj), Minesweeper (endoh1), and Snake
(ferguson1).</p>
<p>An entry (kurdyukov1) pays homage to a previous winner
(2015/hou).</p>
<p>…We’ll stop spouting spoilers now. Have fun exploring all the
entries!</p>
<h2 id="remarks-on-some-of-submissions-that-did-not-win">Remarks on some
of submissions that did not win</h2>
<p>As a rule, we try to compile the entries on a variety of platforms.
Quite a few entries this year could not be built or executed on some of
them due to reliance on library internals or the system runtime.</p>
<p>A few entries were violating the “2053 significant bytes” rule. If an
entry could not be brought to compliance within a few seconds of looking
at the source, it was disqualified.</p>
<p>One entry tried to get around the size limit by putting the code into
Makefile variables and using -D. This is already called out as
discouraged technique in the guidelines, but it is worth a reminder.</p>
<p>Several promising entries attempted to make use of the
<code>syscall</code> function using literal syscall numbers. This is
utterly non-portable.</p>
<p>A note to the authors: when submitting multiple entries, don’t let us
easily correlate them by coding style or documentation content, and
definitely don’t submit nearly identical versions of your program
separately. As we try to judge the entries anonymously, the similarities
will cause such entries to compete against one another, making each less
likely to win.</p>
<p>We hope the authors of non-winning entries will refine their entries
and perhaps re-submit them for the next IOCCC.</p>
<h2 id="final-comments">Final Comments</h2>
<p><strong>IMPORTANT NOTE</strong>: 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>
<h1 id="copyright-and-license">Copyright and License</h1>
<p>Copyright (C) 2020,2023, Landon Curt Noll and Leonid A. Broukhis. 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-2020---the-27th-ioccc"><a name=inventory></a><a name=2020></a>Winning
Entries of 2020 - The 27th IOCCC</h1>
<p><strong>Download IOCCC</strong> <a
href="2020/ioccc.2020.tar.bz2">2020 entry source</a></p>
<ul>
<li><a href="2020/burton/index.html">2020/burton</a> - Best
one-liner</li>
<li><a href="2020/carlini/index.html">2020/carlini</a> - Best of show -
abuse of libc</li>
<li><a href="2020/endoh1/index.html">2020/endoh1</a> - Most
explosive</li>
<li><a href="2020/endoh2/index.html">2020/endoh2</a> - Best
perspective</li>
<li><a href="2020/endoh3/index.html">2020/endoh3</a> - Most
head-turning</li>
<li><a href="2020/ferguson1/index.html">2020/ferguson1</a> - Don’t tread
on me award</li>
<li><a href="2020/ferguson2/index.html">2020/ferguson2</a> - Most
enigmatic</li>
<li><a href="2020/giles/index.html">2020/giles</a> - Most phony</li>
<li><a href="2020/kurdyukov1/index.html">2020/kurdyukov1</a> - Best
utility</li>
<li><a href="2020/kurdyukov2/index.html">2020/kurdyukov2</a> - Least
detailed</li>
<li><a href="2020/kurdyukov3/index.html">2020/kurdyukov3</a> - Bset
slaml prragom</li>
<li><a href="2020/kurdyukov4/index.html">2020/kurdyukov4</a> - Best
abuse of lámatyávë</li>
<li><a href="2020/otterness/index.html">2020/otterness</a> - Most
percussive</li>
<li><a href="2020/tsoj/index.html">2020/tsoj</a> - Most misleading
indentation</li>
<li><a href="2020/yang/index.html">2020/yang</a> - Best abuse of
CPP</li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- END: next line ends content generated by: bin/output-year-index.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-year-index.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=#">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->
+37 -2
View File
@@ -40,10 +40,19 @@ include var.mk
# IOCCC web site maintenance tulz
#################################
# NOTE: The "tulz" (tools) in this section are intended to be used by those
# who maintain the official IOCCC site.
#
# We file "tulz" paths should be relative to the top directory of the repo.
# We need only list those "tulz" that are invoked directly by the
# "IOCCC web site maintenance rulz" section below.
ALL_RUN= bin/all-run.sh
ALL_YEARS= bin/all-years.sh
GEN_AUTHORS= bin/gen-authors.sh
GEN_LOCATION= bin/gen-location.sh
GEN_YEARS= bin/gen-years.sh
GEN_YEAR_INDEX= bin/gen-year-index.sh
README2INDEX= bin/readme2index.sh
QUICK_README2INDEX= bin/quick-readme2index.sh
@@ -224,8 +233,25 @@ indent.c:
# XXX - The rules in this section are undergoing development and change.
# They might not even work (right now). :-)
.PHONY: genpath gen_authors gen_location gen_years entry_index quick_entry_index \
quick_www www
.PHONY: help genpath gen_authors gen_location gen_years entry_index quick_entry_index \
gen_year_index quick_www www
# Suggest rules in this section
#
# This may not be much help to people who are not already familiar with
# the tools needed to build the web site, but it is does print out a friendly
# reminder to hose who to understand. For all else, there is "RTFS". :-)
#
help:
@echo make genpath
@echo make gen_authors
@echo make gen_location
@echo make gen_years
@echo make entry_index
@echo make gen_year_index
@echo make quick_entry_index
@echo make quick_www
@echo make www
# form the top level .top, YYYY level .year and winner level .path files
#
@@ -275,6 +301,13 @@ entry_index: ${ALL_RUN} ${README2INDEX}
${ALL_RUN} -v 3 ${README2INDEX} -v 1
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
# generate year level index.html files
#
gen_year_index: ${ALL_YEARS} ${GEN_YEAR_INDEX}
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
${ALL_YEARS} -v 1 ${GEN_YEAR_INDEX} -v 1
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
# build winner index.html files that might be out of date
#
# This rule uses the QUICK_README2INDEX tool, so
@@ -299,6 +332,7 @@ quick_www:
${MAKE} gen_authors
${MAKE} gen_location
${MAKE} gen_years
${MAKE} gen_year_index
${MAKE} quick_entry_index
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
@@ -311,6 +345,7 @@ www:
${MAKE} gen_authors
${MAKE} gen_location
${MAKE} gen_years
${MAKE} gen_year_index
${MAKE} entry_index
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
+33 -1
View File
@@ -30,6 +30,17 @@ bin/all-run.sh -v 3 bin/readme2index.sh -v 1
```
### [all-years.sh](all-years.sh)
Run a command on all IOCCC years.
For example:
```sh
all-years.sh -v 1 bin/gen-year-index.sh -v 1
```
### [gen-authors.sh](gen-authors.sh)
Generate the top level `/authors.html` page.
@@ -52,6 +63,17 @@ bin/gen-location.sh -v 1
```
### [gen-year-index.sh](gen-year-index.sh)
Generate an `index.html` page for an given IOCCC year.
Usage:
```sh
bin/gen-year-index.sh -v 1 2020
```
### [gen-years.sh](gen-years.sh)
Generate the top level `/years.html` page.
@@ -173,7 +195,7 @@ bin/all-run.sh bin/sort.gitignore.sh -v 1
Print default substitutions.
### [subst.entry-index..sh](subst.entry-index..sh)
### [subst.entry-index.sh](subst.entry-index.sh)
Print substitutions for a entry index.html.
@@ -183,6 +205,16 @@ Print substitutions for a entry index.html.
Output substitutions for navbar on behalf of a entry.
### [subst.year-index.sh](subst.year-index.sh)
Print substitutions for a year level index.html.
### [subst.year-navbar.awk](subst.year-navbar.awk)
Output substitutions for navbar on behalf of a year level index.html.
# <a name="how"></a>How IOCCC HTML content is built
The [md2html.sh](md2html.sh) tool is the primary tool that
+7 -5
View File
@@ -21,11 +21,11 @@
#
# For example:
#
# all-run.sh -v 3 -t readme2html -U https://www.ioccc.org bin/quick-readme2html.sh -v 1
# all-run.sh -v 3 -t readme2html -w https://www.ioccc.org bin/quick-readme2html.sh -v 1
#
# will run the tool bin/quick-readme2html.sh for each entry YYYY/dir as follows:
#
# bin/quick-readme2html.sh -t readme2html -U https://www.ioccc.org YYYY/dir -v 1
# bin/quick-readme2html.sh -t readme2html -w https://www.ioccc.org YYYY/dir -v 1
#
# Only the "-D -t, -T, -p, -u, -w" option set are passed to the tool command line.
# For all other special tool options, pass them as additional tool options (i.e., command line arguments
@@ -93,6 +93,7 @@ status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
export DOCROOT_SLASH="../../"
export TAGLINE="unspecified"
export MD2HTML_SH="bin/md2html.sh"
@@ -128,8 +129,9 @@ export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] [-D docroot/] [-n] [-N]
-N do not process anything, just parse arguments (def: process something)
-t tagline string to write about the tool that formed the markdown content (def: $TAGLINE)
NOTE: 'pandoc_opts' may be enclosed within, but may NOT contain an internal single-quote or double-quote.
NOTE: The '-t tagline' is passed as leading options on tool command lines.
-T md2html.sh run 'markdown to html tool' to convert markdown into HTML (def: $MD2HTML_SH)
NOTE: The '-T md2html.sh' is passed as leading options on tool command lines.
-p tool run 'pandoc wrapper tool' (not pandoc path) during HTML phase number 21 (def: use $PANDOC_WRAPPER)
@@ -142,7 +144,7 @@ export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] [-D docroot/] [-n] [-N]
tool the tool to run over all entries
[more_options] additional tool command line options to use before the YYYY/dir argument
NOTE: Any '-t tagline', '-T md2html.sh', '-p tool', '-P pandoc_opts', '-u repo_url', '-U top_url'
NOTE: Any '-D docroot/', '-t tagline', '-T md2html.sh', '-p tool', '-u repo_url', '-w site_url'
are passed to the 'tool' at the beginning of the command line, and
before any optional 'more_options' and before the final YYYY/dir argument.
@@ -376,7 +378,6 @@ if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: TOP_FILE=$TOP_FILE" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: TAGLINE=$TAGLINE" 1>&2
echo "$0: debug[3]: MD2HTML_SH=$MD2HTML_SH" 1>&2
@@ -391,6 +392,7 @@ if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: TOOL_OPTION[$index]=${TOOL_OPTION[$index]}" 1>&2
done
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
echo "$0: debug[3]: TOP_FILE=$TOP_FILE" 1>&2
fi
# -N stops early before any processing is performed
+496
View File
@@ -0,0 +1,496 @@
#!/usr/bin/env bash
#
# all-years.sh - run a command for all IOCCC years
#
# We cd to topdir, than then walk the entry directory tree.
# We obtain the set of IOCCC years (YYYY) via the .top file.
# For each year (YYYY), we run the tool.
#
# The tool argument, if not an absolute path, must be relative to topdir.
# The tool argument is the first argument command line. Any additional
# arguments beyond the first tool argument are treated as more tool options.
#
# NOTE: A command line option is a dashed letter (e.g., -n or --) followed by an optional string (e.g., -v 3).
# Command line arguments follow any command line options (including any final -- option).
# While the 1st command line cannot start with a dash, optional line arguments that follow by start with a dash.
#
# Each tool run with command line of the form:
#
# tool [any -D, -t tagline, -T md2html.sh, -p tool, -u repo_url, -w site_url] [more_options] YYYY
#
# For example:
#
# all-years.sh -v 3 -w https://www.ioccc.org bin/gen-year-index,sh bin/gen-year-index.sh -v 1
#
# will run the tool bin/quick-readme2html.sh for each entry YYYY as follows:
#
# bin/gen-year-index.sh -w https://www.ioccc.org YYYY -v 1
#
# Only the "-D -t, -T, -p, -u, -w" option set are passed to the tool command line.
# For all other special tool options, pass them as additional tool options (i.e., command line arguments
# that follow the 1st command line argument) OR consider simply running the tool directly.
#
# Copyright (c) 2024 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# firewall - must be bash with a version 4.2 or later
#
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
#
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
exit 4
fi
# setup bash file matching
#
# Requires bash with a version 4.2 or later
#
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
shopt -u failglob # disable error message if no matches are found
shopt -u dotglob # disable matching files starting with .
shopt -s globskipdots # enable never matching . or ..
shopt -u nocaseglob # disable strict case matching
shopt -u extglob # enable extended globbing patterns
shopt -s globstar # enable ** to match all files and zero or more directories and subdirectories
# set variables referenced in the usage message
#
export VERSION="1.0 2024-02-12"
NAME=$(basename "$0")
export NAME
export V_FLAG=0
GIT_TOOL=$(type -P git)
export GIT_TOOL
if [[ -z "$GIT_TOOL" ]]; then
echo "$0: FATAL: git tool is not installed or not in \$PATH" 1>&2
exit 10
fi
"$GIT_TOOL" rev-parse --is-inside-work-tree >/dev/null 2>&1
status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
export DOCROOT_SLASH="../../"
export TAGLINE="unspecified"
export MD2HTML_SH="bin/md2html.sh"
export PANDOC_WRAPPER="bin/pandoc-wrapper.sh"
export REPO_URL="https://github.com/ioccc-src/temp-test-ioccc"
export SITE_URL="https://ioccc-src.github.io/temp-test-ioccc"
#
export NOOP=
export DO_NOT_PROCESS=
export EXIT_CODE="0"
# clear options we will add to tools
#
unset TOOL_OPTION
declare -ag TOOL_OPTION
# usage
#
export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] [-D docroot/] [-n] [-N]
[-t tagline] [-T md2html.sh] [-p tool] [-u repo_url] [-w site_url]
tool [more_options]
-h print help message and exit
-v level set verbosity level (def level: 0)
NOTE: The '-v level' is passed as leading options on tool command lines.
-V print version string and exit
-d topdir set topdir (def: $TOPDIR)
-D docroot/ set the document root path followed by slash (def: $DOCROOT_SLASH)
NOTE: The '-D docroot/' is passed as leading options on tool command lines.
NOTE: 'docroot' must end in a slash
-n go thru the actions, but do not update any files (def: do the action)
-N do not process anything, just parse arguments (def: process something)
-t tagline string to write about the tool that formed the markdown content (def: $TAGLINE)
NOTE: The '-t tagline' is passed as leading options on tool command lines.
-T md2html.sh run 'markdown to html tool' to convert markdown into HTML (def: $MD2HTML_SH)
NOTE: The '-T md2html.sh' is passed as leading options on tool command lines.
-p tool run 'pandoc wrapper tool' (not pandoc path) during HTML phase number 21 (def: use $PANDOC_WRAPPER)
-u repo_url Base level URL of target git repo (def: $REPO_URL)
NOTE: The '-u repo_url' is passed as leading options on tool command lines.
-w site_url Base URL of the web site (def: $SITE_URL)
NOTE: The '-w site_url' is passed as leading options on tool command lines.
tool the tool to run over all entries
[more_options] additional tool command line options to use before the YYYY/dir argument
NOTE: Any '-t tagline', '-T md2html.sh', '-p tool', '-u repo_url', '-w site_url'
are passed to the 'tool' at the beginning of the command line, and
before any optional 'more_options' and before the final YYYY/dir argument.
Exit codes:
0 all OK
1 some tool exited non-zero
2 -h and help string printed or -V and version string printed
3 command line error
4 bash version is < 4.2
5 tool and/or md2html.sh is not an executable file
6 problems found with or in the topdir directory
7 problems found with or in the topdir/YYYY directory
8 problems found with or in the topdir/YYYY/dir directory
>= 10 < 200 internal error
>= 200 ((not used))
$NAME version: $VERSION"
# parse command line
#
while getopts :hv:Vd:D:nNt:T:p:u:w: flag; do
case "$flag" in
h) echo "$USAGE" 1>&2
exit 2
;;
v) V_FLAG="$OPTARG"
;;
V) echo "$VERSION"
exit 2
;;
d) TOPDIR="$OPTARG"
;;
D) # parse -D docroot/
case "$OPTARG" in
*/) ;;
*) echo "$0: ERROR: in -D docroot/, the docroot must end in /" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
esac
DOCROOT_SLASH="$OPTARG"
TOOL_OPTION+=("-D")
TOOL_OPTION+=("$DOCROOT_SLASH")
;;
n) NOOP="-n"
;;
N) DO_NOT_PROCESS="-N"
;;
t) # parse -t tagline
case "$OPTARG" in
*"'"*)
echo "$0: ERROR: in -t tagline, the tagline may not contain a single-quote character: $OPTARG" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
*'"'*)
echo "$0: ERROR: in -t tagline, the tagline may not contain a double-quote character: $OPTARG" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
*) ;;
esac
TAGLINE="$OPTARG"
TOOL_OPTION+=("-t")
TOOL_OPTION+=("$TAGLINE")
;;
T) MD2HTML_SH="$OPTARG"
TOOL_OPTION+=("-T")
TOOL_OPTION+=("$MD2HTML_SH")
;;
p) PANDOC_WRAPPER="$OPTARG"
TOOL_OPTION+=("-p")
TOOL_OPTION+=("$PANDOC_WRAPPER")
;;
u) REPO_URL="$OPTARG"
TOOL_OPTION+=("-u")
TOOL_OPTION+=("$REPO_URL")
;;
w) SITE_URL="$OPTARG"
TOOL_OPTION+=("-w")
TOOL_OPTION+=("$SITE_URL")
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
# remove the options
#
shift $(( OPTIND - 1 ));
#
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: file argument count: $#" 1>&2
fi
#
# verify arg count and parse args
#
export TOOL
case "$#" in
0) echo "$0: ERROR: expected 1 or more args, found: $#" 1>&2
echo "$USAGE" 1>&2
exit 3
;;
1) TOOL="$1"
;;
*) TOOL="$1"
shift
while [[ $# -gt 0 ]]; do
TOOL_OPTION+=("$1")
shift
done
;;
esac
# verify that we have a topdir directory
#
REPO_NAME=$(basename "$REPO_URL")
export REPO_NAME
if [[ -z $TOPDIR ]]; then
echo "$0: ERROR: cannot find top of git repo directory" 1>&2
echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
exit 6
fi
if [[ ! -e $TOPDIR ]]; then
echo "$0: ERROR: TOPDIR does not exist: $TOPDIR" 1>&2
echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
exit 6
fi
if [[ ! -d $TOPDIR ]]; then
echo "$0: ERROR: TOPDIR is not a directory: $TOPDIR" 1>&2
echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
exit 6
fi
# cd to topdir
#
if [[ ! -e $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to non-existent path: $TOPDIR" 1>&2
exit 6
fi
if [[ ! -d $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to a non-directory: $TOPDIR" 1>&2
exit 6
fi
export CD_FAILED
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: about to: cd $TOPDIR" 1>&2
fi
cd "$TOPDIR" || CD_FAILED="true"
if [[ -n $CD_FAILED ]]; then
echo "$0: ERROR: cd $TOPDIR failed" 1>&2
exit 6
fi
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: now in directory: $(/bin/pwd)" 1>&2
fi
# verify we have a non-empty readable .top file
#
export TOP_FILE=".top"
if [[ ! -e $TOP_FILE ]]; then
echo "$0: ERROR: .top does not exist: $TOP_FILE" 1>&2
exit 6
fi
if [[ ! -f $TOP_FILE ]]; then
echo "$0: ERROR: .top is not a regular file: $TOP_FILE" 1>&2
exit 6
fi
if [[ ! -r $TOP_FILE ]]; then
echo "$0: ERROR: .top is not an readable file: $TOP_FILE" 1>&2
exit 6
fi
if [[ ! -s $TOP_FILE ]]; then
echo "$0: ERROR: .top is not a non-empty readable file: $TOP_FILE" 1>&2
exit 6
fi
# verify tool is executable
#
if [[ ! -e $TOOL ]]; then
echo "$0: ERROR: TOOL does not exist: $TOOL" 1>&2
exit 5
fi
if [[ ! -f $TOOL ]]; then
echo "$0: ERROR: TOOL is not a regular file: $TOOL" 1>&2
exit 5
fi
if [[ ! -x $TOOL ]]; then
echo "$0: ERROR: TOOL is not an executable file: $TOOL" 1>&2
exit 5
fi
# verify that the md2html.sh is executable
#
if [[ ! -e $MD2HTML_SH ]]; then
echo "$0: ERROR: md2html.sh does not exist: $MD2HTML_SH" 1>&2
exit 5
fi
if [[ ! -f $MD2HTML_SH ]]; then
echo "$0: ERROR: md2html.sh is not a regular file: $MD2HTML_SH" 1>&2
exit 5
fi
if [[ ! -x $MD2HTML_SH ]]; then
echo "$0: ERROR: md2html.sh is not an executable file: $MD2HTML_SH" 1>&2
exit 5
fi
# print running info if verbose
#
# If -v 3 or higher, print exported variables in order that they were exported.
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: VERSION=$VERSION" 1>&2
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: TOP_FILE=$TOP_FILE" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: TAGLINE=$TAGLINE" 1>&2
echo "$0: debug[3]: MD2HTML_SH=$MD2HTML_SH" 1>&2
echo "$0: debug[3]: PANDOC_WRAPPER=$PANDOC_WRAPPER" 1>&2
echo "$0: debug[3]: REPO_URL=$REPO_URL" 1>&2
echo "$0: debug[3]: SITE_URL=$SITE_URL" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: EXIT_CODE=$EXIT_CODE" 1>&2
echo "$0: debug[3]: TOOL=$TOOL" 1>&2
for index in "${!TOOL_OPTION[@]}"; do
echo "$0: debug[3]: TOOL_OPTION[$index]=${TOOL_OPTION[$index]}" 1>&2
done
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
fi
# -N stops early before any processing is performed
#
if [[ -n $DO_NOT_PROCESS ]]; then
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: arguments parsed, -N given, exiting 0" 1>&2
fi
exit 0
fi
# process each year
#
export YYYY
for YYYY in $(< "$TOP_FILE"); do
# debug YYYY
#
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: starting to process year: $YYYY" 1>&2
fi
# verify that YYYY is a readable directory
#
if [[ ! -e $YYYY ]]; then
echo "$0: ERROR: YYYY does not exist: $YYYY" 1>&2
EXIT_CODE="7" # exit 7
echo "$0: Warning: EXIT_CODE set to: $EXIT_CODE" 1>&2
continue
fi
if [[ ! -d $YYYY ]]; then
echo "$0: ERROR: YYYY is not a directory: $YYYY" 1>&2
EXIT_CODE="7" # exit 7
echo "$0: Warning: EXIT_CODE set to: $EXIT_CODE" 1>&2
continue
fi
if [[ ! -r $YYYY ]]; then
echo "$0: ERROR: YYYY is not an readable directory: $YYYY" 1>&2
EXIT_CODE="7" # exit 7
echo "$0: Warning: EXIT_CODE set to: $EXIT_CODE" 1>&2
continue
fi
# verify that YYYY has a non-empty readable .year file
#
export YEAR_FILE="$YYYY/.year"
if [[ ! -e $YEAR_FILE ]]; then
echo "$0: ERROR: YYYY/.year does not exist: $YEAR_FILE" 1>&2
EXIT_CODE="7" # exit 7
echo "$0: Warning: EXIT_CODE set to: $EXIT_CODE" 1>&2
continue
fi
if [[ ! -f $YEAR_FILE ]]; then
echo "$0: ERROR: YYYY/.year is not a regular file: $YEAR_FILE" 1>&2
EXIT_CODE="7" # exit 7
echo "$0: Warning: EXIT_CODE set to: $EXIT_CODE" 1>&2
continue
fi
if [[ ! -r $YEAR_FILE ]]; then
echo "$0: ERROR: YYYY/.year is not an readable file: $YEAR_FILE" 1>&2
EXIT_CODE="7" # exit 7
echo "$0: Warning: EXIT_CODE set to: $EXIT_CODE" 1>&2
continue
fi
if [[ ! -s $YEAR_FILE ]]; then
echo "$0: ERROR: YYYY/.year is not a non-empty readable file: $YEAR_FILE" 1>&2
EXIT_CODE="7" # exit 7
echo "$0: Warning: EXIT_CODE set to: $EXIT_CODE" 1>&2
continue
fi
# run the tool unless -n
#
if [[ -z $NOOP ]]; then
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: about to run: $TOOL ${TOOL_OPTION[*]} -- $YYYY" 1>&2
fi
"$TOOL" "${TOOL_OPTION[@]}" -- "$YYYY"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: tool: $TOOL ${TOOL_OPTION[*]} -- $YYYY failed, error: $status" 1>&2
EXIT_CODE="1" # exit 1
echo "$0: Warning: EXIT_CODE set to: $EXIT_CODE" 1>&2
continue
fi
# report disabled by -n
#
elif [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: because of -n, did not run: $TOOL ${TOOL_OPTION[*]} -- $YYYY" 1>&2
fi
done
# All Done!!! -- Jessica Noll, Age 2
#
if [[ $EXIT_CODE -ne 0 ]]; then
echo "$0: Warning: about to exit non-zero: $EXIT_CODE" 1>&2
elif [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: about to exit $EXIT_CODE" 1>&2
fi
exit "$EXIT_CODE"
+8 -6
View File
@@ -64,6 +64,7 @@ status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
export DOCROOT_SLASH="./"
export TAGLINE="bin/$NAME"
export MD2HTML_SH="bin/md2html.sh"
@@ -630,22 +631,23 @@ if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: TAGLINE=$TAGLINE" 1>&2
echo "$0: debug[3]: MD2HTML_SH=$MD2HTML_SH" 1>&2
echo "$0: debug[3]: PANDOC_WRAPPER=$PANDOC_WRAPPER" 1>&2
echo "$0: debug[3]: REPO_URL=$REPO_URL" 1>&2
echo "$0: debug[3]: SITE_URL=$SITE_URL" 1>&2
echo "$0: debug[3]: AUTHOR_PATH=$AUTHOR_PATH" 1>&2
echo "$0: debug[3]: BIN_PATH=$BIN_PATH" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: EXIT_CODE=$EXIT_CODE" 1>&2
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
for index in "${!TOOL_OPTION[@]}"; do
echo "$0: debug[3]: TOOL_OPTION[$index]=${TOOL_OPTION[$index]}" 1>&2
done
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
echo "$0: debug[3]: AUTHOR_PATH=$AUTHOR_PATH" 1>&2
echo "$0: debug[3]: AUTHOR_DIR=$AUTHOR_DIR" 1>&2
echo "$0: debug[3]: BIN_PATH=$BIN_PATH" 1>&2
fi
# -N stops early before any processing is performed
+8 -7
View File
@@ -64,6 +64,7 @@ status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
export DOCROOT_SLASH="./"
export TAGLINE="bin/$NAME"
export MD2HTML_SH="bin/md2html.sh"
@@ -358,23 +359,23 @@ if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: TAGLINE=$TAGLINE" 1>&2
echo "$0: debug[3]: MD2HTML_SH=$MD2HTML_SH" 1>&2
echo "$0: debug[3]: PANDOC_WRAPPER=$PANDOC_WRAPPER" 1>&2
echo "$0: debug[3]: REPO_URL=$REPO_URL" 1>&2
echo "$0: debug[3]: SITE_URL=$SITE_URL" 1>&2
echo "$0: debug[3]: AUTHOR_PATH=$AUTHOR_PATH" 1>&2
echo "$0: debug[3]: BIN_PATH=$BIN_PATH" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: EXIT_CODE=$EXIT_CODE" 1>&2
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
for index in "${!TOOL_OPTION[@]}"; do
echo "$0: debug[3]: TOOL_OPTION[$index]=${TOOL_OPTION[$index]}" 1>&2
done
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
echo "$0: debug[3]: LOCATION_TOOL=$LOCATION_TOOL" 1>&2
echo "$0: debug[3]: AUTHOR_PATH=$AUTHOR_PATH" 1>&2
echo "$0: debug[3]: AUTHOR_DIR=$AUTHOR_DIR" 1>&2
echo "$0: debug[3]: BIN_PATH=$BIN_PATH" 1>&2
echo "$0: debug[3]: LOCATION_HTML=$LOCATION_HTML" 1>&2
fi
+404
View File
@@ -0,0 +1,404 @@
#!/usr/bin/env bash
#
# gen-year-index.sh - create year level index.html
#
# Create an index.html file for a given IOCCC year.
#
# Copyright (c) 2024 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# firewall - must be bash with a version 4.2 or later
#
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
#
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
exit 4
fi
# setup bash file matching
#
# Requires bash with a version 4.2 or later
#
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
shopt -u failglob # disable error message if no matches are found
shopt -u dotglob # disable matching files starting with .
shopt -s globskipdots # enable never matching . or ..
shopt -u nocaseglob # disable strict case matching
shopt -u extglob # enable extended globbing patterns
shopt -s globstar # enable ** to match all files and zero or more directories and subdirectories
# set variables referenced in the usage message
#
export VERSION="1.0 2024-02-12"
NAME=$(basename "$0")
export NAME
export V_FLAG=0
GIT_TOOL=$(type -P git)
export GIT_TOOL
if [[ -z "$GIT_TOOL" ]]; then
echo "$0: FATAL: git tool is not installed or not in \$PATH" 1>&2
exit 210
fi
"$GIT_TOOL" rev-parse --is-inside-work-tree >/dev/null 2>&1
status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
export DOCROOT_SLASH="../../"
export TAGLINE="bin/$NAME"
export MD2HTML_SH="bin/md2html.sh"
export REPO_URL="https://github.com/ioccc-src/temp-test-ioccc"
export SITE_URL="https://ioccc-src.github.io/temp-test-ioccc"
# clear options we will add to tools
#
unset TOOL_OPTION
declare -ag TOOL_OPTION
# set usage message
#
export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] [-n] [-N]
[-t tagline] [-T md2html.sh] [-u repo_url] [-w site_url]
YYYY [more_options]
-h print help message and exit
-v level set verbosity level (def level: 0)
-V print version string and exit
-d topdir set topdir (def: $TOPDIR)
-D docroot/ set the document root path followed by slash (def: $DOCROOT_SLASH)
NOTE: 'docroot' must end in a slash
-n go thru the actions, but do not update any files (def: do the action)
-N do not process file, just parse arguments and ignore the file (def: process the file)
-t tagline string to write about the tool that formed the markdown content (def: $TAGLINE)
-T md2html.sh run 'markdown to html tool' to convert markdown into HTML (def: $MD2HTML_SH)
-u repo_url Base level URL of target git repo (def: $REPO_URL)
-w site_url Base URL of the web site (def: $SITE_URL)
YYYY path from topdir to year directory: must contain the files: README.md, .path and .entry.json
[more_options] additional tool command line options to use before the YYYY argument
Exit codes:
0 all OK
2 -h and help string printed or -V and version string printed
3 command line error
4 bash version is < 4.2
5 YYYY is not a year directory
6 subst.year-navbar.awk tool or pandoc wrapper not found
7 cannot find a non-empty or read .year file
8 .year file under year YYYY is not a non-empty readable file
>= 10 < 210 ((not used))
>= 210 internal tool error
$NAME version: $VERSION"
# setup
#
export NOOP=
export DO_NOT_PROCESS=
# parse command line
#
while getopts :hv:Vd:D:nNt:T:u:w: flag; do
case "$flag" in
h) echo "$USAGE" 1>&2
exit 2
;;
v) V_FLAG="$OPTARG"
;;
V) echo "$VERSION"
exit 2
;;
d) TOPDIR="$OPTARG"
;;
D) # parse -D docroot/
case "$OPTARG" in
*/) ;;
*) echo "$0: ERROR: in -D docroot/, the docroot must end in /" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
esac
DOCROOT_SLASH="$OPTARG"
TOOL_OPTION+=("-D")
TOOL_OPTION+=("$DOCROOT_SLASH")
;;
n) NOOP="-n"
;;
N) DO_NOT_PROCESS="-N"
;;
t) # parse -t tagline
case "$OPTARG" in
*"'"*)
echo "$0: ERROR: in -t tagline, the tagline may not contain a single-quote character: $OPTARG" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
*'"'*)
echo "$0: ERROR: in -t tagline, the tagline may not contain a double-quote character: $OPTARG" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
*) ;;
esac
TAGLINE="$OPTARG"
TOOL_OPTION+=("-t")
TOOL_OPTION+=("$TAGLINE")
;;
T) MD2HTML_SH="$OPTARG"
TOOL_OPTION+=("-T")
TOOL_OPTION+=("$MD2HTML_SH")
;;
u) REPO_URL="$OPTARG"
TOOL_OPTION+=("-u")
TOOL_OPTION+=("$REPO_URL")
;;
w) SITE_URL="$OPTARG"
TOOL_OPTION+=("-w")
TOOL_OPTION+=("$SITE_URL")
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
# parse the command line arguments
#
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: debug level: $V_FLAG" 1>&2
fi
#
shift $(( OPTIND - 1 ));
#
# verify arg count and parse args
#
export YYYY
case "$#" in
0) echo "$0: ERROR: expected 1 or more args, found: $#" 1>&2
echo "$USAGE" 1>&2
exit 3
;;
1) YYYY="$1"
;;
*) YYYY="$1"
shift
while [[ $# -gt 0 ]]; do
TOOL_OPTION+=("$1")
shift
done
;;
esac
#
if [[ -z $YYYY ]]; then
echo "$0: ERROR: YYYY arg is empty" 1>&2
echo "$USAGE" 1>&2
exit 3
fi
# verify that we have a topdir directory
#
REPO_NAME=$(basename "$REPO_URL")
export REPO_NAME
if [[ -z $TOPDIR ]]; then
echo "$0: ERROR: cannot find top of git repo directory" 1>&2
echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
exit 211
fi
if [[ ! -e $TOPDIR ]]; then
echo "$0: ERROR: TOPDIR does not exist: $TOPDIR" 1>&2
echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
exit 212
fi
if [[ ! -d $TOPDIR ]]; then
echo "$0: ERROR: TOPDIR is not a directory: $TOPDIR" 1>&2
echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
exit 213
fi
# cd to topdir
#
if [[ ! -e $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to non-existent path: $TOPDIR" 1>&2
exit 217
fi
if [[ ! -d $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to a non-directory: $TOPDIR" 1>&2
exit 218
fi
export CD_FAILED
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: about to: cd $TOPDIR" 1>&2
fi
cd "$TOPDIR" || CD_FAILED="true"
if [[ -n $CD_FAILED ]]; then
echo "$0: ERROR: cd $TOPDIR failed" 1>&2
exit 219
fi
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: now in directory: $(/bin/pwd)" 1>&2
fi
# verify that YYYY is a entry directory
#
if [[ ! -d $YYYY ]]; then
echo "$0: ERROR: arg is not a directory: $YYYY" 1>&2
exit 5
fi
if [[ ! -r $YYYY ]]; then
echo "$0: ERROR: arg is not a writable directory: $YYYY" 1>&2
exit 5
fi
# verify that YYYY has a non-empty readable .year file
#
export YEAR_FILE="$YYYY/.year"
if [[ ! -e $YEAR_FILE ]]; then
echo "$0: ERROR: YYYY/.year does not exist: $YEAR_FILE" 1>&2
exit 7
fi
if [[ ! -f $YEAR_FILE ]]; then
echo "$0: ERROR: YYYY/.year is not a regular file: $YEAR_FILE" 1>&2
exit 7
fi
if [[ ! -r $YEAR_FILE ]]; then
echo "$0: ERROR: YYYY/.year is not an readable file: $YEAR_FILE" 1>&2
exit 7
fi
if [[ ! -s $YEAR_FILE ]]; then
echo "$0: ERROR: YYYY/.year is not a non-empty readable file: $YEAR_FILE" 1>&2
exit 7
fi
# verify that YYYY/README.md is a non-empty readable file
#
export README_FILE="$YYYY/README.md"
if [[ ! -e $README_FILE ]]; then
echo "$0: ERROR: year $YYYY README.md does not exist: $README_FILE" 1>&2
exit 8
fi
if [[ ! -f $README_FILE ]]; then
echo "$0: ERROR: year $YYYY README.md is not a file: $README_FILE" 1>&2
exit 8
fi
if [[ ! -r $README_FILE ]]; then
echo "$0: ERROR: year $YYYY README.md is not a readable file: $README_FILE" 1>&2
exit 8
fi
if [[ ! -s $README_FILE ]]; then
echo "$0: ERROR: year $YYYY README.md is not a non-empty readable file: $README_FILE" 1>&2
exit 8
fi
# verify that the md2html.sh is executable
#
if [[ ! -e $MD2HTML_SH ]]; then
echo "$0: ERROR: md2html.sh does not exist: $MD2HTML_SH" 1>&2
exit 5
fi
if [[ ! -f $MD2HTML_SH ]]; then
echo "$0: ERROR: md2html.sh is not a regular file: $MD2HTML_SH" 1>&2
exit 5
fi
if [[ ! -x $MD2HTML_SH ]]; then
echo "$0: ERROR: md2html.sh is not an executable file: $MD2HTML_SH" 1>&2
exit 5
fi
# parameter debugging
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: VERSION=$VERSION" 1>&2
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: TAGLINE=$TAGLINE" 1>&2
echo "$0: debug[3]: MD2HTML_SH=$MD2HTML_SH" 1>&2
echo "$0: debug[3]: REPO_URL=$REPO_URL" 1>&2
echo "$0: debug[3]: SITE_URL=$SITE_URL" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: YYYY=$YYYY" 1>&2
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
for index in "${!TOOL_OPTION[@]}"; do
echo "$0: debug[3]: TOOL_OPTION[$index]=${TOOL_OPTION[$index]}" 1>&2
done
echo "$0: debug[3]: YEAR_FILE=$YEAR_FILE" 1>&2
echo "$0: debug[3]: README_FILE=$README_FILE" 1>&2
fi
# If -N, time to exit
#
if [[ -n $DO_NOT_PROCESS ]]; then
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: arguments parsed, -N given, exit 0" 1>&2
fi
exit 0
fi
# form the YYYY index.html unless -n
#
if [[ -z $NOOP ]]; then
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: about to run: $MD2HTML_SH ${TOOL_OPTION[*]} -- $YYYY/README.md $YYYY/index.html" 1>&2
fi
"$MD2HTML_SH" "${TOOL_OPTION[@]}" -- "$YYYY/README.md" "$YYYY/index.html"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: tool: $MD2HTML_SH ${TOOL_OPTION[*]} -- $YYYY/README.md $YYYY/index.html failed, error: $status" 1>&2
exit 1
fi
# report disabled by -n
#
elif [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: because of -n, did not run: $MD2HTML_SH ${TOOL_OPTION[*]} -- $YYYY/README.md $YYYY/index.html" 1>&2
fi
# All Done!!! -- Jessica Noll, Age 2
#
exit 0
+7 -5
View File
@@ -64,6 +64,7 @@ status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
TAC_TOOL=$(type -P tac)
export TAC_TOOL
if [[ ! -x $TAC_TOOL ]]; then
@@ -480,6 +481,7 @@ if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: TAC_TOOL=$TAC_TOOL" 1>&2
echo "$0: debug[3]: FMT_TOOL=$FMT_TOOL" 1>&2
echo "$0: debug[3]: TAGLINE=$TAGLINE" 1>&2
@@ -487,17 +489,17 @@ if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: PANDOC_WRAPPER=$PANDOC_WRAPPER" 1>&2
echo "$0: debug[3]: REPO_URL=$REPO_URL" 1>&2
echo "$0: debug[3]: SITE_URL=$SITE_URL" 1>&2
echo "$0: debug[3]: BIN_PATH=$BIN_PATH" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: TOP_FILE=$TOP_FILE" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: EXIT_CODE=$EXIT_CODE" 1>&2
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
for index in "${!TOOL_OPTION[@]}"; do
echo "$0: debug[3]: TOOL_OPTION[$index]=${TOOL_OPTION[$index]}" 1>&2
done
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
echo "$0: debug[3]: BIN_PATH=$BIN_PATH" 1>&2
echo "$0: debug[3]: BIN_DIR=$BIN_DIR" 1>&2
echo "$0: debug[3]: TOP_FILE=$TOP_FILE" 1>&2
echo "$0: debug[3]: YEARS_HTML=$YEARS_HTML" 1>&2
fi
# -N stops early before any processing is performed
+21 -13
View File
@@ -122,6 +122,7 @@ status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
export DOCROOT_SLASH="./"
export PANDOC_WRAPPER="bin/pandoc-wrapper.sh"
export REPO_URL="https://github.com/ioccc-src/temp-test-ioccc"
@@ -673,25 +674,32 @@ function debug_parameters
# print values that could be modified by parse_command_line
#
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: NOOP=$NOOP" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: VERSION=$VERSION" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: NAME=$NAME" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: MD2HTML_CFG=$MD2HTML_CFG" 1>&2
for index in "${!PHASE_NAME[@]}"; do
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: phase name $index: ${PHASE_NAME[$index]}"
done 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: TAGLINE=$TAGLINE" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: BEFORE_TOOL=$BEFORE_TOOL" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: PANDOC_WRAPPER=$PANDOC_WRAPPER" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: AFTER_TOOL=$AFTER_TOOL" 1>&2
for index in "${!TOKEN[@]}"; do
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: token $index to be replaced with: ${TOKEN[$index]}"
done 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: CAP_S_FLAG=$CAP_S_FLAG" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: REPO_URL=$REPO_URL" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: SITE_URL=$SITE_URL" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: URL=$URL" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: NOOP=$NOOP" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: MD2HTML_CFG=$MD2HTML_CFG" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: TAGLINE=$TAGLINE" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: BEFORE_TOOL=$BEFORE_TOOL" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: AFTER_TOOL=$AFTER_TOOL" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: WORKING_DIR=$WORKING_DIR" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: REPO_NAME=$REPO_NAME" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: INC_PATH=$INC_PATH" 1>&2
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: TOP=$TOP" 1>&2
for index in "${!PHASE_NAME[@]}"; do
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: phase name $index: ${PHASE_NAME[$index]}"
done 1>&2
for index in "${!TOKEN[@]}"; do
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: token $index to be replaced with: ${TOKEN[$index]}"
done 1>&2
for index in "${!OUTPUT_TOOL[@]}"; do
echo "$0: debug[$DEBUG_LEVEL]: $DBG_PREFIX: OUTPUT_TOOL[$index]=${OUTPUT_TOOL[$index]}"
done 1>&2
+18 -13
View File
@@ -70,6 +70,7 @@ status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
export DOCROOT_SLASH="../../"
export PANDOC_WRAPPER="bin/pandoc-wrapper.sh"
export REPO_URL="https://github.com/ioccc-src/temp-test-ioccc"
@@ -568,28 +569,32 @@ fi
# parameter debugging
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: VERSION=$VERSION" 1>&2
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: YEAR_DIR=$YEAR_DIR" 1>&2
echo "$0: debug[3]: ENTRY_DIR=$ENTRY_DIR" 1>&2
echo "$0: debug[3]: ENTRY_ID=$ENTRY_ID" 1>&2
echo "$0: debug[3]: DOT_YEAR=$DOT_YEAR" 1>&2
echo "$0: debug[3]: DOT_PATH=$DOT_PATH" 1>&2
echo "$0: debug[3]: ENTRY_JSON=$ENTRY_JSON" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: PANDOC_WRAPPER=$PANDOC_WRAPPER" 1>&2
echo "$0: debug[3]: REPO_URL=$REPO_URL" 1>&2
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
echo "$0: debug[3]: URL=$URL" 1>&2
echo "$0: debug[3]: SITE_URL=$SITE_URL" 1>&2
echo "$0: debug[3]: URL=$URL" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: ENTRY_PATH=$ENTRY_PATH" 1>&2
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
echo "$0: debug[3]: AUTHOR_PATH=$AUTHOR_PATH" 1>&2
echo "$0: debug[3]: AUTHOR_DIR=$AUTHOR_DIR" 1>&2
echo "$0: debug[3]: INC_PATH=$INC_PATH" 1>&2
echo "$0: debug[3]: INC_DIR=$INC_DIR" 1>&2
echo "$0: debug[3]: BIN_PATH=$BIN_PATH" 1>&2
echo "$0: debug[3]: BIN_DIR=$BIN_DIR" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: PANDOC_WRAPPER=$PANDOC_WRAPPER" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
echo "$0: debug[3]: YEAR_DIR=$YEAR_DIR" 1>&2
echo "$0: debug[3]: ENTRY_DIR=$ENTRY_DIR" 1>&2
echo "$0: debug[3]: ENTRY_ID=$ENTRY_ID" 1>&2
echo "$0: debug[3]: DOT_YEAR=$DOT_YEAR" 1>&2
echo "$0: debug[3]: DOT_PATH=$DOT_PATH" 1>&2
echo "$0: debug[3]: ENTRY_JSON=$ENTRY_JSON" 1>&2
fi
# Set AUTHOR_HANDLE_SET with author handles from .entry.json
+18 -11
View File
@@ -70,6 +70,7 @@ status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
export PANDOC_WRAPPER="bin/pandoc-wrapper.sh"
export DOCROOT_SLASH="../../"
export REPO_URL="https://github.com/ioccc-src/temp-test-ioccc"
@@ -388,28 +389,34 @@ fi
# parameter debugging
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: VERSION=$VERSION" 1>&2
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: YEAR_DIR=$YEAR_DIR" 1>&2
echo "$0: debug[3]: ENTRY_DIR=$ENTRY_DIR" 1>&2
echo "$0: debug[3]: ENTRY_ID=$ENTRY_ID" 1>&2
echo "$0: debug[3]: DOT_YEAR=$DOT_YEAR" 1>&2
echo "$0: debug[3]: DOT_PATH=$DOT_PATH" 1>&2
echo "$0: debug[3]: ENTRY_JSON=$ENTRY_JSON" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: PANDOC_WRAPPER=$PANDOC_WRAPPER" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: REPO_URL=$REPO_URL" 1>&2
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
echo "$0: debug[3]: URL=$URL" 1>&2
echo "$0: debug[3]: SITE_URL=$SITE_URL" 1>&2
echo "$0: debug[3]: URL=$URL" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: ENTRY_PATH=$ENTRY_PATH" 1>&2
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
echo "$0: debug[3]: AUTHOR_PATH=$AUTHOR_PATH" 1>&2
echo "$0: debug[3]: AUTHOR_DIR=$AUTHOR_DIR" 1>&2
echo "$0: debug[3]: INC_PATH=$INC_PATH" 1>&2
echo "$0: debug[3]: INC_DIR=$INC_DIR" 1>&2
echo "$0: debug[3]: BIN_PATH=$BIN_PATH" 1>&2
echo "$0: debug[3]: BIN_DIR=$BIN_DIR" 1>&2
echo "$0: debug[3]: PANDOC_WRAPPER=$PANDOC_WRAPPER" 1>&2
echo "$0: debug[3]: YEAR_DIR=$YEAR_DIR" 1>&2
echo "$0: debug[3]: ENTRY_DIR=$ENTRY_DIR" 1>&2
echo "$0: debug[3]: ENTRY_ID=$ENTRY_ID" 1>&2
echo "$0: debug[3]: DOT_YEAR=$DOT_YEAR" 1>&2
echo "$0: debug[3]: YYYY_DIR=$YYYY_DIR" 1>&2
echo "$0: debug[3]: DOT_PATH=$DOT_PATH" 1>&2
echo "$0: debug[3]: ENTRY_JSON=$ENTRY_JSON" 1>&2
echo "$0: debug[3]: MANIFEST_ENTRY_JSON_AWK=$MANIFEST_ENTRY_JSON_AWK" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
fi
# If -N, time to exit
+655
View File
@@ -0,0 +1,655 @@
#!/usr/bin/env bash
#
# output-year-index.sh - output markdown of winner links for a given year
#
# This tool is used in conjunction with the inc/md2html.cfg configuration
# file, and the tools that use that use that configuration file such as "bin/md2html.sh".
#
# It is usually invoked by:
#
# -a bin/output-year-index.sh
#
# Copyright (c) 2024 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# firewall - must be bash with a version 4.2 or later
#
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
#
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
exit 4
fi
# setup bash file matching
#
# Requires bash with a version 4.2 or later
#
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
shopt -u failglob # disable error message if no matches are found
shopt -u dotglob # disable matching files starting with .
shopt -s globskipdots # enable never matching . or ..
shopt -u nocaseglob # disable strict case matching
shopt -u extglob # enable extended globbing patterns
shopt -s globstar # enable ** to match all files and zero or more directories and subdirectories
# set variables referenced in the usage message
#
export VERSION="1.0 2024-02-12"
NAME=$(basename "$0")
export NAME
export V_FLAG=0
GIT_TOOL=$(type -P git)
export GIT_TOOL
if [[ -z "$GIT_TOOL" ]]; then
echo "$0: FATAL: git tool is not installed or not in \$PATH" 1>&2
exit 210
fi
"$GIT_TOOL" rev-parse --is-inside-work-tree >/dev/null 2>&1
status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
export DOCROOT_SLASH="../../"
export REPO_URL="https://github.com/ioccc-src/temp-test-ioccc"
export SITE_URL="https://ioccc-src.github.io/temp-test-ioccc"
# set usage message
#
export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] [-n] [-N]
[-p tool] [-u repo_url] [-U URL] [-w site_url] [-e string ..] [-E exitcode]
YYYY [more_options]
-h print help message and exit
-v level set verbosity level (def level: 0)
-V print version string and exit
-d topdir set topdir (def: $TOPDIR)
-D docroot/ set the document root path followed by slash (def: $DOCROOT_SLASH)
NOTE: 'docroot' must end in a slash
-n go thru the actions, but do not update any files (def: do the action)
-N do not process file, just parse arguments and ignore the file (def: process the file)
-p tool run 'pandoc wrapper tool' (not pandoc path) during HTML phase number 21 (def: use $PANDOC_WRAPPER)
-u repo_url Base level URL of target git repo (def: $REPO_URL)
-U url URL of HTML file being formed (def: $URL)
-w site_url Base URL of the web site (def: $SITE_URL)
-e string output string, followed by newline, to stderr (def: do not)
-E exitcode force exit with exitcode (def: exit based on success or failure of the action)
YYYY path from topdir to year directory: must contain the files: README.md, .path and .entry.json
[more_options] additional tool command line options to use before the YYYY/dir argument
Exit codes:
0 all OK
2 -h and help string printed or -V and version string printed
3 command line error
4 bash version is < 4.2
5 YYYY is not a year directory
6 subst.year-navbar.awk tool or pandoc wrapper not found
7 cannot find a non-empty or read .year file
8 entry under year YYYY is not in proper form
>= 10 < 210 ((not used))
>= 210 internal tool error
$NAME version: $VERSION"
# output_award
#
# Write the award name to standard output (stdout)
#
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
# XXX - until we have the jnamval command, we must FAKE PARSE the .entry.json file - XXX
# XXX - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - GROSS HACK - XXX
# XXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXX
#
# usage:
# output_award YYYY/dir/.entry.json
#
# returns:
# 0 ==> no errors detected, but output may be empty
# > 0 ==> function error number
#
function output_award
{
local ENTRY_JSON_PATH; # the .entry.json path
# parse args
#
if [[ $# -ne 1 ]]; then
echo "$0: ERROR: in output_award: expected 1 arg, found $#" 1>&2
return 1
fi
ENTRY_JSON_PATH="$1"
if [[ ! -e $ENTRY_JSON_PATH ]]; then
echo "$0: ERROR: in output_award: .entry.json does not exist: $ENTRY_JSON_PATH" 1>&2
return 2
fi
if [[ ! -f $ENTRY_JSON_PATH ]]; then
echo "$0: ERROR: in output_award: .entry.json is not a file: $ENTRY_JSON_PATH" 1>&2
return 3
fi
if [[ ! -r $ENTRY_JSON_PATH ]]; then
echo "$0: ERROR: in output_award: .entry.json is not a readable file: $ENTRY_JSON_PATH" 1>&2
return 4
fi
# obtain the award string
#
AWARD=$(grep -F '"award" : "' "$ENTRY_JSON_PATH" | sed -e 's/^.*"award" : "//' -e 's/",//')
if [[ -z $AWARD ]]; then
echo "$0: ERROR: in output_award: no award found in .entry.json file: $ENTRY_JSON_PATH" 1>&2
return 5
fi
echo "$AWARD"
return 0
}
# output_ordinal
#
# Write the numerical ordinal form of a non-negative integer to standard output (stdout)
#
# usage:
# output_ordinal integer
#
# returns:
# 0 ==> no errors detected
# > 0 ==> function error number
#
function output_ordinal
{
local INTEGER; # integer argument
# parse args
#
if [[ $# -ne 1 ]]; then
echo "$0: ERROR: in output_ordinal: expected 1 arg, found $#" 1>&2
return 1
fi
INTEGER="$1"
if [[ $INTEGER =~ ^-?[0-9]+$ ]]; then
:
else
echo "$0: ERROR: argument is not an integer: $INTEGER" 1>&2
return 2
fi
if [[ $INTEGER -lt 0 ]]; then
echo "$0: ERROR: integer is negative: $INTEGER" 1>&2
return 3
fi
# case: 11, 12, 13 are N-th
#
if [[ $INTEGER -ge 11 && $INTEGER -le 13 ]]; then
echo "${INTEGER}th"
# case: 1 mod 10 is N-st
#
elif [[ $((INTEGER % 10)) -eq 1 ]]; then
echo "${INTEGER}st"
# case: 2 mod 10 is N-nd
#
elif [[ $((INTEGER % 10)) -eq 2 ]]; then
echo "${INTEGER}nd"
# case: 3 mod 10 is N-rd
#
elif [[ $((INTEGER % 10)) -eq 3 ]]; then
echo "${INTEGER}rd"
# case: everything else is N-th
#
else
echo "${INTEGER}th"
fi
return 0
}
# setup
#
export NOOP=
export DO_NOT_PROCESS=
# parse command line
#
while getopts :hv:Vd:D:nNp:u:U:w:e:E: flag; do
case "$flag" in
h) echo "$USAGE" 1>&2
exit 2
;;
v) V_FLAG="$OPTARG"
;;
V) echo "$VERSION"
exit 2
;;
d) TOPDIR="$OPTARG"
;;
D) # parse -D docroot/
case "$OPTARG" in
*/) ;;
*) echo "$0: ERROR: in -D docroot/, the docroot must end in /" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
esac
DOCROOT_SLASH="$OPTARG"
;;
n) NOOP="-n"
;;
N) DO_NOT_PROCESS="-N"
;;
p) PANDOC_WRAPPER="$OPTARG"
;;
u) REPO_URL="$OPTARG"
;;
U) URL="$OPTARG"
;;
w) SITE_URL="$OPTARG"
;;
e) echo "$OPTARG" 1>&2
;;
E) exit "$OPTARG"
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
# parse the command line arguments
#
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: debug level: $V_FLAG" 1>&2
fi
#
shift $(( OPTIND - 1 ));
#
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: file argument count: $#" 1>&2
fi
if [[ $# -ne 1 ]]; then
echo "$0: ERROR: expected 1 arg, found: $#" 1>&2
exit 3
fi
#
export YYYY="$1"
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: YYYY=$YYYY" 1>&2
fi
if [[ -z $YYYY ]]; then
echo "$0: ERROR: YYYY arg is empty" 1>&2
exit 3
fi
# verify that we have a topdir directory
#
REPO_NAME=$(basename "$REPO_URL")
export REPO_NAME
if [[ -z $TOPDIR ]]; then
echo "$0: ERROR: cannot find top of git repo directory" 1>&2
echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
exit 211
fi
if [[ ! -e $TOPDIR ]]; then
echo "$0: ERROR: TOPDIR does not exist: $TOPDIR" 1>&2
echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
exit 212
fi
if [[ ! -d $TOPDIR ]]; then
echo "$0: ERROR: TOPDIR is not a directory: $TOPDIR" 1>&2
echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
exit 213
fi
# cd to topdir
#
if [[ ! -e $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to non-existent path: $TOPDIR" 1>&2
exit 217
fi
if [[ ! -d $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to a non-directory: $TOPDIR" 1>&2
exit 218
fi
export CD_FAILED
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: about to: cd $TOPDIR" 1>&2
fi
cd "$TOPDIR" || CD_FAILED="true"
if [[ -n $CD_FAILED ]]; then
echo "$0: ERROR: cd $TOPDIR failed" 1>&2
exit 219
fi
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: now in directory: $(/bin/pwd)" 1>&2
fi
# verify we have the pandoc wrapper
#
if [[ ! -e $PANDOC_WRAPPER ]]; then
echo "$0: ERROR: pandoc wrapper tool does not exist: $PANDOC_WRAPPER" 1>&2
exit 6
fi
if [[ ! -f $PANDOC_WRAPPER ]]; then
echo "$0: ERROR: pandoc wrapper tool is not a file: $PANDOC_WRAPPER" 1>&2
exit 6
fi
if [[ ! -x $PANDOC_WRAPPER ]]; then
echo "$0: ERROR: pandoc wrapper tool is not an executable file: $PANDOC_WRAPPER" 1>&2
exit 6
fi
# verify that YYYY is a entry directory
#
if [[ ! -d $YYYY ]]; then
echo "$0: ERROR: arg is not a directory: $YYYY" 1>&2
exit 5
fi
if [[ ! -r $YYYY ]]; then
echo "$0: ERROR: arg is not a writable directory: $YYYY" 1>&2
exit 5
fi
# verify we have a non-empty readable .top file
#
export TOP_FILE=".top"
if [[ ! -e $TOP_FILE ]]; then
echo "$0: ERROR: .top does not exist: $TOP_FILE" 1>&2
exit 6
fi
if [[ ! -f $TOP_FILE ]]; then
echo "$0: ERROR: .top is not a regular file: $TOP_FILE" 1>&2
exit 6
fi
if [[ ! -r $TOP_FILE ]]; then
echo "$0: ERROR: .top is not an readable file: $TOP_FILE" 1>&2
exit 6
fi
if [[ ! -s $TOP_FILE ]]; then
echo "$0: ERROR: .top is not a non-empty readable file: $TOP_FILE" 1>&2
exit 6
fi
# verify that YYYY has a non-empty readable .year file
#
export YEAR_FILE="$YYYY/.year"
if [[ ! -e $YEAR_FILE ]]; then
echo "$0: ERROR: YYYY/.year does not exist: $YEAR_FILE" 1>&2
exit 7
fi
if [[ ! -f $YEAR_FILE ]]; then
echo "$0: ERROR: YYYY/.year is not a regular file: $YEAR_FILE" 1>&2
exit 7
fi
if [[ ! -r $YEAR_FILE ]]; then
echo "$0: ERROR: YYYY/.year is not an readable file: $YEAR_FILE" 1>&2
exit 7
fi
if [[ ! -s $YEAR_FILE ]]; then
echo "$0: ERROR: YYYY/.year is not a non-empty readable file: $YEAR_FILE" 1>&2
exit 7
fi
# determine The N-th IOCCC string
#
LINE_NUM=$(sed -n "/$YYYY/=" "$TOP_FILE" | head -1)
if [[ -z $LINE_NUM ]]; then
echo "$0: ERROR: cannot determine line number in $TOP_FILE for year: $YYYY" 1>&2
exit 220
fi
ORDINAL=$(output_ordinal "$LINE_NUM")
export ORDINAL
if [[ -z $ORDINAL ]]; then
echo "$0: ERROR: cannot determine ordinal for: $LINE_NUM" 1>&2
exit 221
fi
# parameter debugging
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: VERSION=$VERSION" 1>&2
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: REPO_URL=$REPO_URL" 1>&2
echo "$0: debug[3]: URL=$URL" 1>&2
echo "$0: debug[3]: SITE_URL=$SITE_URL" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: YYYY=$YYYY" 1>&2
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
echo "$0: debug[3]: TOP_FILE=$TOP_FILE" 1>&2
echo "$0: debug[3]: YEAR_FILE=$YEAR_FILE" 1>&2
echo "$0: debug[3]: LINE_NUM=$LINE_NUM" 1>&2
echo "$0: debug[3]: ORDINAL=$ORDINAL" 1>&2
fi
# If -N, time to exit
#
if [[ -n $DO_NOT_PROCESS ]]; then
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: arguments parsed, -N given, exit 0" 1>&2
fi
exit 0
fi
# create a temporary markdown for pandoc to process
#
TMP_FILE=".$NAME.$$.md"
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: temporary markdown file: $TMP_FILE" 1>&2
fi
if [[ -z $NOOP ]]; then
trap 'rm -f $TMP_FILE; exit' 0 1 2 3 15
rm -f "$TMP_FILE"
if [[ -e $TMP_FILE ]]; then
echo "$0: ERROR: cannot remove temporary markdown file: $TMP_FILE" 1>&2
exit 227
fi
:> "$TMP_FILE"
if [[ ! -e $TMP_FILE ]]; then
echo "$0: ERROR: cannot create temporary markdown file: $TMP_FILE" 1>&2
exit 228
fi
elif [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: because of -n, temporary markdown file is not used: $TMP_FILE" 1>&2
fi
# output leading markdown for this IOCCC year
#
{
echo "# <a name=inventory></a><a name=$YYYY></a>Winning Entries of $YYYY - The $ORDINAL IOCCC"
echo
echo "**Download IOCCC** [$YYYY entry source]($YYYY/ioccc.$YYYY.tar.bz2)"
echo
} | if [[ -z $NOOP ]]; then
cat >> "$TMP_FILE"
else
cat > /dev/null
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: because of -n, IOCCC year $YYYY starting markdown not written to stdout" 1>&2
fi
fi
# process each entry under YYYY
#
export YYYY_DIR
for YYYY_DIR in $(< "$YEAR_FILE"); do
# debug YYYY
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: starting to process year/dir: $YYYY_DIR" 1>&2
fi
# parse YYYY_DIR
#
if [[ ! -d $YYYY_DIR ]]; then
echo "$0: ERROR: YYYY_DIR is not a directory: $YYYY_DIR" 1>&2
exit 8
fi
if [[ ! -w $YYYY_DIR ]]; then
echo "$0: ERROR: YYYY_DIR is not a writable directory: $YYYY_DIR" 1>&2
exit 8
fi
export YEAR_DIR=${YYYY_DIR%%/*}
if [[ -z $YEAR_DIR ]]; then
echo "$0: ERROR: YYYY_DIR not in YYYY/dir form: $YYYY_DIR" 1>&2
exit 8
fi
export ENTRY_DIR=${YYYY_DIR#*/}
if [[ -z $ENTRY_DIR ]]; then
echo "$0: ERROR: YYYY_DIR not in $YEAR_DIR/dir form: $YYYY_DIR" 1>&2
exit 8
fi
if [[ $ENTRY_DIR = */* ]]; then
echo "$0: ERROR: YYYY_DIR: $YYYY_DIR dir contains a /: $ENTRY_DIR" 1>&2
exit 8
fi
# verify that YYYY_DIR is a writable directory
#
if [[ ! -e $YYYY_DIR ]]; then
echo "$0: ERROR: YYYY_DIR does not exist: $YYYY_DIR" 1>&2
exit 8
fi
if [[ ! -d $YYYY_DIR ]]; then
echo "$0: ERROR: YYYY_DIR is not a directory: $YYYY_DIR" 1>&2
exit 8
fi
if [[ ! -w $YYYY_DIR ]]; then
echo "$0: ERROR: YYYY_DIR is not an writable directory: $YYYY_DIR" 1>&2
exit 8
fi
# verify YYYY/dir/.path
#
export DOT_PATH="$YYYY_DIR/.path"
if [[ ! -s $DOT_PATH ]]; then
echo "$0: ERROR: not a non-empty file: $DOT_PATH" 1>&2
exit 8
fi
DOT_PATH_CONTENT=$(< "$DOT_PATH")
if [[ $YYYY_DIR != "$DOT_PATH_CONTENT" ]]; then
echo "$0: ERROR: arg: $YYYY_DIR does not match $DOT_PATH contents: $DOT_PATH_CONTENT" 1>&2
exit 8
fi
export ENTRY_JSON="$YYYY_DIR/.entry.json"
if [[ ! -e $ENTRY_JSON ]]; then
echo "$0: ERROR: .entry.json does not exist: $ENTRY_JSON" 1>&2
exit 8
fi
if [[ ! -f $ENTRY_JSON ]]; then
echo "$0: ERROR: .entry.json is not a file: $ENTRY_JSON" 1>&2
exit 8
fi
if [[ ! -r $ENTRY_JSON ]]; then
echo "$0: ERROR: .entry.json is not a readable file: $ENTRY_JSON" 1>&2
exit 8
fi
# determine the award for this entry
#
AWARD=$(output_award "$ENTRY_JSON")
if [[ -z $AWARD ]]; then
echo "$0: ERROR: cannot find award in .entry.json: $ENTRY_JSON" 1>&2
exit 8
fi
# output markdown for this entry
#
echo "* [$YYYY_DIR]($YYYY_DIR/index.html) - $AWARD"
done | if [[ -z $NOOP ]]; then
cat >> "$TMP_FILE"
else
cat > /dev/null
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: because of -n, $YYYY entry markdown data is NOT written to stdout" 1>&2
fi
fi
# write trailing markdown for this IOCCC year
#
{
echo
echo '&nbsp;**Jump to:** [top](#)'
echo
} | if [[ -z $NOOP ]]; then
cat >> "$TMP_FILE"
else
cat > /dev/null
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: because of -n, IOCCC year $YYYY ending markdown data is NOT to stdout" 1>&2
fi
fi
# convert temporary markdown file into HTML
#
if [[ -z $NOOP ]]; then
echo "<!-- START: this line starts content generated by: bin/$NAME -->"
echo
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: about to execute: $PANDOC_WRAPPER $TMP_FILE -" 1>&2
fi
"$PANDOC_WRAPPER" "$TMP_FILE" -
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: pandoc failed, error: $status" 1>&2
exit 231
fi
echo
echo "<!-- END: next line ends content generated by: bin/$NAME -->"
elif [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: -n disabled execution of: $PANDOC_WRAPPER $TMP_FILE -" 1>&2
fi
# All Done!!! -- Jessica Noll, Age 2
#
if [[ -z $NOOP ]]; then
rm -f "$TMP_FILE"
elif [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: -n disabled execution of: rm -f $TMP_FILE" 1>&2
fi
exit 0
+11 -3
View File
@@ -72,6 +72,7 @@ status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
PANDOC_TOOL=$(type -P pandoc)
if [[ -z $PANDOC_TOOL ]]; then
PANDOC_TOOL="/opt/homebrew/bin/pandoc"
@@ -290,17 +291,24 @@ fi
# parameter debugging
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: VERSION=$VERSION" 1>&2
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: PANDOC_TOOL=$PANDOC_TOOL" 1>&2
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: PANDOC_WRAPPER=$PANDOC_WRAPPER" 1>&2
echo "$0: debug[3]: REPO_URL=$REPO_URL" 1>&2
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: MARKDOWN_INPUT=$MARKDOWN_INPUT" 1>&2
echo "$0: debug[3]: HTML_OUTPUT=$HTML_OUTPUT" 1>&2
echo "$0: debug[3]: AUTHOR_PATH=$AUTHOR_PATH" 1>&2
echo "$0: debug[3]: AUTHOR_DIR=$AUTHOR_DIR" 1>&2
echo "$0: debug[3]: INC_PATH=$INC_PATH" 1>&2
echo "$0: debug[3]: INC_DIR=$INC_DIR" 1>&2
echo "$0: debug[3]: BIN_PATH=$BIN_PATH" 1>&2
echo "$0: debug[3]: BIN_DIR=$BIN_DIR" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
fi
# If -N, time to exit
+2 -2
View File
@@ -73,6 +73,7 @@ status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
export DOCROOT_SLASH="../../"
# We use the tagline of "bin/readme2index.sh" instead of:
#
@@ -117,7 +118,6 @@ export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] [-D docroot/] [-n] [-N]
-N do not process anything, just parse arguments (def: process something)
-t tagline string to write about the tool that formed the markdown content (def: $TAGLINE)
NOTE: 'pandoc_opts' may be enclosed within, but may NOT contain an internal single-quote or double-quote.
-T md2html.sh run 'markdown to html tool' to convert markdown into HTML (def: $MD2HTML_SH)
-p tool run 'pandoc wrapper tool' (not pandoc path) during HTML phase number 21 (def: use $PANDOC_WRAPPER)
@@ -130,7 +130,7 @@ export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] [-D docroot/] [-n] [-N]
tool the tool to run over all entries
[more_options] additional tool command line options to use before the YYYY/dir argument
NOTE: Any '-t tagline', '-T md2html.sh', '-p tool', '-P pandoc_opts', '-u repo_url', '-U top_url'
NOTE: Any '-t tagline', '-T md2html.sh', '-p tool', '-u repo_url', '-w site_url'
are passed to the 'tool' at the beginning of the command line, and
before any optional 'more_options' and before the final YYYY/dir argument.
+1
View File
@@ -67,6 +67,7 @@ status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
export DOCROOT_SLASH="../../"
export TAGLINE="bin/$NAME"
export MD2HTML_SH="bin/md2html.sh"
+6 -2
View File
@@ -79,6 +79,7 @@ status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
export REPO_URL="https://github.com/ioccc-src/temp-test-ioccc"
export TOP_URL="https://ioccc-src.github.io/temp-test-ioccc"
export SGI_TOOL="bin/sgi.sh"
@@ -309,13 +310,16 @@ fi
# parameter debugging
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: VERSION=$VERSION" 1>&2
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: YEAR_DIR=$YEAR_DIR" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: REPO_URL=$REPO_URL" 1>&2
echo "$0: debug[3]: TOP_URL=$TOP_URL" 1>&2
echo "$0: debug[3]: SGI_TOOL=$SGI_TOOL" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: ENTRY_PATH=$ENTRY_PATH" 1>&2
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
echo "$0: debug[3]: BIN_PATH=$BIN_PATH" 1>&2
+10 -4
View File
@@ -73,6 +73,7 @@ status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
export DOCROOT_SLASH="../../"
export REPO_URL="https://github.com/ioccc-src/temp-test-ioccc"
export SITE_URL="https://ioccc-src.github.io/temp-test-ioccc"
@@ -189,15 +190,24 @@ if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: file argument count: $#" 1>&2
fi
# form Nu Html Checker doc url string
#
VALIDATOR_ENCODED_URL=$(echo "$URL" | sed -e 's;/;%2F;g' -e 's;:;%3A;')
# parameter debugging
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: VERSION=$VERSION" 1>&2
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: REPO_URL=$REPO_URL" 1>&2
echo "$0: debug[3]: SITE_URL=$SITE_URL" 1>&2
echo "$0: debug[3]: URL=$URL" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: VALIDATOR_ENCODED_URL=$VALIDATOR_ENCODED_URL" 1>&2
fi
# If -N, time to exit
@@ -218,10 +228,6 @@ echo "HEADER_1=The International Obfuscated C Code Contest"
#
echo "-s"
echo "DOCROOT_SLASH=$DOCROOT_SLASH"
# form Nu Html Checker doc url string
#
VALIDATOR_ENCODED_URL=$(echo "$URL" | sed -e 's;/;%2F;g' -e 's;:;%3A;')
export VALIDATOR_ENCODED_URL
# output the Validator encoded URL
+14 -9
View File
@@ -73,6 +73,7 @@ status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
export DOCROOT_SLASH="../../"
export REPO_URL="https://github.com/ioccc-src/temp-test-ioccc"
export SITE_URL="https://ioccc-src.github.io/temp-test-ioccc"
@@ -429,28 +430,32 @@ export AWARD
# parameter debugging
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: VERSION=$VERSION" 1>&2
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: YEAR_DIR=$YEAR_DIR" 1>&2
echo "$0: debug[3]: ENTRY_DIR=$ENTRY_DIR" 1>&2
echo "$0: debug[3]: ENTRY_ID=$ENTRY_ID" 1>&2
echo "$0: debug[3]: DOT_YEAR=$DOT_YEAR" 1>&2
echo "$0: debug[3]: DOT_PATH=$DOT_PATH" 1>&2
echo "$0: debug[3]: ENTRY_JSON=$ENTRY_JSON" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: REPO_URL=$REPO_URL" 1>&2
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
echo "$0: debug[3]: URL=$URL" 1>&2
echo "$0: debug[3]: SITE_URL=$SITE_URL" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: ENTRY_PATH=$ENTRY_PATH" 1>&2
echo "$0: debug[3]: REPO_NAME=$REPO_NAME" 1>&2
echo "$0: debug[3]: AUTHOR_PATH=$AUTHOR_PATH" 1>&2
echo "$0: debug[3]: AUTHOR_DIR=$AUTHOR_DIR" 1>&2
echo "$0: debug[3]: INC_PATH=$INC_PATH" 1>&2
echo "$0: debug[3]: INC_DIR=$INC_DIR" 1>&2
echo "$0: debug[3]: BIN_PATH=$BIN_PATH" 1>&2
echo "$0: debug[3]: BIN_DIR=$BIN_DIR" 1>&2
echo "$0: debug[3]: YEAR_DIR=$YEAR_DIR" 1>&2
echo "$0: debug[3]: ENTRY_DIR=$ENTRY_DIR" 1>&2
echo "$0: debug[3]: ENTRY_ID=$ENTRY_ID" 1>&2
echo "$0: debug[3]: DOT_YEAR=$DOT_YEAR" 1>&2
echo "$0: debug[3]: YYYY_DIR=$YYYY_DIR" 1>&2
echo "$0: debug[3]: DOT_PATH=$DOT_PATH" 1>&2
echo "$0: debug[3]: ENTRY_JSON=$ENTRY_JSON" 1>&2
echo "$0: debug[3]: ENTRY_NAVBAR_AWK=$ENTRY_NAVBAR_AWK" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
fi
# If -N, time to exit
+484
View File
@@ -0,0 +1,484 @@
#!/usr/bin/env bash
#
# subst.year-index.sh - print substitutions for a year's index.html
#
# This tool is used in conjunction with the inc/md2html.cfg configuration
# file, and the tools that use that use that configuration file such as "bin/md2html.sh".
#
# It is usually invoked by:
#
# -o bin/subst.year-index.sh
#
# IMPORTANT: Each command line option / argument MUST be printed on a separate line!
#
# Copyright (c) 2024 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# firewall - must be bash with a version 4.2 or later
#
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
#
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
exit 4
fi
# setup bash file matching
#
# Requires bash with a version 4.2 or later
#
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
shopt -u failglob # disable error message if no matches are found
shopt -u dotglob # disable matching files starting with .
shopt -s globskipdots # enable never matching . or ..
shopt -u nocaseglob # disable strict case matching
shopt -u extglob # enable extended globbing patterns
shopt -s globstar # enable ** to match all files and zero or more directories and subdirectories
# set variables referenced in the usage message
#
export VERSION="1.0 2024-02-11"
NAME=$(basename "$0")
export NAME
export V_FLAG=0
GIT_TOOL=$(type -P git)
export GIT_TOOL
if [[ -z "$GIT_TOOL" ]]; then
echo "$0: FATAL: git tool is not installed or not in \$PATH" 1>&2
exit 210
fi
"$GIT_TOOL" rev-parse --is-inside-work-tree >/dev/null 2>&1
status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
export DOCROOT_SLASH="../../"
export REPO_URL="https://github.com/ioccc-src/temp-test-ioccc"
export SITE_URL="https://ioccc-src.github.io/temp-test-ioccc"
# set usage message
#
export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] [-n] [-N]
[-u repo_url] [-U URL] [-w site_url] [-e string ..] [-E exitcode]
YYYY
-h print help message and exit
-v level set verbosity level (def level: 0)
-V print version string and exit
-d topdir set topdir (def: $TOPDIR)
-D docroot/ set the document root path followed by slash (def: $DOCROOT_SLASH)
NOTE: 'docroot' must end in a slash
-n go thru the actions, but do not update any files (def: do the action)
-N do not process file, just parse arguments and ignore the file (def: process the file)
-u repo_url Base level URL of target git repo (def: $REPO_URL)
-U url URL of HTML file being formed (def: $URL)
-w site_url Base URL of the web site (def: $SITE_URL)
-e string output string, followed by newline, to stderr (def: do not)
-E exitcode force exit with exitcode (def: exit based on success or failure of the action)
YYYY path from topdir to year directory: must contain the files: README.md, .path and .entry.json
Exit codes:
0 all OK
1 pandoc exited non-zero
2 -h and help string printed or -V and version string printed
3 command line error
4 bash version is < 4.2
5 YYYY is not a year directory
6 subst.year-navbar.awk tool not found
7 cannot find important information about the author or winning entry
>= 10 < 210 ((not used))
>= 210 internal tool error
$NAME version: $VERSION"
# output_ordinal
#
# Write the numerical ordinal form of a non-negative integer to standard output (stdout)
#
# usage:
# output_ordinal integer
#
# returns:
# 0 ==> no errors detected
# > 0 ==> function error number
#
function output_ordinal
{
local INTEGER; # integer argument
# parse args
#
if [[ $# -ne 1 ]]; then
echo "$0: ERROR: in output_ordinal: expected 1 arg, found $#" 1>&2
return 1
fi
INTEGER="$1"
if [[ $INTEGER =~ ^-?[0-9]+$ ]]; then
:
else
echo "$0: ERROR: argument is not an integer: $INTEGER" 1>&2
return 2
fi
if [[ $INTEGER -lt 0 ]]; then
echo "$0: ERROR: integer is negative: $INTEGER" 1>&2
return 3
fi
# case: 11, 12, 13 are N-th
#
if [[ $INTEGER -ge 11 && $INTEGER -le 13 ]]; then
echo "${INTEGER}th"
# case: 1 mod 10 is N-st
#
elif [[ $((INTEGER % 10)) -eq 1 ]]; then
echo "${INTEGER}st"
# case: 2 mod 10 is N-nd
#
elif [[ $((INTEGER % 10)) -eq 2 ]]; then
echo "${INTEGER}nd"
# case: 3 mod 10 is N-rd
#
elif [[ $((INTEGER % 10)) -eq 3 ]]; then
echo "${INTEGER}rd"
# case: everything else is N-th
#
else
echo "${INTEGER}th"
fi
return 0
}
# setup
#
export NOOP=
export DO_NOT_PROCESS=
# parse command line
#
while getopts :hv:Vd:D:nNu:U:w:e:E: flag; do
case "$flag" in
h) echo "$USAGE" 1>&2
exit 2
;;
v) V_FLAG="$OPTARG"
;;
V) echo "$VERSION"
exit 2
;;
d) TOPDIR="$OPTARG"
;;
D) # parse -D docroot/
case "$OPTARG" in
*/) ;;
*) echo "$0: ERROR: in -D docroot/, the docroot must end in /" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
esac
DOCROOT_SLASH="$OPTARG"
;;
n) NOOP="-n"
;;
N) DO_NOT_PROCESS="-N"
;;
u) REPO_URL="$OPTARG"
;;
U) URL="$OPTARG"
;;
w) SITE_URL="$OPTARG"
;;
e) echo "$OPTARG" 1>&2
;;
E) exit "$OPTARG"
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
# parse the command line arguments
#
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: debug level: $V_FLAG" 1>&2
fi
#
shift $(( OPTIND - 1 ));
#
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: file argument count: $#" 1>&2
fi
if [[ $# -ne 1 ]]; then
echo "$0: ERROR: expected 1 arg, found: $#" 1>&2
exit 3
fi
#
export YEAR_ARG="$1"
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: YEAR_ARG=$YEAR_ARG" 1>&2
fi
# verify that we have a topdir directory
#
REPO_NAME=$(basename "$REPO_URL")
export REPO_NAME
if [[ -z $TOPDIR ]]; then
echo "$0: ERROR: cannot find top of git repo directory" 1>&2
echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
exit 211
fi
if [[ ! -e $TOPDIR ]]; then
echo "$0: ERROR: TOPDIR does not exist: $TOPDIR" 1>&2
echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
exit 212
fi
if [[ ! -d $TOPDIR ]]; then
echo "$0: ERROR: TOPDIR is not a directory: $TOPDIR" 1>&2
echo "$0: Notice: if needed: $GIT_TOOL clone $REPO_URL; cd $REPO_NAME" 1>&2
exit 213
fi
# verify that we have an author subdirectory
#
export AUTHOR_PATH="$TOPDIR/author"
if [[ ! -d $AUTHOR_PATH ]]; then
echo "$0: ERROR: author is not a directory under topdir: $AUTHOR_PATH" 1>&2
exit 214
fi
export AUTHOR_DIR="author"
# verify that we have an inc subdirectory
#
export INC_PATH="$TOPDIR/inc"
if [[ ! -d $INC_PATH ]]; then
echo "$0: ERROR: inc is not a directory under topdir: $INC_PATH" 1>&2
exit 215
fi
export INC_DIR="inc"
# verify that we have an bin subdirectory
#
export BIN_PATH="$TOPDIR/bin"
if [[ ! -d $BIN_PATH ]]; then
echo "$0: ERROR: bin is not a directory under topdir: $BIN_PATH" 1>&2
exit 216
fi
export BIN_DIR="bin"
# cd to topdir
#
if [[ ! -e $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to non-existent path: $TOPDIR" 1>&2
exit 217
fi
if [[ ! -d $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to a non-directory: $TOPDIR" 1>&2
exit 218
fi
export CD_FAILED
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: about to: cd $TOPDIR" 1>&2
fi
cd "$TOPDIR" || CD_FAILED="true"
if [[ -n $CD_FAILED ]]; then
echo "$0: ERROR: cd $TOPDIR failed" 1>&2
exit 219
fi
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: now in directory: $(/bin/pwd)" 1>&2
fi
# verify that YEAR_ARG is a entry directory
#
# YEAR_ARG must be in YYYY/dir form
# YYYY must be a directory
# YYYY must be a writable directory
# YYYY/.year must be a non-empty file
# YYYY/dir must be a directory
# YYYY/dir/.path must be a non-empty file
# YEAR_ARG must match the contents of YYYY/dir/.path
# YYYY/dir/.entry.json must be a non-empty file
#
if [[ ! -d $YEAR_ARG ]]; then
echo "$0: ERROR: arg is not a directory: $YEAR_ARG" 1>&2
exit 5
fi
if [[ ! -w $YEAR_ARG ]]; then
echo "$0: ERROR: arg is not a writable directory: $YEAR_ARG" 1>&2
exit 5
fi
export YEAR_DIR=${YEAR_ARG%%/*}
if [[ -z $YEAR_DIR ]]; then
echo "$0: ERROR: arg not in YYYY/dir form: $YEAR_ARG" 1>&2
exit 5
fi
# verify we have a non-empty readable .top file
#
export TOP_FILE=".top"
if [[ ! -e $TOP_FILE ]]; then
echo "$0: ERROR: .top does not exist: $TOP_FILE" 1>&2
exit 6
fi
if [[ ! -f $TOP_FILE ]]; then
echo "$0: ERROR: .top is not a regular file: $TOP_FILE" 1>&2
exit 6
fi
if [[ ! -r $TOP_FILE ]]; then
echo "$0: ERROR: .top is not an readable file: $TOP_FILE" 1>&2
exit 6
fi
if [[ ! -s $TOP_FILE ]]; then
echo "$0: ERROR: .top is not a non-empty readable file: $TOP_FILE" 1>&2
exit 6
fi
# verify we have our awk script
#
export YEAR_NAVBAR_AWK="$BIN_DIR/subst.year-navbar.awk"
if [[ ! -e $YEAR_NAVBAR_AWK ]]; then
echo "$0: ERROR: bin/subst.year-navbar.awk does not exist: $YEAR_NAVBAR_AWK" 1>&2
exit 6
fi
if [[ ! -f $YEAR_NAVBAR_AWK ]]; then
echo "$0: ERROR: bin/subst.year-navbar.awk is not a file: $YEAR_NAVBAR_AWK" 1>&2
exit 6
fi
if [[ ! -r $YEAR_NAVBAR_AWK ]]; then
echo "$0: ERROR: bin/subst.year-navbar.awk is not a readable file: $YEAR_NAVBAR_AWK" 1>&2
exit 6
fi
# determine The N-th IOCCC string
#
LINE_NUM=$(sed -n "/$YEAR_DIR/=" "$TOP_FILE" | head -1)
export LINE_NUM
if [[ -z $LINE_NUM ]]; then
echo '-e'
echo "cannot determine line number in $TOP_FILE for year: $YEAR_DIR"
echo '-E'
echo 220
exit 220
fi
ORDINAL=$(output_ordinal "$LINE_NUM")
export ORDINAL
if [[ -z $ORDINAL ]]; then
echo '-e'
echo "cannot determine ordinal for: $LINE_NUM"
echo '-E'
echo 221
exit 221
fi
# parameter debugging
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: VERSION=$VERSION" 1>&2
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: DOCROOT_SLASH=$DOCROOT_SLASH" 1>&2
echo "$0: debug[3]: REPO_URL=$REPO_URL" 1>&2
echo "$0: debug[3]: SITE_URL=$SITE_URL" 1>&2
echo "$0: debug[3]: URL=$URL" 1>&2
echo "$0: debug[3]: NOOP=$NOOP" 1>&2
echo "$0: debug[3]: DO_NOT_PROCESS=$DO_NOT_PROCESS" 1>&2
echo "$0: debug[3]: AUTHOR_PATH=$AUTHOR_PATH" 1>&2
echo "$0: debug[3]: AUTHOR_DIR=$AUTHOR_DIR" 1>&2
echo "$0: debug[3]: INC_PATH=$INC_PATH" 1>&2
echo "$0: debug[3]: INC_DIR=$INC_DIR" 1>&2
echo "$0: debug[3]: BIN_PATH=$BIN_PATH" 1>&2
echo "$0: debug[3]: BIN_DIR=$BIN_DIR" 1>&2
echo "$0: debug[3]: YEAR_DIR=$YEAR_DIR" 1>&2
echo "$0: debug[3]: YEAR_DIR=$YEAR_DIR" 1>&2
echo "$0: debug[3]: TOP_FILE=$TOP_FILE" 1>&2
echo "$0: debug[3]: YEAR_NAVBAR_AWK=$YEAR_NAVBAR_AWK" 1>&2
echo "$0: debug[3]: LINE_NUM=$LINE_NUM" 1>&2
echo "$0: debug[3]: ORDINAL=$ORDINAL" 1>&2
fi
# If -N, time to exit
#
if [[ -n $DO_NOT_PROCESS ]]; then
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: arguments parsed, -N given, exit 0" 1>&2
fi
exit 0
fi
# output TITLE substitution
#
echo "-s"
echo "TITIE=$YEAR_DIR - The $ORDINAL IOCCC"
# output DESCRIPTION substitution
#
echo "-s"
echo "DESCRIPTION=IOCCC Year $YEAR_DIR"
# output KEYWORDS substitution
#
echo "-s"
echo "KEYWORDS=IOCCC, $YEAR_DIR, IOCCC $YEAR_DIR, IOCCC entry, The $ORDINAL IOCCC"
# output HEADER_2 substitution
#
echo "-s"
echo "HEADER_2=$YEAR_DIR - The $ORDINAL IOCCC"
# output topnav links
#
awk -v year_arg="$YEAR_DIR" -f "$YEAR_NAVBAR_AWK" "$TOP_FILE"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: subst.year-navbar.awk failed, error: $status" 1>&2
exit 219
fi
# All Done!!! -- Jessica Noll, Age 2
#
exit 0
+137
View File
@@ -0,0 +1,137 @@
#!/usr/bin/env awk
#
# subst.year-navbar.awk - output substitutions for navbar on behalf of a year
#
# This tool is usually invoked from the bin/subst.year-index.sh output tool.
# That tool, in turn, is usually invoked by:
#
# -o bin/subst.year-index.sh
#
# IMPORTANT: Each command line option / argument MUST be printed on a separate line!
#
# usage:
#
# awk -v year_arg=YYYY -f bin/subst.year-navbar.awk .top
#
# where:
#
# YYYY IOCCC year or mock
BEGIN {
# setup
#
VERSION="1.0 2024-02-11"
process_next_line = 0; # 1 ==> we found our year_arg, now process the next line
found_year_arg = 0; # 1 ==> we found our year_arg
prev_line = ""; # the previous YYYY line
topnav_phase = "year.mid"; # topnav name to use (-H topnav=topnav_phase)
# error if year_arg is not set via -v year_arg=YYYY
#
if (length(year_arg) == 0) {
exit 210; # use 210 to match length(year_arg) == 0 error in the END section
}
}
# process YYYY lines
#
{
# obtain the YYYY line
#
year = $0;
# if we need the line after we found our year_arg
#
if (process_next_line) {
# process the line after we found our year_arg
#
# report the previous year
print "-s";
print "RIGHT_LINK=../" year "/index.html";
print "-s";
print "RIGHT_TEXT=" year;
process_next_line = 0;
# if we found our year_arg
#
} else if (year_arg == $0) {
# in case our our year_arg is the 1st line
#
if (NR == 1) {
# no previous line year_arg is the 1st line
topnav_phase = "year.first";
}
# process the previous YYYY line with this match
#
if (prev_line) {
# process previous line
#
prev_year = prev_line;
# report the next entry for this year
print "-s";
print "LEFT_LINK=../" prev_line "/index.html";
print "-s";
print "LEFT_TEXT=" prev_line;
}
# process our found year_arg
#
# report up link top year index.html
print "-s";
print "UP_LINK=../index.html";
print "-s";
print "UP_TEXT=top";
process_next_line = 1;
found_year_arg = 1;
}
# save the line as the next previous line
#
prev_line = $0;
}
END {
# error if github is not set via -v github=REPO_URL
#
if (length(year_arg) == 0) {
print "-e";
print "ERROR: year_arg variable not set, call with -v year_arg=YYYY";
print "-E";
print "210"; # use 210 to match length(year_arg) == 0 error in the BEGIN section
exit 210; # use 210 to match length(year_arg) == 0 error in the BEGIN section
}
# output inventory link information
#
print "-s";
print "INVENTORY_LINK=#inventory";
print "-s";
print "INVENTORY_TEXT=Inventory";
# case: we did not find our year_arg
#
if (!found_year_arg) {
# ERROR: year_arg was not found
print "-e";
print "'we did not find:", year_arg "'";
print "-E";
print "215";
exit
} else if (process_next_line) {
# no next line year_arg is the last line
topnav_phase = "year.last";
}
# output the topnav phase name
#
print "-H";
print "topnav=" topnav_phase;
}
+10
View File
@@ -0,0 +1,10 @@
<!-- START: this line starts content from: inc/topnav.year.first.html -->
<div class="topnav">
<a class="Left Disabled" href="#">In 1st year</a>
<a class="Left" href="%%UP_LINK%%">&uarr; %%UP_TEXT%% &uarr;</a>
<a class="Left" href="%%RIGHT_LINK%%">%%RIGHT_TEXT%% &rarr;</a>
<a class="Right" href="%%INVENTORY_LINK%%">%%INVENTORY_TEXT%%</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.first.html -->
+10
View File
@@ -0,0 +1,10 @@
<!-- START: this line starts content from: inc/topnav.year.last.html -->
<div class="topnav">
<a class="Left" href="%%LEFT_LINK%%">&larr; %%LEFT_TEXT%%</a>
<a class="Left" href="%%UP_LINK%%">&uarr; %%UP_TEXT%% &uarr;</a>
<a class="Left Disabled" href="#">In most recent year</a>
<a class="Right" href="%%INVENTORY_LINK%%">%%INVENTORY_TEXT%%</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.last.html -->
+10
View File
@@ -0,0 +1,10 @@
<!-- START: this line starts content from: inc/topnav.year.mid.html -->
<div class="topnav">
<a class="Left" href="%%LEFT_LINK%%">&larr; %%LEFT_TEXT%%</a>
<a class="Left" href="%%UP_LINK%%">&uarr; %%UP_TEXT%% &uarr;</a>
<a class="Left" href="%%RIGHT_LINK%%">%%RIGHT_TEXT%% &rarr;</a>
<a class="Right" href="%%INVENTORY_LINK%%">%%INVENTORY_TEXT%%</a>
</div>
<!-- END: this line ends content from: inc/topnav.year.mid.html -->