build missing HTML files for entries
Setup a simple topnav for missing HTML files for entries. Added `bin/gen-other-html.sh` to build entry HTML files from markdown other than README.md to index.html HTML files. Fixed duplicate link text in `2020/ferguson1/gameplay.md`. Improved `inc/md2html.cfg` to support building the missing HTML files for entries. Added `make gen_other_html` to top level Makefile. Added `make gen_other_html` to `make quick_www` and `make www`. Fixed inventory links for year level index.html files. Changed `bin/output-year-index.sh` VERSION from "1.0.1 2024-02-23" to "1.1 2024-02-27". Added missing lines in `manifest.numbers`. Update the affected `.entry.json` files. The manifest (in both `manifest.numbers` and the collection of manifests from of all entry `.entry.json` files) now match. Errors from `make verify_entry_files` will now abort both `make quick_www` and `make www` rules in the top level `Makefile`. Changed markdown files in manifest to have an _inventory_order_ of _2000000000_ so that the `index.html` file will usually appear at the start of the _Secondary files_ set for the "#inventory" section of an entry's `index.html` file. Changed compressed tar files (files that end in _.tar.bz2_) in manifest to have an _inventory_order_ of _100000_ so that these files will usually appear at the end of the _Primary files_ set for the "#inventory" section of an entry's `index.html` file. Added 'Jump to top` link above the _Primary files_ section. Changed `bin/output-index-inventory.sh` VERSION from "1.1.1 2024-02-23" to "1.2 2024-02-27". Updated HTML files to perform the above via `make www`.
This commit is contained in:
1 parent
7babf792e4
commit
9d3438fb88
718 files changed
+17515
-4084
No files matched your search
+16
-16
@@ -9,14 +9,6 @@
|
||||
{ "author_handle" : "Dave_Burton" }
|
||||
],
|
||||
"manifest" : [
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 10,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : "prog.c",
|
||||
"inventory_order" : 20,
|
||||
@@ -81,14 +73,6 @@
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "obfuscated calculator development notes"
|
||||
},
|
||||
{
|
||||
"file_path" : "road.to.obscurity.md",
|
||||
"inventory_order" : 150,
|
||||
"OK_to_edit" : true,
|
||||
"display_as" : "markdown",
|
||||
"display_via_github" : true,
|
||||
"entry_text" : "obfuscated calculator development notes"
|
||||
},
|
||||
{
|
||||
"file_path" : "rule2.c",
|
||||
"inventory_order" : 150,
|
||||
@@ -145,6 +129,14 @@
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "download entry source"
|
||||
},
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 2000000000,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : ".entry.json",
|
||||
"inventory_order" : 4294967295,
|
||||
@@ -177,6 +169,14 @@
|
||||
"display_via_github" : true,
|
||||
"entry_text" : "markdown source for index.html"
|
||||
},
|
||||
{
|
||||
"file_path" : "road.to.obscurity.md",
|
||||
"inventory_order" : 4294967295,
|
||||
"OK_to_edit" : true,
|
||||
"display_as" : "markdown",
|
||||
"display_via_github" : true,
|
||||
"entry_text" : "markdown source for road.to.obscurity.html"
|
||||
},
|
||||
{
|
||||
"file_path" : "spoilers.md",
|
||||
"inventory_order" : 4294967295,
|
||||
|
||||
@@ -301,9 +301,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<h1 id="inventory-for-2015burton"><a name="inventory"></a>Inventory for
|
||||
2015/burton</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/prog.c">prog.c</a>
|
||||
- entry source</li>
|
||||
@@ -328,9 +328,6 @@ href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/calc.
|
||||
<li><a href="road.to.obscurity.html">road.to.obscurity.html</a> -
|
||||
obfuscated calculator development notes</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/road.to.obscurity.md">road.to.obscurity.md</a>
|
||||
- obfuscated calculator development notes</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/rule2.c">rule2.c</a>
|
||||
- iocccsize reformatted to exactly 4096 octets</li>
|
||||
<li><a
|
||||
@@ -351,6 +348,7 @@ entry source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
@@ -362,6 +360,9 @@ href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/.giti
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/README.md">README.md</a>
|
||||
- markdown source for index.html</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/road.to.obscurity.md">road.to.obscurity.md</a>
|
||||
- markdown source for road.to.obscurity.html</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/burton/spoilers.md">spoilers.md</a>
|
||||
- markdown source for spoilers.html</li>
|
||||
</ul>
|
||||
|
||||
@@ -0,0 +1,371 @@
|
||||
<!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: bin/gen-other-html.sh -->
|
||||
<!-- 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>The International Obfuscated C Code Contest</title>
|
||||
<meta name="description" content="road.to.obscurity.md for 2015/burton">
|
||||
<meta name="keywords" content="IOCCC, 2015/burton, road.to.obscurity.md">
|
||||
</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>road.to.obscurity.md for 2015/burton</h2>
|
||||
</div>
|
||||
|
||||
<!-- END: this line ends content from: inc/header.default.html -->
|
||||
<!-- START: this line starts content from: inc/topnav.up2index.html -->
|
||||
|
||||
<div class="topnav">
|
||||
<a class="Left" href="index.html">↑ jump to index.html ↑</a>
|
||||
</div>
|
||||
|
||||
<!-- END: this line ends content from: inc/topnav.up2index.html -->
|
||||
<!-- START: this line starts content from: inc/begin-row.default.html -->
|
||||
|
||||
<div class="row">
|
||||
|
||||
<!-- END: this line ends content from: inc/begin-row.default.html -->
|
||||
<!-- START: this line starts content from: inc/begin-leftcolumn.default.html -->
|
||||
|
||||
<div class="leftcolumn">
|
||||
|
||||
<!-- END: this line ends content from: inc/begin-leftcolumn.default.html -->
|
||||
<!-- START: this line starts content from: inc/sidenav.default.html -->
|
||||
|
||||
<div class="sidenav">
|
||||
<a href="#content">Jump to contents</a>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="sidenav">
|
||||
<a href="../../index.html">IOCCC Home</a>
|
||||
<a href="../../years.html">Winning Entries</a>
|
||||
<a href="../../authors.html">People who have won</a>
|
||||
</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 & (mis)features</a>
|
||||
<a href="../../faq.html#fix_an_entry">Fixing IOCCC entries</a>
|
||||
<a href="../../faq.html#fix_web_site">Fixing the web site</a>
|
||||
<a href="../../faq.html#fix_author">Fixing author info</a>
|
||||
<a href="../../thanks-for-help.html">Thanks for the help</a>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="sidenav">
|
||||
<a href="../../judges.html">The IOCCC Judges</a>
|
||||
<a href="../../contact.html">Contacting the IOCCC</a>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="sidenav">
|
||||
<a href="#top">Jump to top</a>
|
||||
</div>
|
||||
|
||||
<!-- END: this line ends content from: inc/sidenav.default.html -->
|
||||
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
|
||||
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
|
||||
|
||||
<div class="rightcolumn">
|
||||
|
||||
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
|
||||
<!-- START: this line starts content from: inc/before-content.default.html -->
|
||||
|
||||
<a name="content"></a>
|
||||
|
||||
<!-- END: this line ends content from: inc/before-content.default.html -->
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<h1 id="development-of-the-obfuscated-calculator.">Development of the
|
||||
obfuscated calculator.</h1>
|
||||
<p>I wanted to enter the IOCCC….</p>
|
||||
<p>I think I can write something clever. Possibly even obscure. The
|
||||
competition is fierce, but not a closed door.</p>
|
||||
<p>I needed an interesting program, that had a reasonable chance of
|
||||
being shrunk within 4096 bytes, and lent itself to obfuscation. I had
|
||||
been revisiting utilities I’ve written over the years. One useful
|
||||
program was <code>calc</code>, a simple recursive descent signed integer
|
||||
expression parser I developed from first principles as a demonstration
|
||||
of how computers work for my son. That program did the basic four
|
||||
operations, but as a programmer, I needed more, so those were added over
|
||||
time.</p>
|
||||
<p><code>calc</code> is a useful, functioning utility. The operators
|
||||
before the obfuscation dance began (this is called foreshadowing):</p>
|
||||
<pre><code>() forced precedence
|
||||
- ~ ? unary minus, compl, byteswap
|
||||
* / % & << >> mul, div, mod, bitand, shift: left, right
|
||||
+ - | ^ add, sub, bitor, xor
|
||||
NUM 0-9</code></pre>
|
||||
<p>This seemed like a reasonable candidate to experiment with
|
||||
obfuscation; perhaps it might yield good results.</p>
|
||||
<h2 id="principle-of-operation">Principle of operation</h2>
|
||||
<p>The algorithm was and is rather straightforward:</p>
|
||||
<pre><code>expr() {
|
||||
n = term()
|
||||
t = token()
|
||||
if (t == ADD) return n += expr()
|
||||
if (t == SUB) return n -= expr()
|
||||
if (t == BOR) return n |= expr()
|
||||
if (t == XOR) return n ^= expr()
|
||||
ungettoken(t)
|
||||
return n
|
||||
}
|
||||
term() {
|
||||
n = factor()
|
||||
t = token()
|
||||
if (t == MUL) return n *= term()
|
||||
if (t == DIV) return n /= term()
|
||||
if (t == AND) return n &= term()
|
||||
if (t == RSH) return n >> term()
|
||||
if (t == LSH) return n << term()
|
||||
ungettoken(t)
|
||||
return n
|
||||
}
|
||||
factor() {
|
||||
t = token()
|
||||
if (t == LPAREN) {
|
||||
n = expr()
|
||||
if token() == RPAREN
|
||||
return n
|
||||
error()
|
||||
}
|
||||
if (t == SUB) return -factor()
|
||||
if (t == CMP) return ~factor()
|
||||
if (t == QUE) return byteswap(factor())
|
||||
if (t == DIG) return strtol()
|
||||
error()
|
||||
}</code></pre>
|
||||
<h2 id="obfuscation-is-a-process">Obfuscation is a process</h2>
|
||||
<p>Within the above algorithm, there are many details unmentioned, all
|
||||
ripe for obfuscation:</p>
|
||||
<ul>
|
||||
<li>input</li>
|
||||
<li>tokenization</li>
|
||||
<li><code>atoi(3)</code> input values</li>
|
||||
<li><code>sprintf(3)</code> results</li>
|
||||
<li>error recovery</li>
|
||||
<li>swapping bytes</li>
|
||||
<li>user interface (command line vs <code>stdin</code>)</li>
|
||||
</ul>
|
||||
<p>Uncertain as to how this would progress, I started
|
||||
obfuscating/condensing everything except the conversion operations,
|
||||
leaving those to <code>sprintf(3)</code> and <code>strtol(3)</code>. The
|
||||
first version of the obfuscated code used an homage to 1984 anon for
|
||||
I/O, and it featured a <code>#define</code> for <code>else</code>s and
|
||||
the types, to help minimize the repetition. And of course, most
|
||||
functions were renamed with one or two letters, and most of the
|
||||
variables became single letter globals. Tokenization was rather easy
|
||||
with a declared array, just initialized with unique values for each.</p>
|
||||
<p>This was when the obfuscation took a turn for the better (worse): it
|
||||
was easy to hide the operations via a simple transformation. The code
|
||||
now dealt with small integer values instead of direct ASCII
|
||||
representation of the operations. And the strings were collapsed into a
|
||||
single combined error message and operator tokenization table. This was
|
||||
relatively obscure.</p>
|
||||
<p>Next, <code>sprintf(3)</code> was replaced with a custom formatter.
|
||||
This was rather simple, but at least the formatting was not obvious.
|
||||
Formatting and printing were split early. <code>strtol(3)</code> was
|
||||
replaced with custom logic, limited to 3 practical bases: octal,
|
||||
decimal, and hex. The last result was remembered in a special variable,
|
||||
dot.</p>
|
||||
<p>By this time, I had a version which I considered obscure, and shared
|
||||
this early version with a couple of colleagues for comments. I suggested
|
||||
I could improve the obfuscation of a <code>term()</code> and
|
||||
<code>factor()</code>, and would like to have assignable memories.</p>
|
||||
<p>This code was pretty dense, but inspired by previous IOCCC entries, I
|
||||
thought I might get rid of all the <code>else</code>s, which showed the
|
||||
structure of the parser rather clearly. Investing in the ternary
|
||||
operator, the code got quite a bit more difficult to follow, used only
|
||||
<code>for</code> loops, and I had to start taking notes to follow it.
|
||||
This was a good sign! ;-)</p>
|
||||
<p>I started testing the code. I wrote a test suite to ensure the
|
||||
changes I made did not corrupt the processing (oh so easy to do with
|
||||
this obfuscated mess). Why does <code>-1>>32</code> yield
|
||||
<code>-1</code>? Oh, yeah: signed arithmetic. Enter Java’s
|
||||
<code>unsigned</code> shift: <code>>>></code>. Better. But with
|
||||
more features, more to get wrong, and harder to know which expression is
|
||||
causing the error. The easy solution: if the name begins with
|
||||
<code>e</code>, echo the input. Now I can see the failing expression.
|
||||
Wait, what is this test expression supposed to be testing?</p>
|
||||
<p>Wouldn’t it be nice to have comments?</p>
|
||||
<p>Adding new functionality to an obscure program is … going about it
|
||||
backwards. Get the functionality correct and complete, THEN obscure.
|
||||
Sounds obvious, but that did not happen. I got comments working, then
|
||||
desired to have multiple statements on a single line (read: semicolon
|
||||
expression terminators). This involved quite a bit of rework of the
|
||||
input code, but now allowed very convenient user interaction.</p>
|
||||
<h2 id="better-obscurity-is-a-laborious-process">Better Obscurity is a
|
||||
laborious process</h2>
|
||||
<p>Satisfied with the functionality, but unsatisfied with the obscurity,
|
||||
I pondered if I could get rid of all the constants? This had not been
|
||||
done before (to my knowledge), and I was able to work out the how-tos
|
||||
and the compromises. Now I can no longer declare my arrays, I have to
|
||||
allocate them. Obscurity now increased!</p>
|
||||
<p>But wouldn’t it be nice to have assignable memories?</p>
|
||||
<p>Around this time, the formatted code no longer fit with the 2053
|
||||
limit (due to a lack of comprehension of the significance of the
|
||||
space-after-brace-and-semi rule, and a layout program that did not know
|
||||
how to do this). Frustrated, I wrote another program to reformat this
|
||||
code into <a href="rule2.c">rule2.c</a>, which was a single C token per
|
||||
line. This solved the formatting problem, but intriguingly introduced
|
||||
another. Now I was faced with the 4096 rule as well as the 2053 rule.
|
||||
But this was a challenge!</p>
|
||||
<p>I wrote a de-obfuscator, and worked on both the unobfuscated version
|
||||
and the master code. I worked on the template formatter to make this as
|
||||
automated as possible, and worked to achieve both a perfectly presented
|
||||
picture AND the single-line exactly-at-4096 <a
|
||||
href="rule2.c">rule2.c</a>.</p>
|
||||
<p>Finally, “perfection”, with assignable memories! Where perfection is
|
||||
defined as a nicely formatted picture at less than 2053, and exactly
|
||||
4096 token-per-line <a href="rule2.c">rule2.c</a>.</p>
|
||||
<h2 id="testing-testing-testing">Testing Testing Testing</h2>
|
||||
<p>Cross platform, it works on Mac OSX, fails on Linux. It works if
|
||||
<code>#include <stdlib.h></code>, but it dumps core without it
|
||||
(the only change!)?. 64-bits without proper declaration of
|
||||
<code>int</code>s in syscalls yields unpredictable results. 32-bit
|
||||
compilation showed problems with byte-swapping in using addition versus
|
||||
bitwise-or. In 32-bit land, <code>x<<32 == x</code>, so
|
||||
<code>x<<32 + x>>32</code> does not yield the desired
|
||||
result, but <code>x<<32 | x>>32</code> does (with
|
||||
appropriate care and feeding). And the different compilers on different
|
||||
hosts complained loudly and differently, although all produced correct
|
||||
bits in spite of the noise.</p>
|
||||
<p>Further, the program did not do UNIX pipelines well, due to the
|
||||
unbuffered homage code (byte-at-a-time I/O), of which
|
||||
<code>write(2)</code> was also the source of the portability problem.
|
||||
Replace <code>write(2)</code> with
|
||||
<code>getchar(3)</code>/<code>putchar(3)</code>, and it piped well but
|
||||
lost some obscurity and no longer paid (direct) homage to history.</p>
|
||||
<p>Another problem: only one expression at a time was allowed on the
|
||||
command line, no semis, no comments, and it turns out <code>$2</code>,
|
||||
<code>$3</code>, … were not handled correctly. Given the new I/O code,
|
||||
it was now possible to copy the command line arguments into a buffer,
|
||||
and write a small routine to retrieve bytes from this buffer like
|
||||
<code>getchar(3)</code>. Voila! Better obfuscation with much better
|
||||
functionality!</p>
|
||||
<p>But wouldn’t it be nice to show what the current variables hold?</p>
|
||||
<p>Bytes are now hard to find to keep exactly at 4096, and adding
|
||||
functionality to obscured code is not easy. Restructuring the logic to
|
||||
gain the bytes necessary, code to display the variables was added.</p>
|
||||
<p>Test. Test. Test. Oh, noes! More bugs! Typing “<code>1 + 2 5</code>”
|
||||
yields <code>3</code>, but no syntax error. “<code>g = 1</code>” yields
|
||||
a syntax error, and “<code>0xg</code>” does not! “<code>)</code>” causes
|
||||
a segfault! Why didn’t I test these before I started obfuscating?! By
|
||||
this point, everything I did to the code perturbed the 4096 bytes, all
|
||||
variables were already a single character, and it was really difficult
|
||||
to follow the logic in a debugger (single-stepping an expression did the
|
||||
entire line of code, even if it involved multiple statements – and it
|
||||
did, everywhere, even in the unobfuscated version; think: a complex
|
||||
chain of ternary expressions is a single statement). This involved
|
||||
careful examination of all the expressions within the logic, trying to
|
||||
find a different way of getting the same result, but typically within
|
||||
fewer bytes than before to allow for the added logic to fix the
|
||||
bugs.</p>
|
||||
<p>The bugs were fixed, the code re-formatted, and <a
|
||||
href="rule2.c">rule2.c</a> was again 4096 bytes.</p>
|
||||
<p>But wouldn’t it be nice for unary plus to work?</p>
|
||||
<p>Add unary plus, re-balance. Little things now take a fair bit of
|
||||
work. Adding anything requires taking away in others, but since all the
|
||||
logic is functional, this means rewriting the logic to be more concise.
|
||||
After several rounds of this, bytes are scarce to come by.</p>
|
||||
<p>But wouldn’t it be nice for assignments to be silent?</p>
|
||||
<p>Made them silent (easier said than done!). Why does
|
||||
“<code>1 + 2 5</code>” print a syntax error, but
|
||||
“<code>a = 1 + 2 5</code>” does not? Rewrite(!) the assignment logic –
|
||||
and this requires more bytes!</p>
|
||||
<h2 id="better-obscurity-through-simplification">Better Obscurity
|
||||
Through Simplification</h2>
|
||||
<p>Except there were not enough bytes to do this, unless
|
||||
<code>#include <unistd.h></code> is removed. But then
|
||||
<code>sbrk()</code> must be declared, eating into the savings. If only
|
||||
there were 512 bytes of memory already allocated that could be portably
|
||||
touched for free….</p>
|
||||
<p>Light bulb! Memory allocation was excised, and the code became more
|
||||
obscure.</p>
|
||||
<p>It was working again! It formats beautifully, it compiled cleanly
|
||||
(with apropos <code>-Wno-guards</code>), it remains obscure after
|
||||
<code>cpp(1)</code> and <code>clang-format(1)</code>, it measures within
|
||||
the limits and exactly at 4096 (this latter was really getting
|
||||
challenging to maintain). No more bugs known, it is feature complete,
|
||||
documentation written.</p>
|
||||
<p>But wouldn’t it be nice to have a logical not?</p>
|
||||
<p>Sigh. This was the last operation added. Another round of code churn,
|
||||
expressions are difficult to rewrite because they are both obscure and
|
||||
relatively tight. But changing around the stable initialization code –
|
||||
by now the largest piece of logic – yielded the necessary bytes, and
|
||||
improved obscurity by double duty encoding of the operations
|
||||
initialization.</p>
|
||||
<p>The utility is now truly functional, and feature complete, and
|
||||
obscure. Without <a href="src.doc.txt">src.doc.txt</a> (basic
|
||||
documentation of the code structure), and some commented expanded logic
|
||||
stashed away, and the familiarity I have with the code having written
|
||||
and revised it repeatedly, I would not even want to attempt to decipher
|
||||
the logic. Many times in the debugging, I was thwarted by my own
|
||||
obfuscations, and went down blind paths in trying to fix a bug or add
|
||||
functionality. Now I think I have a good entry.</p>
|
||||
<p>But wouldn’t it be nice to import pre-set definitions from a
|
||||
file?</p>
|
||||
|
||||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
<!-- START: this line starts content from: inc/after-content.default.html -->
|
||||
|
||||
<!-- 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 -->
|
||||
@@ -0,0 +1,179 @@
|
||||
<!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: bin/gen-other-html.sh -->
|
||||
<!-- 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>The International Obfuscated C Code Contest</title>
|
||||
<meta name="description" content="spoilers.md for 2015/burton">
|
||||
<meta name="keywords" content="IOCCC, 2015/burton, spoilers.md">
|
||||
</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>spoilers.md for 2015/burton</h2>
|
||||
</div>
|
||||
|
||||
<!-- END: this line ends content from: inc/header.default.html -->
|
||||
<!-- START: this line starts content from: inc/topnav.up2index.html -->
|
||||
|
||||
<div class="topnav">
|
||||
<a class="Left" href="index.html">↑ jump to index.html ↑</a>
|
||||
</div>
|
||||
|
||||
<!-- END: this line ends content from: inc/topnav.up2index.html -->
|
||||
<!-- START: this line starts content from: inc/begin-row.default.html -->
|
||||
|
||||
<div class="row">
|
||||
|
||||
<!-- END: this line ends content from: inc/begin-row.default.html -->
|
||||
<!-- START: this line starts content from: inc/begin-leftcolumn.default.html -->
|
||||
|
||||
<div class="leftcolumn">
|
||||
|
||||
<!-- END: this line ends content from: inc/begin-leftcolumn.default.html -->
|
||||
<!-- START: this line starts content from: inc/sidenav.default.html -->
|
||||
|
||||
<div class="sidenav">
|
||||
<a href="#content">Jump to contents</a>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="sidenav">
|
||||
<a href="../../index.html">IOCCC Home</a>
|
||||
<a href="../../years.html">Winning Entries</a>
|
||||
<a href="../../authors.html">People who have won</a>
|
||||
</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 & (mis)features</a>
|
||||
<a href="../../faq.html#fix_an_entry">Fixing IOCCC entries</a>
|
||||
<a href="../../faq.html#fix_web_site">Fixing the web site</a>
|
||||
<a href="../../faq.html#fix_author">Fixing author info</a>
|
||||
<a href="../../thanks-for-help.html">Thanks for the help</a>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="sidenav">
|
||||
<a href="../../judges.html">The IOCCC Judges</a>
|
||||
<a href="../../contact.html">Contacting the IOCCC</a>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="sidenav">
|
||||
<a href="#top">Jump to top</a>
|
||||
</div>
|
||||
|
||||
<!-- END: this line ends content from: inc/sidenav.default.html -->
|
||||
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
|
||||
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
|
||||
|
||||
<div class="rightcolumn">
|
||||
|
||||
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
|
||||
<!-- START: this line starts content from: inc/before-content.default.html -->
|
||||
|
||||
<a name="content"></a>
|
||||
|
||||
<!-- END: this line ends content from: inc/before-content.default.html -->
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<h3 id="spoilers">Spoilers</h3>
|
||||
<p><code>calc</code> is a recursive-descent parser. It allocates from
|
||||
the stack deep enough that all expressions are exhausted before the
|
||||
recursion stack depth reaches the allocations. The memory map and source
|
||||
is documented in <a href="src.doc.txt">src.doc.txt</a>. Tokens are
|
||||
encoded using values 0-20, where 0 is an invalid token, 1 is minus, 2 is
|
||||
space, 3 is plus, etc. The necessary constants are derived at the start
|
||||
of the program, using the guarantee that globals are initialized to
|
||||
zero; so a correct NULL pointer is obtained from an uninitialized global
|
||||
pointer variable, and the integers from uninitialized global
|
||||
<code>int</code> variables. If <code>x</code> is a global
|
||||
<code>int</code>, then <code>!x</code> is <code>1</code>, and the
|
||||
derivation proceeds from there, using some identities that are
|
||||
confusingly similar and interestingly combined (increasing
|
||||
obfuscation):</p>
|
||||
<pre><code>obc clr
|
||||
--- ---
|
||||
-~x x+1
|
||||
~-x x-1
|
||||
y-~x y+x+1</code></pre>
|
||||
<p>The derived constants are a compromise between simple expressions,
|
||||
maximum utility, and minimum number of variables used.</p>
|
||||
<p>Command line arguments are copied into the upper half of the input
|
||||
buffer, separated by a space. This allows the code to have a single
|
||||
input parser by using a pointer-to-func to either
|
||||
<code>getchar(3)</code> if live, or a <code>getchar(3)</code>
|
||||
simulator.</p>
|
||||
<p>A small amount of obfuscation comes from <code>void</code> functions
|
||||
declared <code>int</code>, but missing <code>return</code>. This is
|
||||
necessary to allow these functions in ternary <code>?:</code>
|
||||
expressions and paired with <code>&&</code> and <code>||</code>;
|
||||
but the requisite returns would add symbol count at no benefit to
|
||||
obscurity or functionality. Function decomposition was mostly chosen to
|
||||
avoid curly braces: if a <code>for</code>-loop required multiple
|
||||
statements, the body became a new function. Last, but not least: sharing
|
||||
state via global variables is an ancient and honored form of
|
||||
obfuscation, and remarkably effective.</p>
|
||||
|
||||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
<!-- START: this line starts content from: inc/after-content.default.html -->
|
||||
|
||||
<!-- 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 -->
|
||||
@@ -9,14 +9,6 @@
|
||||
{ "author_handle" : "Gil_Dogon" }
|
||||
],
|
||||
"manifest" : [
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 10,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : "prog.c",
|
||||
"inventory_order" : 20,
|
||||
@@ -57,6 +49,14 @@
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "download entry source"
|
||||
},
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 2000000000,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : ".entry.json",
|
||||
"inventory_order" : 4294967295,
|
||||
|
||||
@@ -314,9 +314,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<h1 id="inventory-for-2015dogon"><a name="inventory"></a>Inventory for
|
||||
2015/dogon</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/dogon/prog.c">prog.c</a>
|
||||
- entry source</li>
|
||||
@@ -334,6 +334,7 @@ source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/dogon/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
|
||||
@@ -9,14 +9,6 @@
|
||||
{ "author_handle" : "Etienne_Duble" }
|
||||
],
|
||||
"manifest" : [
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 10,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : "prog.c",
|
||||
"inventory_order" : 20,
|
||||
@@ -81,6 +73,14 @@
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "download entry source"
|
||||
},
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 2000000000,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : ".entry.json",
|
||||
"inventory_order" : 4294967295,
|
||||
|
||||
@@ -284,9 +284,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<h1 id="inventory-for-2015duble"><a name="inventory"></a>Inventory for
|
||||
2015/duble</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/duble/prog.c">prog.c</a>
|
||||
- entry source</li>
|
||||
@@ -313,6 +313,7 @@ source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/duble/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
|
||||
@@ -10,14 +10,6 @@
|
||||
{ "author_handle" : "Yusuke_Endoh" }
|
||||
],
|
||||
"manifest" : [
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 10,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : "prog.c",
|
||||
"inventory_order" : 20,
|
||||
@@ -74,6 +66,14 @@
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "download entry source"
|
||||
},
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 2000000000,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : ".entry.json",
|
||||
"inventory_order" : 4294967295,
|
||||
|
||||
@@ -312,7 +312,7 @@ this license:</p>
|
||||
<pre><code>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</code></pre>
|
||||
<p>For more information, see:
|
||||
https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
<aside id="footnotes" class="footnotes footnotes-end-of-document"
|
||||
<section id="footnotes" class="footnotes footnotes-end-of-document"
|
||||
role="doc-endnotes">
|
||||
<hr />
|
||||
<ol>
|
||||
@@ -340,7 +340,7 @@ href="http://www.rfc-editor.org/info/rfc4648"
|
||||
class="uri">http://www.rfc-editor.org/info/rfc4648</a>.<a href="#fnref5"
|
||||
class="footnote-back" role="doc-backlink">↩︎</a></p></li>
|
||||
</ol>
|
||||
</aside>
|
||||
</section>
|
||||
|
||||
<!-- 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 -->
|
||||
@@ -349,9 +349,9 @@ class="footnote-back" role="doc-backlink">↩︎</a></p></li>
|
||||
|
||||
<h1 id="inventory-for-2015endoh1"><a name="inventory"></a>Inventory for
|
||||
2015/endoh1</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/endoh1/prog.c">prog.c</a>
|
||||
- entry source</li>
|
||||
@@ -375,6 +375,7 @@ entry source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/endoh1/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
|
||||
@@ -9,14 +9,6 @@
|
||||
{ "author_handle" : "Yusuke_Endoh" }
|
||||
],
|
||||
"manifest" : [
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 10,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : "prog.c",
|
||||
"inventory_order" : 20,
|
||||
@@ -57,6 +49,14 @@
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "download entry source"
|
||||
},
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 2000000000,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : ".entry.json",
|
||||
"inventory_order" : 4294967295,
|
||||
|
||||
@@ -177,9 +177,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<h1 id="inventory-for-2015endoh2"><a name="inventory"></a>Inventory for
|
||||
2015/endoh2</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/endoh2/prog.c">prog.c</a>
|
||||
- entry source</li>
|
||||
@@ -197,6 +197,7 @@ entry source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/endoh2/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
|
||||
@@ -9,14 +9,6 @@
|
||||
{ "author_handle" : "Yusuke_Endoh" }
|
||||
],
|
||||
"manifest" : [
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 10,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : "prog.c",
|
||||
"inventory_order" : 20,
|
||||
@@ -73,6 +65,14 @@
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "download entry source"
|
||||
},
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 2000000000,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : ".entry.json",
|
||||
"inventory_order" : 4294967295,
|
||||
|
||||
@@ -335,9 +335,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<h1 id="inventory-for-2015endoh3"><a name="inventory"></a>Inventory for
|
||||
2015/endoh3</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/endoh3/prog.c">prog.c</a>
|
||||
- entry source</li>
|
||||
@@ -361,6 +361,7 @@ entry source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/endoh3/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
|
||||
@@ -9,14 +9,6 @@
|
||||
{ "author_handle" : "Yusuke_Endoh" }
|
||||
],
|
||||
"manifest" : [
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 10,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : "prog.c",
|
||||
"inventory_order" : 20,
|
||||
@@ -65,6 +57,14 @@
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "download entry source"
|
||||
},
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 2000000000,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : ".entry.json",
|
||||
"inventory_order" : 4294967295,
|
||||
|
||||
@@ -181,9 +181,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<h1 id="inventory-for-2015endoh4"><a name="inventory"></a>Inventory for
|
||||
2015/endoh4</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/endoh4/prog.c">prog.c</a>
|
||||
- entry source</li>
|
||||
@@ -204,6 +204,7 @@ entry source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/endoh4/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
|
||||
@@ -9,14 +9,6 @@
|
||||
{ "author_handle" : "Qiming_HOU" }
|
||||
],
|
||||
"manifest" : [
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 10,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : "prog.c",
|
||||
"inventory_order" : 20,
|
||||
@@ -65,6 +57,14 @@
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "download entry source"
|
||||
},
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 2000000000,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : ".entry.json",
|
||||
"inventory_order" : 4294967295,
|
||||
|
||||
+2
-1
@@ -223,9 +223,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<h1 id="inventory-for-2015hou"><a name="inventory"></a>Inventory for
|
||||
2015/hou</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/hou/prog.c">prog.c</a>
|
||||
- entry source</li>
|
||||
@@ -245,6 +245,7 @@ source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/hou/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
|
||||
@@ -9,14 +9,6 @@
|
||||
{ "author_handle" : "Anthony_C_Howe" }
|
||||
],
|
||||
"manifest" : [
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 10,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : "prog.c",
|
||||
"inventory_order" : 20,
|
||||
@@ -129,6 +121,14 @@
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "download entry source"
|
||||
},
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 2000000000,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : ".entry.json",
|
||||
"inventory_order" : 4294967295,
|
||||
|
||||
@@ -264,9 +264,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<h1 id="inventory-for-2015howe"><a name="inventory"></a>Inventory for
|
||||
2015/howe</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/howe/prog.c">prog.c</a>
|
||||
- entry source</li>
|
||||
@@ -311,6 +311,7 @@ source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/howe/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
|
||||
+15
-19
@@ -223,30 +223,26 @@ 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
|
||||
<li><a href="burton/index.html">2015/burton</a> - Most Useful</li>
|
||||
<li><a href="dogon/index.html">2015/dogon</a> - Most Crafty</li>
|
||||
<li><a href="duble/index.html">2015/duble</a> - Best Handwriting</li>
|
||||
<li><a href="endoh1/index.html">2015/endoh1</a> - Most Diffused
|
||||
Reaction</li>
|
||||
<li><a href="2015/endoh2/index.html">2015/endoh2</a> - Most Overlooked
|
||||
<li><a href="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!
|
||||
<li><a href="endoh3/index.html">2015/endoh3</a> - Back to the Future
|
||||
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
|
||||
<li><a href="endoh4/index.html">2015/endoh4</a> - Best One-liner</li>
|
||||
<li><a href="hou/index.html">2015/hou</a> - Most Well-rounded Hash</li>
|
||||
<li><a href="howe/index.html">2015/howe</a> - Most Different</li>
|
||||
<li><a href="mills1/index.html">2015/mills1</a> - For the Birds!
|
||||
Award</li>
|
||||
<li><a href="mills2/index.html">2015/mills2</a> - Most Compact</li>
|
||||
<li><a href="muth/index.html">2015/muth</a> - Most Complete Use of
|
||||
CPP</li>
|
||||
<li><a href="2015/schweikhardt/index.html">2015/schweikhardt</a> - Best
|
||||
<li><a href="schweikhardt/index.html">2015/schweikhardt</a> - Best
|
||||
Documented</li>
|
||||
<li><a href="2015/yang/index.html">2015/yang</a> - Most Pointed
|
||||
Reaction</li>
|
||||
<li><a href="yang/index.html">2015/yang</a> - Most Pointed Reaction</li>
|
||||
</ul>
|
||||
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
|
||||
|
||||
|
||||
@@ -9,14 +9,6 @@
|
||||
{ "author_handle" : "Christopher_Mills" }
|
||||
],
|
||||
"manifest" : [
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 10,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : "prog.c",
|
||||
"inventory_order" : 20,
|
||||
@@ -57,6 +49,14 @@
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "download entry source"
|
||||
},
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 2000000000,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : ".entry.json",
|
||||
"inventory_order" : 4294967295,
|
||||
|
||||
@@ -267,9 +267,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<h1 id="inventory-for-2015mills1"><a name="inventory"></a>Inventory for
|
||||
2015/mills1</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/mills1/prog.c">prog.c</a>
|
||||
- entry source</li>
|
||||
@@ -287,6 +287,7 @@ entry source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/mills1/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
|
||||
@@ -9,14 +9,6 @@
|
||||
{ "author_handle" : "Christopher_Mills" }
|
||||
],
|
||||
"manifest" : [
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 10,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : "prog.c",
|
||||
"inventory_order" : 20,
|
||||
@@ -73,6 +65,14 @@
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "download entry source"
|
||||
},
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 2000000000,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : ".entry.json",
|
||||
"inventory_order" : 4294967295,
|
||||
|
||||
@@ -249,9 +249,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<h1 id="inventory-for-2015mills2"><a name="inventory"></a>Inventory for
|
||||
2015/mills2</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/mills2/prog.c">prog.c</a>
|
||||
- entry source</li>
|
||||
@@ -273,6 +273,7 @@ entry source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/mills2/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
|
||||
@@ -9,14 +9,6 @@
|
||||
{ "author_handle" : "Dominik_Muth" }
|
||||
],
|
||||
"manifest" : [
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 10,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : "prog.c",
|
||||
"inventory_order" : 20,
|
||||
@@ -177,6 +169,14 @@
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "download entry source"
|
||||
},
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 2000000000,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : ".entry.json",
|
||||
"inventory_order" : 4294967295,
|
||||
|
||||
@@ -223,9 +223,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<h1 id="inventory-for-2015muth"><a name="inventory"></a>Inventory for
|
||||
2015/muth</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/muth/prog.c">prog.c</a>
|
||||
- entry source</li>
|
||||
@@ -288,6 +288,7 @@ source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/muth/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
|
||||
@@ -9,14 +9,6 @@
|
||||
{ "author_handle" : "Jens_Schweikhardt" }
|
||||
],
|
||||
"manifest" : [
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 10,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : "prog.c",
|
||||
"inventory_order" : 20,
|
||||
@@ -57,6 +49,14 @@
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "download entry source"
|
||||
},
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 2000000000,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : ".entry.json",
|
||||
"inventory_order" : 4294967295,
|
||||
|
||||
@@ -850,9 +850,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
<h1
|
||||
id="inventory-for-2015schweikhardt"><a name="inventory"></a>Inventory
|
||||
for 2015/schweikhardt</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/schweikhardt/prog.c">prog.c</a>
|
||||
- entry source</li>
|
||||
@@ -870,6 +870,7 @@ download entry source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/schweikhardt/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
|
||||
@@ -9,14 +9,6 @@
|
||||
{ "author_handle" : "Don_Yang" }
|
||||
],
|
||||
"manifest" : [
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 10,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : "prog.c",
|
||||
"inventory_order" : 20,
|
||||
@@ -65,6 +57,14 @@
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "download entry source"
|
||||
},
|
||||
{
|
||||
"file_path" : "index.html",
|
||||
"inventory_order" : 2000000000,
|
||||
"OK_to_edit" : false,
|
||||
"display_as" : "html",
|
||||
"display_via_github" : false,
|
||||
"entry_text" : "entry home page"
|
||||
},
|
||||
{
|
||||
"file_path" : ".entry.json",
|
||||
"inventory_order" : 4294967295,
|
||||
|
||||
@@ -229,9 +229,9 @@ https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<h1 id="inventory-for-2015yang"><a name="inventory"></a>Inventory for
|
||||
2015/yang</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/prog.c">prog.c</a>
|
||||
- entry source</li>
|
||||
@@ -250,6 +250,7 @@ source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
|
||||
Reference in new issue
Block a user