Files
Landon Curt Noll a1c86c8a7a add original C links to entry navigation bars
The navigation bar for a winning entry now has a "_Original C_" link
(between the ✅ and the Inventory on the right hand side) so that one
may easily view the original C code that was submitted for IOCCC judging.

Ran `make www timestamp` to perform the above.
2025-08-10 12:46:23 -07:00

738 lines
29 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../../ioccc.css">
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap" rel="stylesheet">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2004/kopczynski - Best one liner</title>
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
<meta name="description" content="2004 IOCCC entry kopczynski - Best one liner">
<meta name="keywords" content="IOCCC, 2004, IOCCC 2004, IOCCC entry, kopczynski, Best one liner">
</head>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! 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/head.default.html -->
<!-- -->
<!-- This web page was formed via the tool: bin/readme2index.sh -->
<!-- The content of main section of this web page came from: 2004/kopczynski/README.md -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2004/kopczynski/README.md !!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2004/kopczynski/README.md !!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2004/kopczynski/README.md !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- Markdown content was converted into HTML via the tool: bin/md2html.sh -->
<!-- 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/topbar.default.html -->
<div class="theader">
<nav class="topbar">
<div class="container">
<div class="logo">
<a href="../../index.html" class="logo-link">
IOCCC
</a>
</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
Entries
</span>
<div class="sub-item">
<div class="outfit-font">
<a href="../../years.html" class="sub-item-link">
Winning entries
</a>
</div>
<div class="outfit-font">
<a href="../../authors.html" class="sub-item-link">
Winning authors
</a>
</div>
<div class="outfit-font">
<a href="../../location.html" class="sub-item-link">
Location of authors
</a>
</div>
<div class="outfit-font">
<a href="../../bugs.html" class="sub-item-link">
Bugs and (mis)features
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#fix_an_entry" class="sub-item-link">
Fixing entries
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#fix_author" class="sub-item-link">
Updating author info
</a>
</div>
</div>
</div>
<div class="item">
<span class="item-header">
Status
</span>
<div class="sub-item">
<div class="outfit-font">
<a href="../../news.html" class="sub-item-link">
News
</a>
</div>
<div class="outfit-font">
<a href="../../status.html" class="sub-item-link">
Contest status
</a>
</div>
<div class="outfit-font">
<a href="../../next/rules.html" class="sub-item-link">
IOCCC rules
</a>
</div>
<div class="outfit-font">
<a href="../../next/guidelines.html" class="sub-item-link">
IOCCC guidelines
</a>
</div>
<div class="outfit-font">
<a href="../../markdown.html" class="sub-item-link">
Markdown guidelines
</a>
</div>
<div class="outfit-font">
<a href="../../SECURITY.html" class="sub-item-link">
Security policy
</a>
</div>
</div>
</div>
<div class="item">
<span class="item-header">
FAQ
</span>
<div class="sub-item">
<div class="outfit-font">
<a href="../../faq.html" class="sub-item-link">
Frequently asked questions
</a>
</div>
<div class="outfit-font">
<a href="../../quick-start.html#enter" class="sub-item-link">
Enter the IOCCC
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#compiling" class="sub-item-link">
Compiling entries
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#running_entries" class="sub-item-link">
Running entries
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#help" class="sub-item-link">
How to help
</a>
</div>
</div>
</div>
<div class="item">
<span class="item-header">
About
</span>
<div class="sub-item">
<div class="outfit-font">
<a href="../../index.html" class="sub-item-link">
Home page
</a>
</div>
<div class="outfit-font">
<a href="../../social.html" class="sub-item-link">
IOCCC social media
</a>
</div>
<div class="outfit-font">
<a href="../../about.html" class="sub-item-link">
About the IOCCC
</a>
</div>
<div class="outfit-font">
<a href="../../judges.html" class="sub-item-link">
The judges
</a>
</div>
<div class="outfit-font">
<a href="../../thanks-for-help.html" class="sub-item-link">
Thanks for the help
</a>
</div>
<div class="outfit-font">
<a href="../../contact.html" class="sub-item-link">
Contact us
</a>
</div>
</div>
</div>
</div>
</div>
</nav>
<div class="header-mobile-menu">
<noscript>
<a href="../../nojs-menu.html" class="topbar-js-label">
Please Enable JavaScript
</a>
</noscript>
<button id="header-open-menu-button" class="topbar-mobile-menu">
<img
src="../../png/hamburger-icon-open.png"
alt="hamburger style menu icon - open state"
width=48
height=48>
</button>
<button id="header-close-menu-button" class="hide-content">
<img
src="../../png/hamburger-icon-closed.png"
alt="hamburger style menu icon - closed state"
width=48
height=48>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Entries
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="../../years.html">
Winning entries
</a>
<a class="mobile-submenu-item" href="../../authors.html">
Winning authors
</a>
<a class="mobile-submenu-item" href="../../location.html">
Location of authors
</a>
<a class="mobile-submenu-item" href="../../bugs.html">
Bugs and (mis)features
</a>
<a class="mobile-submenu-item" href="../../faq.html#fix_an_entry">
Fixing entries
</a>
<a class="mobile-submenu-item" href="../../faq.html#fix_author">
Updating author info
</a>
<a class="mobile-submenu-item" href="../../thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Status
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="../../news.html">
News
</a>
<a class="mobile-submenu-item" href="../../status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="../../next/rules.html">
IOCCC rules
</a>
<a class="mobile-submenu-item" href="../../next/guidelines.html">
IOCCC guidelines
</a>
<a class="mobile-submenu-item" href="../../markdown.html">
Markdown guidelines
</a>
<a class="mobile-submenu-item" href="../../SECURITY.html">
Security policy
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
FAQ
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="../../faq.html">
Frequently asked questions
</a>
<a class="mobile-submenu-item" href="../../quick-start.html#enter">
Enter the IOCCC
</a>
<a class="mobile-submenu-item" href="../../faq.html#compiling">
Compiling entries
</a>
<a class="mobile-submenu-item" href="../../faq.html#running_entries">
Running entries
</a>
<a class="mobile-submenu-item" href="../../faq.html#help">
How to help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
About
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="../../index.html">
Home page
</a>
<a class="mobile-submenu-item" href="../../social.html">
IOCCC social media
</a>
<a class="mobile-submenu-item" href="../../about.html">
About the IOCCC
</a>
<a class="mobile-submenu-item" href="../../judges.html">
The judges
</a>
<a class="mobile-submenu-item" href="../../contact.html">
Contact us
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
<div class="header">
<a href="../../2011/zucker/index.html">
<img src="../../png/ioccc.png"
alt="IOCCC image by Matt Zucker"
width=300
height=110>
</a>
<h1>The International Obfuscated C Code Contest</h1>
<h2>2004/kopczynski - Best one liner</h2>
<h3>OCR of 8 or 9 or 10 or 11</h3>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/navbar.mid.html -->
<div class="navbar">
<a class="Left" href="../jdalbec/index.html">&larr; 2004/jdalbec</a>
<a class="Left" href="../index.html">&uarr; 2004 &uarr;</a>
<a class="Left" href="../newbern/index.html">2004/newbern &rarr;</a>
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski.c">C code</a>
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/Makefile">Makefile</a>
<a class="Right" href="#inventory">Inventory</a>
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski.orig.c">Original C</a>
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.ioccc.org%2F2004%2Fkopczynski%2Findex.html">&#x2713;</a>
</div>
<!-- END: this line ends content from: inc/navbar.mid.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<div class="content" id="content">
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
<!-- START: this line starts content generated by: bin/output-index-author.sh -->
<h2 id="author">Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Eryk_Kopczynski">Eryk Kopczynski</a><br>
Location: <a href="../../location.html#PL">PL</a> - <em>Republic of Poland</em> (<em>Poland</em>)</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
<!-- END: this line ends content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- BEFORE: 1st line of markdown file: 2004/kopczynski/README.md -->
<h2 id="to-build">To build:</h2>
<pre><code> make</code></pre>
<p><strong>NOTE</strong>: We <strong>FORCE</strong> the use of <code>-O0</code> even if someone overrides it because this entry
will not work with it enabled.</p>
<h2 id="to-use">To use:</h2>
<pre><code> ./kopczynski &lt; input_file</code></pre>
<h2 id="try">Try:</h2>
<pre><code> ./try.sh</code></pre>
<p>What happens if you feed the program source to the program? Can you figure out
why?</p>
<h2 id="alternate-code">Alternate code:</h2>
<p>The judges modified the program to print its result. The original
program returned the result as an exit code which is what the alternate version
does.</p>
<h3 id="alternate-build">Alternate build:</h3>
<pre><code> make alt</code></pre>
<h3 id="alternate-try">Alternate try:</h3>
<pre><code> ./kopczynski.alt &lt; kopczynski-10
echo $?</code></pre>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>What is in a line? A lot when you obfuscate the way Eryk Kopczynski
did it. This small one line program is an outstanding technical
work of art as well as one of the better one-liner programs that
we have seen in years!</p>
<p>Compile and run without arguments. As input, give it an ASCII graphics
figure 8, 9, 10, or 11 made of pound signs and spaces, of any size,
shape, or orientation (that’s right, an upside down 9 is still 9 :-) ).
There is one restriction: the only line not containing <code>#</code> characters
must be the last.</p>
<p>The program will print what it thinks you’ve entered. If you enter
anything that does not resemble 8, 9, 10, or 11, the result is
seemingly arbitrary. Actually it is not pseudo-random; can you find
a pattern when it does not resemble 8, 9, 10 or 11?</p>
<p>Here is a related puzzle: how to continue the sequence:</p>
<blockquote>
<p><code>1, 0, 0, 0, 0, 0, 1, 0, 2, 1, ...</code></p>
</blockquote>
<p>With certain arguments, you can alter the exit value / output. Can you figure
out how and why?</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>The program proves it is not as hard to recognize numbers. The current
one liner version should correctly recognize all numbers from 8 to 11.
(Unless you give it some very hard cases. For example, it cannot
recognize negatives, zeros which have dots or slashes inside them,
digits should be separated, and numbers should be “complete”.)</p>
<p>This program returns the number as its exit status. (In most shells,
you can see the exit status of the last command with <code>echo $?</code> (or
just <code>$?</code>).)</p>
<p><strong>NOTE</strong>: The judges altered the primary version to output a number.</p>
<p>On the input, give numbers formed as a sequences of empty spaces and <code>#</code>
signs (you can also use dots instead of spaces), ending with an empty
line. (No number has an empty line in it.) The program should return
the number from 8 to 11 that it thinks it is.</p>
<ul>
<li><p>The line is 131 bytes long (in 1986, 165 bytes was OK, and the size
limit has grown from 1986…).</p></li>
<li><p>I have decided that it is better for this program to return the
number, not to print it, but if you think otherwise, the change would
cost 6 chars (plus a warning). Change <code>return *</code> to <code>printf("%d",*)</code>.
(<code>$?</code> is shorter)</p></li>
<li><p>I achieved some additional tightness by <code>-Dif=while</code> which saved 9 chars of
source for the cost of 11 chars of the <a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/Makefile">Makefile</a>. If I used
<code>-DB=while</code>, I would save 12 for 10, but I think the current version is slightly
more obfuscated.</p></li>
</ul>
<h3 id="portability">Portability</h3>
<p>It only requires two’s complement arithmetics, as far as I know. The maximum
length of an input line is <code>N-9</code>, where <code>N</code> is the size of <code>int</code> in bits
(you can try to compile with an option <code>'-Dint=long long'</code> for longer
lines).</p>
<h3 id="algorithm-obfuscation">Algorithm &amp; Obfuscation</h3>
<ol type="1">
<li><p>This program works by calculating the <a href="https://en.wikipedia.org/wiki/Euler_characteristic">Euler
characteristics</a> of input,
plus 9. It is the number of digits (i.e. separated <code>#</code>-regions) minus the number
of holes in them. It turns out that this algorithm works correctly for all
numbers from 8 to 11.</p></li>
<li><p>We know that <a href="https://en.wikipedia.org/wiki/Euler_characteristic">Euler
characteristics</a> is the number of “vertexes”</p></li>
</ol>
<pre><code> #</code></pre>
<p>minus the number of “edges”</p>
<pre><code> ## # #. .#
# .# #.</code></pre>
<p>(<code>.</code> must be empty) plus the number of “faces”</p>
<pre><code> ##
##</code></pre>
<ol start="3" type="1">
<li>If we fill all these patterns to 2x2 squares,</li>
</ol>
<pre><code> #? ## #? #. .# ##
?? ?? #? .# #. ##
+1 -1 -1 -1 -1 +1</code></pre>
<p>substitute all possible “values” of <code>?</code> and sum them up, we get that it is
enough to calculate:</p>
<pre><code> #. .# ##
.. #. #.
+1 -1 -1</code></pre>
<p>Note now it is simple and obfuscated enough to be used as
a “magic trick”.</p>
<ol start="4" type="1">
<li><p>I make a 16-character array; when indexed by 4-bit value which
represents the 2x2 squares, it will return a number to add/subtract
<code>{-1,0,+1}</code>.</p></li>
<li><p>We convert lines of input to bitmaps (<code>N-bit</code> integers). Additionally, it is
heavily obfuscated by using negative numbers (two’s complement). For example,
it turns out that <code>6</code> in <code>z=6</code> is the only 1-digit number which works here (and
it’s not only because we have <code>z&gt;5</code> in the following <code>while</code>). The conversion
routine also sets <code>n=8</code> in an obfuscated and concise way.</p></li>
<li><p>Since we always return the number from 8 to 11, we can calculate modulo 4.
Instead of <code>16 {-1,0,+1}</code> values, we use a 15-character string which agrees
modulo 4 to the array in (<code>4</code>). (<code>'\0'</code> fits very well as the 16th character, so
we use 15-character string.)</p></li>
<li><p>Since the rule found in (3) did not produce any funny messages, I changed it
until it did. (The <code>#</code> character to find vertexes is in the top right corner,
not the top left one.) The following messages will also work instead of <code>has dirtiest IF</code>:</p></li>
</ol>
<pre><code> HighlandYachter
TestDirtiestTen
has lintiest IF
TighterLaughter
HustlerDaughter
TighterDemoThen</code></pre>
<p>They can be mixed, of course!</p>
<ol start="8" type="1">
<li><p>The variable names are confusing.</p></li>
<li><p>Finally, the program tries to be as concise as possible. Some obfuscation
comes from this. For additional obfuscation and conciseness, <code>if</code> means <code>while</code>.</p></li>
</ol>
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
-->
<!-- AFTER: last line of markdown file: 2004/kopczynski/README.md -->
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- START: this line starts content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
<div id="inventory">
<h1 id="inventory-for-2004kopczynski">Inventory for 2004/kopczynski</h1>
</div>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski.c">kopczynski.c</a> - entry source code</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski.alt.c">kopczynski.alt.c</a> - alternate source code</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski.orig.c">kopczynski.orig.c</a> - original source code</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski-10">kopczynski-10</a> - ASCII file with number 10 drawn to recognize</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski-10-rev">kopczynski-10-rev</a> - ASCII file with number 10 drawn reversed to recognize</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski-11">kopczynski-11</a> - ASCII file with number 11 drawn to recognize</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski-11-rev">kopczynski-11-rev</a> - ASCII file with number 11 drawn reversed to recognize</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski-8a">kopczynski-8a</a> - ASCII file with number 8 drawn to recognize</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski-8a-rev">kopczynski-8a-rev</a> - ASCII file with number 8 drawn reversed to recognize</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski-8b">kopczynski-8b</a> - ASCII file with number 8 drawn to recognize</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski-8b-rev">kopczynski-8b-rev</a> - ASCII file with number 8 drawn reversed to recognize</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski-8c">kopczynski-8c</a> - ASCII file with number 8 drawn to to recognize</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski-8c-rev">kopczynski-8c-rev</a> - ASCII file with number 8 drawn reversed to recognize</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski-9">kopczynski-9</a> - ASCII file with number 9 drawn to recognize</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski-9-rev">kopczynski-9-rev</a> - ASCII file with number 9 drawn reversed to recognize</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski-a">kopczynski-a</a> - ASCII file with letter A drawn to recognize</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/kopczynski-a-rev">kopczynski-a-rev</a> - ASCII file with letter A reversed to to recognize</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/try.sh">try.sh</a> - script to try entry</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="2004_kopczynski.tar.bz2">2004_kopczynski.tar.bz2</a> - download entry tarball</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/README.md">README.md</a> - markdown source for this web page</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/.entry.json">.entry.json</a> - entry summary and manifest in JSON</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/2004/kopczynski/.path">.path</a> - directory path from top level directory</li>
<li><a href="index.html">index.html</a> - this web page</li>
</ul>
<hr style="width:10%;text-align:left;margin-left:0">
<h4>
Jump to: <a href="#">top</a>
</h4>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
</div>
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/footer.inventory.html -->
<!--
Copyright © 1984-2025 by Landon Curt Noll. All Rights Reserved.
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
-->
<div class="footer">
<div id="copyright"><h3>Copyright &copy; 1984-2025 by Landon Curt Noll:
<a href="https://creativecommons.org/faq/#what-does-some-rights-reserved-mean"
target="_blank"
rel="license noopener noreferrer">Some Rights Reserved</a></h3>
<p>
This work is <b>licensed by Landon Curt Noll</b> under
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/?ref=chooser-v1"
target="_blank"
rel="license noopener noreferrer"
style="display:inline-block;">CC BY-SA 4.0</a></b>.
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
src="../../png/cc.png"
alt="cc inside circle symbol">
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
src="../../png/by.png"
alt="person inside circle symbol">
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
src="../../png/sa.png"
alt="arrow looping back on itself inside circle symbol"><br>
You should <b>carefully review</b> the
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode.en"
target="_blank"
rel="license noopener noreferrer">CC BY-SA 4.0 LEGAL CODE</a></b>
before using the licensed material.<br>
You may wish to review the
<b><a href="../../license.html"
target="_blank"
rel="license noopener noreferrer">highlights of some of the key features and terms</a></b>
of <b>CC BY-SA 4.0</b>.<br>
</p>
</div>
<div id="coda"><h3>Coda</h3>
<p>
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.ioccc.org%2F2004%2Fkopczynski%2Findex.html" rel="nofollow">Nu HTML check this web page</a><br>
<a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a><br>
</p>
</div>
</div>
<!-- END: this line ends content from: inc/footer.inventory.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->