Add "<!-- BEFORE: 1st line of markdown file: FILE/PATH -->" before the markdown content. This line appears in the generated HTML. Add "<!-- AFTER: last line of markdown file: FILE/PATH -->" after the markdown content. This line appears in the generated HTML. We test a fix relating to problems produced by `pandoc(1)` when footnotes are added at the end of generated HTML. This test is made for `2000/bmeyer/index.html`. Fixed exit 4 in `bin/md2html.sh that should be exit 5. Changed `bin/md2html.sh` VERSION from to "1.3 2024-04-14" to "1.4 2024-04-18". Run `bin/readme2index.sh -v 1 2000/bmeyer` to perform the above.
353 lines
17 KiB
HTML
353 lines
17 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||
<!-- START: two lines up starts content from: inc/top.default.html -->
|
||
|
||
<!-- 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>2012/blakely - Most GIFted expressions</title>
|
||
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
|
||
<meta name="description" content="2012 IOCCC entry blakely - Most GIFted expressions">
|
||
<meta name="keywords" content="IOCCC, 2012, IOCCC 2012, IOCCC entry, blakely, Most GIFted expressions">
|
||
</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: 2012/blakely/README.md -->
|
||
<!-- -->
|
||
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2012/blakely/README.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2012/blakely/README.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2012/blakely/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">
|
||
IOCCC
|
||
</div>
|
||
|
||
<div class="topbar-items">
|
||
<div class="item">
|
||
<span class="item-header">
|
||
Home
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font"><a href="../../index.html">IOCCC Home</a></div>
|
||
<div class="outfit-font"><a href="../../years.html">Winning Entries</a></div>
|
||
<div class="outfit-font"><a href="../../authors.html">People who have won</a></div>
|
||
<div class="outfit-font"><a href="../../location.html">Location of authors</a></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
News
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font"><a href="../../news.html">IOCCC News</a></div>
|
||
<div class="outfit-font"><a href="../../status.html">Contest status</a></div>
|
||
<div class="outfit-font"><a href="../../next/index.html">Rules and Guidelines</a></div>
|
||
<div class="outfit-font"><a href="../../faq.html#submit">How to enter the IOCCC</a></div>
|
||
<div class="outfit-font"><a href="../../faq.html">FAQ</a></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
Bugs
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font"><a href="../../bugs.html">Bugs & (mis)features</a></div>
|
||
<div class="outfit-font"><a href="../../faq.html#fix_an_entry">Fixing IOCCC entries</a></div>
|
||
<div class="outfit-font"><a href="../../faq.html#fix_web_site">Fixing the web site</a></div>
|
||
<div class="outfit-font"><a href="../../faq.html#fix_author">Fixing author info</a></div>
|
||
<div class="outfit-font"><a href="../../thanks-for-help.html">Thanks for the help</a></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
Judges
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font"><a href="../../judges.html">The IOCCC Judges</a></div>
|
||
<div class="outfit-font"><a href="../../contact.html">Contacting the IOCCC</a></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/topbar.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/blakely - Most GIFted expressions</h2>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/header.default.html -->
|
||
<!-- START: this line starts content from: inc/navbar.first.html -->
|
||
|
||
<div class="navbar">
|
||
<a class="Left Disabled" href="#">first entry</a>
|
||
<a class="Left" href="../index.html">↑ 2012 ↑</a>
|
||
<a class="Left" href="../deckmyn/index.html">deckmyn →</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/blakely/blakely.c">C code</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/blakely/Makefile">Makefile</a>
|
||
<a class="Right" href="#inventory">Inventory</a>
|
||
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2012%2Fblakely%2Findex.html">✓</a>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/navbar.first.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#Philip_Blakely">Philip Blakely</a><br>
|
||
Location: <a href="../../location.html#GB">GB</a> - <em>United Kingdom of Great Britain and Northern Ireland</em> (<em>United Kingdom</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: 2012/blakely/README.md -->
|
||
<h2 id="to-build">To build:</h2>
|
||
<pre><code> make</code></pre>
|
||
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
|
||
<p>The current status of this entry is:</p>
|
||
<pre><code> STATUS: INABIAF - please **DO NOT** fix</code></pre>
|
||
<p>For more detailed information see <a href="../../bugs.html#2012_blakely">2012 blakely bugs</a>.</p>
|
||
<h2 id="to-use">To use:</h2>
|
||
<pre><code> ./blakely "RPN formula" resolution > output.gif</code></pre>
|
||
<h2 id="try">Try:</h2>
|
||
<pre><code> ./try.sh</code></pre>
|
||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||
<p>Several IOCCC themes (<a href="https://en.wikipedia.org/wiki/Reverse_Polish_notation">RPN
|
||
calculator</a>, animated
|
||
<a href="https://en.wikipedia.org/wiki/GIF">GIF</a> generator, <a href="https://en.wikipedia.org/wiki/Ray_tracing_(graphics)">ray
|
||
tracing</a>) in one package!
|
||
Very impressive!</p>
|
||
<p>The checkerboard pattern in the output can be broken. Could you figure out how?</p>
|
||
<p>Larger GIF files confuse some image viewers.</p>
|
||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||
<h3 id="remarks">Remarks</h3>
|
||
<p>This program renders a generic
|
||
<a href="https://en.wikipedia.org/wiki/Reverse_Polish_notation">RPN</a> expression in
|
||
<a href="https://en.wikipedia.org/wiki/Ray_tracing_(graphics)">ray-traced</a> animated
|
||
<a href="https://en.wikipedia.org/wiki/GIF">GIF</a> form. The expression in spatial
|
||
variables <code>x</code> and <code>y</code> is specified on the command-line with the required
|
||
resolution, and an animated GIF showing a fly-around of the resulting surface is
|
||
output to <code>stdout</code>.</p>
|
||
<h3 id="usage">Usage</h3>
|
||
<p>The program should be run as:</p>
|
||
<pre><code> ./blakely xy* 32 > pic.gif</code></pre>
|
||
<p>where the first parameter is a
|
||
<a href="https://en.wikipedia.org/wiki/Reverse_Polish_notation">RPN</a> expression, and the
|
||
second is the width of the required <a href="https://en.wikipedia.org/wiki/GIF">GIF</a>, up
|
||
to a maximum of 250.</p>
|
||
<p>The expressions are written in <a href="https://en.wikipedia.org/wiki/Reverse_Polish_notation">Reverse Polish
|
||
Notation</a> with the
|
||
following characters recognised:</p>
|
||
<pre><code> +, -, *, / - usual arithmetic operations
|
||
^ - Exponentiation; valid for constant exponent only
|
||
s - sin
|
||
c - cos
|
||
0-9 - single digit integers
|
||
d - duplicate number on stack
|
||
t - transpose top two elements on stack
|
||
x - x coordinate value
|
||
y - y coordinate value</code></pre>
|
||
<p>NB: all arithmetic is done in double precision, so <code>23/</code> is two-thirds, rather
|
||
than 0.</p>
|
||
<p>The surface plotted corresponds to <code>-1 <= x,y <= 1</code> and for best results, the
|
||
generated <code>z</code> value should lie between <code>-1</code> and <code>1</code>.</p>
|
||
<p>If there is a division by zero, square-root of a negative number, or similar
|
||
operation, then the results are undefined.</p>
|
||
<h3 id="examples">Examples</h3>
|
||
<p>For test-runs, use a resolution of 32. For simple expressions, the
|
||
<a href="https://en.wikipedia.org/wiki/GIF">GIF</a> generation should take only
|
||
a few seconds with a modern processor and full optimization. Runtime scales as
|
||
<a href="https://en.wikipedia.org/wiki/Big_O_notation">O(N^3)</a> with resolution <code>N</code>,
|
||
and more complex expressions take longer to compute. For example, increasing the
|
||
resolution of <code>ripple.gif</code>
|
||
to 250 took ~35 minutes to render on an <a href="https://en.wikipedia.org/wiki/Intel_Core#Core_i7">i7
|
||
processor</a>.</p>
|
||
<pre><code> ./blakely xy* 32 > saddle.gif
|
||
|
||
./blakely xx*yy*1++d5*ct/ 64 > ripple.gif</code></pre>
|
||
<h3 id="algorithm">Algorithm</h3>
|
||
<p>A generic root-finding algorithm to find the point of intersection between a ray
|
||
and the surface is done using a simple forward search from the eye. In order to
|
||
make the rendering realistic, both the value of the expression, and its
|
||
derivative with respect to <code>x</code> and <code>y</code> must be tracked. This is done using an
|
||
obvious stack-based approach.</p>
|
||
<h3 id="obfuscations">Obfuscations</h3>
|
||
<p>Much of the obfuscation is achieved through the use of single-letter variables
|
||
and <code>#define</code>s. The characters output for the <a href="https://en.wikipedia.org/wiki/GIF#File_format">GIF
|
||
format</a> are generated in myriad
|
||
and wonderful ways, making use of
|
||
<a href="https://en.wikipedia.org/wiki/Exclusive_or">XOR</a>, return values from
|
||
<code>putchar()</code>, and odd expressions. The layout is in the form of <code>X Y Z</code>.</p>
|
||
<h3 id="limitations">Limitations</h3>
|
||
<p>ASCII is assumed since many bytes for the
|
||
<a href="https://en.wikipedia.org/wiki/GIF">GIF</a> output are generated from characters
|
||
given in the source code. On compilation a few warnings about parentheses come
|
||
up when using gcc 4.6.3, and one about no return value from <code>main()</code> (who uses
|
||
exit codes anyway?), but clang 3.1 emits no warnings.</p>
|
||
<h3 id="questions">Questions</h3>
|
||
<ul>
|
||
<li>Apart from their appearance when computing the <a href="https://en.wikipedia.org/wiki/Reverse_Polish_notation">RPN
|
||
expression</a>, <a href="https://en.wikipedia.org/wiki/Sine_and_cosine">sin and
|
||
cos</a> are not used.
|
||
How do we then get the correct angles for rotation?</li>
|
||
<li>Exactly how many times will the animation repeat?</li>
|
||
<li>Why is there an upper limit of 250x250 for the resolution?</li>
|
||
<li>What is the point of <code>b[0]</code>?</li>
|
||
<li>Where are the words <code>NETSCAPE</code> and <code>GIF</code> hidden in the source?</li>
|
||
</ul>
|
||
<p>(Note that the author may or may not be able to answer all of the above
|
||
questions.)</p>
|
||
<!--
|
||
|
||
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: 2012/blakely/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-2012blakely">Inventory for 2012/blakely</h1>
|
||
</div>
|
||
<p><a href="#top">Jump to top</a></p>
|
||
<h2 id="primary-files">Primary files</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/blakely/blakely.c">blakely.c</a> - entry source</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/blakely/Makefile">Makefile</a> - entry Makefile</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/blakely/blakely.orig.c">blakely.orig.c</a> - original source</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/blakely/try.sh">try.sh</a> - how to run</li>
|
||
</ul>
|
||
<h2 id="secondary-files">Secondary files</h2>
|
||
<ul>
|
||
<li><a href="2012_blakely.tar.bz2">2012_blakely.tar.bz2</a> - download entry tarball</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/blakely/README.md">README.md</a> - markdown source for this web page</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/blakely/.entry.json">.entry.json</a> - description of entry in JSON</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/blakely/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/blakely/.path">.path</a> - directory path from top directory</li>
|
||
<li><a href="index.html">index.html</a> - this web page</li>
|
||
</ul>
|
||
|
||
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
|
||
|
||
<!-- END: this line ends content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
|
||
<!-- START: this line starts content from: inc/after-content.default.html -->
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/after-content.default.html -->
|
||
<!-- START: this line starts content from: inc/footer.default.html -->
|
||
|
||
<!--
|
||
|
||
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/
|
||
|
||
-->
|
||
|
||
<div class="footer">
|
||
<div id="copyright"><h2>Copyright and CC BY-SA 4.0 License</h2></div>
|
||
<p>All IOCCC content including this file and web page are:</p>
|
||
<b> Copyright © 1984-2024 by Landon Curt Noll. <a href="https://creativecommons.org/faq/#what-does-some-rights-reserved-mean">Some Rights Reserved</a>.</b>
|
||
<p>This work is licensed by Landon Curt Noll under:</p>
|
||
<p><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
|
||
<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">
|
||
</a></b></p>
|
||
<p>The <b>CC BY-SA 4.0 LEGAL CODE</b> for this license is found under:</p>
|
||
<p> <b><a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode.en">
|
||
https://creativecommons.org/licenses/by-sa/4.0/legalcode.en</a></b></p>
|
||
<p>You should <b>carefully review</b> all of the terms and conditions of the
|
||
<a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode.en">actual license</a>
|
||
before using the licensed material.</p>
|
||
<p>You may wish to review the <b><a href="../../license.html">highlights of some of the key
|
||
features and terms</a></b> of the <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode.en">actual license</a>.</p>
|
||
<h2>Coda</h2>
|
||
<p><a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2012%2Fblakely%2Findex.html">Nu HTML check this web page</a></p>
|
||
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/footer.default.html -->
|
||
<!-- START: this line starts content from: inc/bottom.default.html -->
|
||
|
||
</body>
|
||
</html>
|
||
|
||
<!-- END: this line ends content from: inc/bottom.default.html -->
|