We improve the `inc/footer.default.html` file to make
the _Copyright and CC BY-SA 4.0 License_ clear.
We add `license.md` and generate `license.html` (via `make
gen_top_html`) so that key features and terms of the _Copyright and
CC BY-SA 4.0 License_ are accessible.
Add CC BY-SA 4.0 license images into the `png/` directory.
FYI: We use the license to allow the open use of IOCCC entry code,
and at the same time, we help ensure that those working on the IOCCC
have proper Attribution including, of course, the IOCCC winners
themselves! The _Copyright and CC BY-SA 4.0 License_ help ensure
that everyone may enjoy the IOCCC.
Added '#copyright' to all generated HTML pages so that the
_Copyright and CC BY-SA 4.0 License_ may be reached.
Changed `bin/gen-top-html.sh` VERSION from "1.2.2 2024-03-26"
to "1.2.3 2024-04-12".
Fix `bin/gen-sitemap.sh` to remove requirement of `ioccc.tar.bz2`.
Changed `bin/gen-sitemap.sh` VERSION from "1.3.4 2024-03-27"
to "1.3.5 2024-04-13".
Perform `make www sitemap` to perform the above.
We also give a _hint_ as to the next project.
TODO: Complete that next project we are _hinting_ at.
TODO: Review the work being done by a web designer to see
how their work might be incorporated into the web site.
332 lines
16 KiB
HTML
332 lines
16 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">
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||
<title>1991/davidguy - Best X11 Graphics</title>
|
||
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
|
||
<meta name="description" content="1991 IOCCC entry davidguy - Best X11 Graphics">
|
||
<meta name="keywords" content="IOCCC, 1991, IOCCC 1991, IOCCC entry, davidguy, Best X11 Graphics">
|
||
</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: 1991/davidguy/README.md -->
|
||
<!-- -->
|
||
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 1991/davidguy/README.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 1991/davidguy/README.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 1991/davidguy/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/header.default.html -->
|
||
|
||
<div class="header">
|
||
<img src="../../png/ioccc.png" alt="IOCCC image by Matt Zucker" width=300 height=110>
|
||
<h1>The International Obfuscated C Code Contest</h1>
|
||
<h2>1991/davidguy - Best X11 Graphics</h2>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/header.default.html -->
|
||
<!-- START: this line starts content from: inc/topnav.mid.html -->
|
||
|
||
<div class="topnav">
|
||
<a class="Left" href="../cdupont/index.html">← cdupont</a>
|
||
<a class="Left" href="../index.html">↑ 1991 ↑</a>
|
||
<a class="Left" href="../dds/index.html">dds →</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/1991/davidguy/davidguy.c">C code</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/1991/davidguy/Makefile">Makefile</a>
|
||
<a class="Right" href="#inventory">Inventory</a>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/topnav.mid.html -->
|
||
<!-- START: this line starts content from: inc/begin-row.default.html -->
|
||
|
||
<div class="row">
|
||
|
||
<!-- END: this line ends content from: inc/begin-row.default.html -->
|
||
<!-- START: this line starts content from: inc/begin-leftcolumn.default.html -->
|
||
|
||
<div class="leftcolumn">
|
||
|
||
<!-- END: this line ends content from: inc/begin-leftcolumn.default.html -->
|
||
<!-- START: this line starts content from: inc/sidenav.default.html -->
|
||
|
||
<div class="sidenav">
|
||
<a href="#content">Jump to contents</a>
|
||
</div>
|
||
<hr>
|
||
<div class="sidenav">
|
||
<a href="../../index.html">IOCCC Home</a>
|
||
<a href="../../years.html">Winning Entries</a>
|
||
<a href="../../authors.html">People who have won</a>
|
||
<a href="../../location.html">Location of authors</a>
|
||
</div>
|
||
<hr>
|
||
<div class="sidenav">
|
||
<a href="../../news.html">IOCCC News</a>
|
||
<a href="../../status.html">Contest status</a>
|
||
<a href="../../faq.html#submit">How to enter the IOCCC</a>
|
||
<a href="../../faq.html">FAQ</a>
|
||
</div>
|
||
<hr>
|
||
<div class="sidenav">
|
||
<a href="../../bugs.html">Bugs & (mis)features</a>
|
||
<a href="../../faq.html#fix_an_entry">Fixing IOCCC entries</a>
|
||
<a href="../../faq.html#fix_web_site">Fixing the web site</a>
|
||
<a href="../../faq.html#fix_author">Fixing author info</a>
|
||
<a href="../../thanks-for-help.html">Thanks for the help</a>
|
||
</div>
|
||
<hr>
|
||
<div class="sidenav">
|
||
<a href="../../judges.html">The IOCCC Judges</a>
|
||
<a href="../../contact.html">Contacting the IOCCC</a>
|
||
</div>
|
||
<hr>
|
||
<div class="sidenav">
|
||
<a href="#top">Jump to top</a>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/sidenav.default.html -->
|
||
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
|
||
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
|
||
|
||
<div class="rightcolumn">
|
||
|
||
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
|
||
<!-- START: this line starts content from: inc/before-content.default.html -->
|
||
|
||
<a name="content"></a>
|
||
|
||
<!-- END: this line ends content from: inc/before-content.default.html -->
|
||
<!-- START: this line starts content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
|
||
|
||
<!-- START: this line starts content generated by: bin/output-index-author.sh -->
|
||
|
||
<h2 id="author"><a name="author"></a>Author:</h2>
|
||
<ul>
|
||
<li>Name: <a href="../../authors.html#David_Applegate">David Applegate</a><br>
|
||
Location: <a href="../../location.html#US">US</a> - <em>United States of America</em> (<em>United States</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 -->
|
||
|
||
<h2 id="to-build">To build:</h2>
|
||
<pre class="<!---sh-->"><code> make all</code></pre>
|
||
<h2 id="to-use">To use:</h2>
|
||
<pre class="<!---sh-->"><code> ./davidguy ip_address:server.screen</code></pre>
|
||
<p>where <code>ip_address</code> in an IP address of an X server.</p>
|
||
<h2 id="try">Try:</h2>
|
||
<pre class="<!---sh-->"><code> ./davidguy 127.0.0.1:0.0</code></pre>
|
||
<p>Of course, you may need to supply a more reasonable address. :-)</p>
|
||
<h2 id="also-try">Also try:</h2>
|
||
<pre class="<!---sh-->"><code> cp -f davidguy guydavid
|
||
./guydavid 127.0.0.1:0.0</code></pre>
|
||
<p>Can you determine why this makes a difference?</p>
|
||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||
<p>We permitted this type of entry to win because:</p>
|
||
<ul>
|
||
<li>it did not require X to be on the host system</li>
|
||
<li>both BSD and SVR4 have sockets</li>
|
||
</ul>
|
||
<p>Now that X11 and sockets have become ‘standard’, we plan to open
|
||
up the contest to programs that use them. Future rules will
|
||
explain this further.</p>
|
||
<p>We are pleased that this entry has helped bring new ‘life’ into
|
||
the contest.</p>
|
||
<h2 id="authors-remarks">Authors’ remarks:</h2>
|
||
<p>The program is a fully-functional X client. It talks directly to
|
||
the X server through a socket without using Xlib, Xt or any other
|
||
wussy toolkit junk. With no arguments, it will try to run
|
||
locally using the unix-domain socket (only on BSD :-( ) or you can
|
||
give it a command line argument identifying a display host address
|
||
(in dotted octet notation, like 127.0.0.1:0.0) where the X server
|
||
is running. It handles color and monochrome displays, and
|
||
performs whatever byte-swapping and bit-reversal is needed (so
|
||
that the program works even when the server and the client have
|
||
different architectures). It buffers communication to the X
|
||
server for efficiency.</p>
|
||
<p>NOTE: The original source in davidguy.c used only an IP address
|
||
argument (assumed :0.0) and assumed the color of black
|
||
and white.</p>
|
||
<p>The program doesn’t require any user interaction; you can just sit
|
||
back and watch it run. All the action takes place in the root
|
||
window of the display.</p>
|
||
<p>We think the program is interesting for these reasons:</p>
|
||
<ol type="1">
|
||
<li><p>It belongs to a class of programs that programmers make the following
|
||
complaints about: they require a mountain of code to implement even the
|
||
simplest program; and they must be linked with giant libraries of
|
||
hard-to-understand functions. In contrast to these complaints (made by wimps,
|
||
in our humble opinion), our program fits in under 1536 bytes, doesn’t need any
|
||
external functions except for a few system calls, and doesn’t need to include
|
||
any header files.</p></li>
|
||
<li><p>It implements an extremely efficient algorithm for the computation it
|
||
performs. One cool feature of the algorithm (at least as far as this contest is
|
||
concerned) is that its obscurity is fundamentally necessary for its efficiency.
|
||
In other words, even if we took steps to present the algorithm clearly, (we
|
||
haven’t) the relation of the computation performed to the specification of what
|
||
the program was supposed to do would still be hard to understand.</p></li>
|
||
</ol>
|
||
<h3 id="quasi-spoiler-on-internals">Quasi-spoiler on internals:</h3>
|
||
<p>The program plays <a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Conway’s Game of
|
||
Life</a> in the root window’s
|
||
background pixmap. It starts by setting the background to random
|
||
bits, and then plays Life, with one Life cell for each pixel of the
|
||
screen. In the game of Life, a cell survives to the next round if
|
||
2 or 3 of its 8 neighbors are also alive, and a cell is born if
|
||
exactly 3 of its neighbors are alive. Otherwise, a cell dies of
|
||
exposure if it has only 0 or 1 neighbors, and dies of overcrowding
|
||
if it has 4 or more neighbors.</p>
|
||
<p>The algorithm used to compute the next generation is based on the
|
||
observation that a cell’s state in the next generation is a boolean
|
||
function of its current state, and the states of its 8 neighbors
|
||
(i.e., a boolean function from 9 bits to 1 bit). This function can
|
||
be computed by a boolean circuit. In addition, intermediate values
|
||
computed by the circuit can be shared between neighboring cells,
|
||
reducing the number of gates per cell required. These ideas
|
||
have been used before, to compute the next generation through a
|
||
series of <a href="https://en.wikipedia.org/wiki/Bit_blit">bit blits</a>.</p>
|
||
<p>Instead of doing this, we map values in the circuit to bits in registers, so
|
||
that the next generation can be computed efficiently within registers,
|
||
minimizing memory access. As a result, the computation of the next generation
|
||
is performed with about 1.6 instructions per life cell, consisting of .125
|
||
memory accesses, .17 shifts, and 1.3 logic operations. The net result is that
|
||
the time to transfer the bits to the X server, and for the X server to draw them
|
||
on the screen, dominates the time to compute the next generation.</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/
|
||
|
||
-->
|
||
|
||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||
<!-- START: this line starts content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
|
||
|
||
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
|
||
|
||
<h1 id="inventory-for-1991davidguy"><a name="inventory"></a>Inventory for 1991/davidguy</h1>
|
||
<p><a href="#top">Jump to top</a></p>
|
||
<h2 id="primary-files">Primary files</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/davidguy/davidguy.c">davidguy.c</a> - entry source</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/davidguy/Makefile">Makefile</a> - entry Makefile</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/davidguy/davidguy.orig.c">davidguy.orig.c</a> - original source</li>
|
||
<li><a href="1991_davidguy.tar.bz2">1991_davidguy.tar.bz2</a> - download entry</li>
|
||
</ul>
|
||
<h2 id="secondary-files">Secondary files</h2>
|
||
<ul>
|
||
<li><a href="index.html">index.html</a> - this web page</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/davidguy/README.md">README.md</a> - markdown source for index.html</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/davidguy/.entry.json">.entry.json</a> - description of entry in JSON</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/davidguy/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
|
||
<li><a href=".path">.path</a> - directory path from top directory</li>
|
||
</ul>
|
||
|
||
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
|
||
|
||
<!-- END: this line ends content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
|
||
<!-- START: this line starts content from: inc/after-content.default.html -->
|
||
|
||
<!-- END: this line ends content from: inc/after-content.default.html -->
|
||
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
|
||
<!-- START: this line starts content from: inc/end-row.default.html -->
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/end-row.default.html -->
|
||
<!-- START: this line starts content from: inc/footer.default.html -->
|
||
|
||
<!--
|
||
|
||
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">
|
||
<h2><a name="copyright"></a>Copyright and CC BY-SA 4.0 License</h2>
|
||
<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 xmlns:cc="http://creativecommons.org/ns#" ><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="../..//svg/cc.svg"
|
||
alt="cc inside circle symbol">
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../..//svg/by.svg"
|
||
alt="person inside circle symbol">
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../..//svg/sa.svg"
|
||
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%2F1991%2Fdavidguy%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 -->
|