fix topbar to work on mobile devices

The topbar, by way of JavaScript, now works
on mobile devices such as cell phones and
tablets.

Internal links for entries from 1984 thru 2015
have been adjusted.

Ran `make www` to perform the above.

TODO: Fix some color issues on topbar.

TODO: More testing!
This commit is contained in:
Landon Curt Noll committed 2024-04-22 15:05:59 -07:00
1 parent 99cd17401e
commit 97f6da1247
440 files changed
+74125 -6956

No files matched your search

+1 -1
View File
@@ -458,7 +458,7 @@ always evaluate to true.
decoding using the clever expression, `(i & 3) - 3`, which identifies pattern 3
and 7 as longer.
* The file size of [birken.c](birken.c) is a prime number. Deleting the first
* The file size of [birken.c](%%REPO_URL%%/2013/birken/birken.c) is a prime number. Deleting the first
line also produces a prime-sized program. These properties do not qualify the
program as a prime number generator.
+183 -17
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
@@ -462,7 +628,7 @@ always evaluate to true.</p></li>
<li><p>The varying single square emitter pattern lengths are resolved during string
decoding using the clever expression, <code>(i &amp; 3) - 3</code>, which identifies pattern 3
and 7 as longer.</p></li>
<li><p>The file size of <a href="birken.c">birken.c</a> is a prime number. Deleting the first
<li><p>The file size of <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/birken/birken.c">birken.c</a> is a prime number. Deleting the first
line also produces a prime-sized program. These properties do not qualify the
program as a prime number generator.</p></li>
</ul>
+182 -16
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
+1 -1
View File
@@ -105,7 +105,7 @@ this entry win the IOCCC, it will be the first time (to the author's knowledge)
that the IOCCC has been used for peer review/publication of original research.
- OCR in general is a hard problem. Here, we only recognise one possible form
for each character. You can see what the supported character shapes look like by
looking at the examples in [ascii.bmp](ascii.bmp). If you copy the shape of the
looking at the examples in [ascii.bmp](%%REPO_URL%%/2013/cable2/ascii.bmp). If you copy the shape of the
character forms you find in there, recognition accuracy should be very good
(95%+). A more "useful" version would extend the character stroke table to
support multiple different commonly-used forms for each character.
+183 -17
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
@@ -226,7 +392,7 @@ this entry win the IOCCC, it will be the first time (to the author’s knowledge
that the IOCCC has been used for peer review/publication of original research.</li>
<li>OCR in general is a hard problem. Here, we only recognise one possible form
for each character. You can see what the supported character shapes look like by
looking at the examples in <a href="ascii.bmp">ascii.bmp</a>. If you copy the shape of the
looking at the examples in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/cable2/ascii.bmp">ascii.bmp</a>. If you copy the shape of the
character forms you find in there, recognition accuracy should be very good
(95%+). A more “useful” version would extend the character stroke table to
support multiple different commonly-used forms for each character.</li>
+6 -6
View File
@@ -63,7 +63,7 @@ bits). It manages to implement most of the hardware in a 1980's era
IBM-PC using a few hundred fewer bits than the total number of
transistors used to implement the original 8086 CPU.
If you are using macOS, the included [sc-ioccc.terminal](sc-ioccc.terminal)
If you are using macOS, the included [sc-ioccc.terminal](%%REPO_URL%%/2013/cable3/sc-ioccc.terminal)
configuration file will correctly display console applications that use ANSI
graphics.
@@ -163,7 +163,7 @@ This entry has been tested on Windows (compiled with MS Visual Studio 2010 and
supplied is good for Mac OS X, Linux and probably other Unices. I have received
reports that the emulator works on Raspberry Pi/Android/ARM (you will need to
compile with `-fsigned-char`) and iOS. You will need to adjust the
[Makefile](Makefile) if your system lacks `sdl-config` to correctly point to the
[Makefile](%%REPO_URL%%/M2013/cable3/akefile) if your system lacks `sdl-config` to correctly point to the
SDL libraries and header files.
On UNIX-based systems we can get raw keystrokes using `stty`. However Windows
@@ -193,7 +193,7 @@ include to the top of the source:
#include <unistd.h>
```
NOTE: this has been done in [cable3.c](cable3.c).
NOTE: this has been done in [cable3.c](%%REPO_URL%%/2013/cable3/cable3.c).
### Usage
@@ -211,7 +211,7 @@ looks something like:
stty cooked echo
```
See the [cable3.sh](cable3.sh) script.
See the [cable3.sh](%%REPO_URL%%/2013/cable3/cable3.sh) script.
## To use the emulator - floppy mode only
@@ -221,7 +221,7 @@ the `fd.img` provided, which is a FreeDOS boot disk.
Before running the emulator on a Unix-type system, `stty` needs to be used to
put the keyboard into raw mode (and afterwards it needs to be put back to
cooked). So, run the emulator using something like this script (provided as
[cable3.sh](cable3.sh)):
[cable3.sh](%%REPO_URL%%/c2013/cable3/able3.sh)):
``` <!---sh-->
stty cbreak raw -echo min 0
@@ -343,7 +343,7 @@ for the (terminal) text and (SDL) graphics displays.
Like a real PC, the emulator needs a BIOS to do anything useful. Here we use a
custom BIOS, written from scratch specifically for the emulator. Source code for
the BIOS (written in 8086 assembly language) which compiles with the
freely-available NASM x86 assembler is in [bios.asm](bios.asm).
freely-available NASM x86 assembler is in [bios.asm](%%REPO_URL%%/2013/cable3/bios.asm).
The BIOS implements the standard interrupt interfaces for video, disk, timer,
clock and so on, much as a "real" PC BIOS does, and also a small
+188 -22
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
@@ -182,7 +348,7 @@ combinations are left for the discovery of the user.</p>
bits). It manages to implement most of the hardware in a 1980’s era
IBM-PC using a few hundred fewer bits than the total number of
transistors used to implement the original 8086 CPU.</p>
<p>If you are using macOS, the included <a href="sc-ioccc.terminal">sc-ioccc.terminal</a>
<p>If you are using macOS, the included <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/cable3/sc-ioccc.terminal">sc-ioccc.terminal</a>
configuration file will correctly display console applications that use ANSI
graphics.</p>
<p>NOTE: the author remarked that in some systems one might need to <code>#include &lt;unistd.h&gt;</code>. This has been done in the entry but not the alternate version. This
@@ -268,7 +434,7 @@ competition (see above).</li>
supplied is good for Mac OS X, Linux and probably other Unices. I have received
reports that the emulator works on Raspberry Pi/Android/ARM (you will need to
compile with <code>-fsigned-char</code>) and iOS. You will need to adjust the
<a href="Makefile">Makefile</a> if your system lacks <code>sdl-config</code> to correctly point to the
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/M2013/cable3/akefile">Makefile</a> if your system lacks <code>sdl-config</code> to correctly point to the
SDL libraries and header files.</p>
<p>On UNIX-based systems we can get raw keystrokes using <code>stty</code>. However Windows
has no <code>stty</code>. Therefore the Makefile includes a <code>-D</code> option to define a
@@ -286,7 +452,7 @@ offsets) this is not the case, and to run successfully on these systems, you
will need to explicitly declare these functions by adding the appropriate
include to the top of the source:</p>
<pre><code> #include &lt;unistd.h&gt;</code></pre>
<p>NOTE: this has been done in <a href="cable3.c">cable3.c</a>.</p>
<p>NOTE: this has been done in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/cable3/cable3.c">cable3.c</a>.</p>
<h3 id="usage">Usage</h3>
<pre><code> ./cable3 bios-image-file floppy-image-file [harddisk-image-file]</code></pre>
<p>PLEASE NOTE that under Unices the keyboard must be in raw mode for the emulator
@@ -295,14 +461,14 @@ looks something like:</p>
<pre><code> stty cbreak raw -echo min 0
./cable3 bios floppy.img harddisk.img
stty cooked echo</code></pre>
<p>See the <a href="cable3.sh">cable3.sh</a> script.</p>
<p>See the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/cable3/cable3.sh">cable3.sh</a> script.</p>
<h2 id="to-use-the-emulator---floppy-mode-only">To use the emulator - floppy mode only</h2>
<p>The simplest use of the emulator is with a single floppy boot disk image, like
the <code>fd.img</code> provided, which is a FreeDOS boot disk.</p>
<p>Before running the emulator on a Unix-type system, <code>stty</code> needs to be used to
put the keyboard into raw mode (and afterwards it needs to be put back to
cooked). So, run the emulator using something like this script (provided as
<a href="cable3.sh">cable3.sh</a>):</p>
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/c2013/cable3/able3.sh">cable3.sh</a>):</p>
<pre><code> stty cbreak raw -echo min 0
./cable3 bios fd.img
stty cooked echo</code></pre>
@@ -389,7 +555,7 @@ for the (terminal) text and (SDL) graphics displays.</p>
<p>Like a real PC, the emulator needs a BIOS to do anything useful. Here we use a
custom BIOS, written from scratch specifically for the emulator. Source code for
the BIOS (written in 8086 assembly language) which compiles with the
freely-available NASM x86 assembler is in <a href="bios.asm">bios.asm</a>.</p>
freely-available NASM x86 assembler is in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/cable3/bios.asm">bios.asm</a>.</p>
<p>The BIOS implements the standard interrupt interfaces for video, disk, timer,
clock and so on, much as a “real” PC BIOS does, and also a small
timer-controlled video driver to convert video memory formatting into ANSI
+1 -1
View File
@@ -56,7 +56,7 @@ obfuscated way.
Also, why doesn't it crash but instead produces a correct output when called
with one argument or when all arguments are equal?
For extra fun, compile and run [fun.c](fun.c):
For extra fun, compile and run [fun.c](%%REPO_URL%%/2013/dlowe/fun.c):
``` <!---c-->
#include <stdio.h>
+183 -17
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
@@ -175,7 +341,7 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
obfuscated way.</p>
<p>Also, why doesn’t it crash but instead produces a correct output when called
with one argument or when all arguments are equal?</p>
<p>For extra fun, compile and run <a href="fun.c">fun.c</a>:</p>
<p>For extra fun, compile and run <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/dlowe/fun.c">fun.c</a>:</p>
<pre><code> #include &lt;stdio.h&gt;
int main() {
printf(&quot;%d %d %d\n&quot;, (int)(-1.0/0.0), (int)(0.0/0.0), (int)(1.0/0.0));
+3 -3
View File
@@ -64,7 +64,7 @@ This is a tool *for C programmers* to play the [SKI combinator calculus][1],
especially, [Lazy K][2].
This program will shine when it is used as a library. For example,
[hello.lazy](hello.lazy) is a "Hello world" program written in Lazy K.
[hello.lazy](%%REPO_URL%%/2013/endoh1/hello.lazy) is a "Hello world" program written in Lazy K.
``` <!---sh-->
$ lazy hello.lazy
@@ -72,7 +72,7 @@ This program will shine when it is used as a library. For example,
```
where `lazy` is [a reference implementation of Lazy K][3]. At the same time,
[hello.lazy](hello.lazy) is *a valid C program* that uses [endoh1.c](endoh1.c)
[hello.lazy](%%REPO_URL%%/2013/endoh1/hello.lazy) is *a valid C program* that uses [endoh1.c](%%REPO_URL%%/2013/endoh1/endoh1.c)
as a library.
``` <!---sh-->
@@ -162,7 +162,7 @@ The whole program is interpreted by macro expansion.
For example, `S (K I)` is translated to a normal C code, `(s)((k)(i))`, or
simply `s(k(i))`.
This expression returns an abstract syntax tree, and [endoh1.c](endoh1.c)
This expression returns an abstract syntax tree, and [endoh1.c](%%REPO_URL%%/e2013/endoh1/ndoh1.c)
evaluates it.
This program uses a very simple "term rewriting" approach for evaluating SKI
+185 -19
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
@@ -180,11 +346,11 @@ the program itself.</p>
<p>This is a tool <em>for C programmers</em> to play the <a href="http://en.wikipedia.org/wiki/SKI_combinator_calculus">SKI combinator calculus</a>,
especially, <a href="https://tromp.github.io/cl/lazy-k.html">Lazy K</a>.</p>
<p>This program will shine when it is used as a library. For example,
<a href="hello.lazy">hello.lazy</a> is a “Hello world” program written in Lazy K.</p>
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/endoh1/hello.lazy">hello.lazy</a> is a “Hello world” program written in Lazy K.</p>
<pre><code> $ lazy hello.lazy
Hello, world!</code></pre>
<p>where <code>lazy</code> is <a href="https://github.com/irori/lazyk">a reference implementation of Lazy K</a>. At the same time,
<a href="hello.lazy">hello.lazy</a> is <em>a valid C program</em> that uses <a href="endoh1.c">endoh1.c</a>
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/endoh1/hello.lazy">hello.lazy</a> is <em>a valid C program</em> that uses <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/endoh1/endoh1.c">endoh1.c</a>
as a library.</p>
<pre><code> $ gcc -o hello -xc hello.lazy
$ ./hello
@@ -241,7 +407,7 @@ macro, but does work.</p>
<p>The whole program is interpreted by macro expansion.
For example, <code>S (K I)</code> is translated to a normal C code, <code>(s)((k)(i))</code>, or
simply <code>s(k(i))</code>.</p>
<p>This expression returns an abstract syntax tree, and <a href="endoh1.c">endoh1.c</a>
<p>This expression returns an abstract syntax tree, and <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/e2013/endoh1/ndoh1.c">endoh1.c</a>
evaluates it.</p>
<p>This program uses a very simple “term rewriting” approach for evaluating SKI
combinator calculus. The rewriting rules are shown in the shape of the code.</p>
+1 -1
View File
@@ -16,7 +16,7 @@ You'll need to have both [Ruby](https://www.ruby-lang.org) and
checks.
If you do not have both, however, you can still do the below in the [try](#try)
section to enjoy the entry. The [Makefile](Makefile) `check` rule will check if
section to enjoy the entry. The [Makefile](%%REPO_URL%%/2013/endoh2/Makefile) `check` rule will check if
you have both and if either is not found it will report it and tell you where to
download one or both before exiting.
+183 -17
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
@@ -160,7 +326,7 @@ Location: <a href="../../location.html#JP">JP</a> - <em>Japan</em></li>
<a href="https://imagemagick.org/">ImageMagick</a> installed to run all the automated
checks.</p>
<p>If you do not have both, however, you can still do the below in the <a href="#try">try</a>
section to enjoy the entry. The <a href="Makefile">Makefile</a> <code>check</code> rule will check if
section to enjoy the entry. The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/endoh2/Makefile">Makefile</a> <code>check</code> rule will check if
you have both and if either is not found it will report it and tell you where to
download one or both before exiting.</p>
<h2 id="try">Try:</h2>
+1 -1
View File
@@ -43,7 +43,7 @@ The script will check for SoX first and next `padsp` from `PulseAudio` and
finally if neither are found if you have `ruby(1)` installed it'll use the
included ruby script to convert it to a WAV file for you to play.
If no args are passed to the script it will play [twinkle.abc](twinkle.abc) and
If no args are passed to the script it will play [twinkle.abc](%%REPO_URL%%/2013/endoh3/twinkle.abc) and
the string `ABC`. Otherwise while there's a remaining arg if it's a file it will
run the program on the file. If it's not a file it'll run it as a string.
+183 -17
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
@@ -174,7 +340,7 @@ system up for this or if you want to verify that everything is oky.</p>
<p>The script will check for SoX first and next <code>padsp</code> from <code>PulseAudio</code> and
finally if neither are found if you have <code>ruby(1)</code> installed it’ll use the
included ruby script to convert it to a WAV file for you to play.</p>
<p>If no args are passed to the script it will play <a href="twinkle.abc">twinkle.abc</a> and
<p>If no args are passed to the script it will play <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/endoh3/twinkle.abc">twinkle.abc</a> and
the string <code>ABC</code>. Otherwise while there’s a remaining arg if it’s a file it will
run the program on the file. If it’s not a file it’ll run it as a string.</p>
<p>The <code>*.abc</code> files are provided as music samples.</p>
+3 -3
View File
@@ -12,7 +12,7 @@ below) you can do so with the `SIZE` variable. For instance you can do:
make clobber SIZE=50,50 all
```
but you can also do this directly with the [endoh4.sh](endoh4.sh) script as
but you can also do this directly with the [endoh4.sh](%%REPO_URL%%/2013/endoh4/endoh4.sh) script as
described below.
@@ -36,7 +36,7 @@ For more detailed information see [2013 endoh4 bugs](../../bugs.html#2013_endoh4
The second form is preferable as it will temporarily make the cursor invisible
as recommended by the author. If no file is specified in the `./endoh4.sh` command
line it will feed to the program [endoh4.c](endoh4.c).
line it will feed to the program [endoh4.c](%%REPO_URL%%/2013/endoh4/endoh4.c).
## Try:
@@ -70,7 +70,7 @@ If you wish to change the size to `50,50` without passing any arg:
SIZE=50,50 ./endoh4.sh
```
Not specifying a file feeds [endoh4.c](endoh4.c) to the program.
Not specifying a file feeds [endoh4.c](%%REPO_URL%%/2013/endoh4/endoh4.c) to the program.
## Judges' remarks:
+185 -19
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
@@ -157,7 +323,7 @@ Location: <a href="../../location.html#JP">JP</a> - <em>Japan</em></li>
<p>If you wish to change the size (see the <a href="#authors-remarks">Author’s remarks</a>
below) you can do so with the <code>SIZE</code> variable. For instance you can do:</p>
<pre><code> make clobber SIZE=50,50 all</code></pre>
<p>but you can also do this directly with the <a href="endoh4.sh">endoh4.sh</a> script as
<p>but you can also do this directly with the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/endoh4/endoh4.sh">endoh4.sh</a> script as
described below.</p>
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
<p>The current status of this entry is:</p>
@@ -168,7 +334,7 @@ described below.</p>
./endoh4.sh file</code></pre>
<p>The second form is preferable as it will temporarily make the cursor invisible
as recommended by the author. If no file is specified in the <code>./endoh4.sh</code> command
line it will feed to the program <a href="endoh4.c">endoh4.c</a>.</p>
line it will feed to the program <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/endoh4/endoh4.c">endoh4.c</a>.</p>
<h2 id="try">Try:</h2>
<pre><code> ./endoh4.sh cube.txt</code></pre>
<p>Hit ctrl-c to end the program.</p>
@@ -180,7 +346,7 @@ line it will feed to the program <a href="endoh4.c">endoh4.c</a>.</p>
<p>Hit ctrl-c/intr to go to the next file.</p>
<p>If you wish to change the size to <code>50,50</code> without passing any arg:</p>
<pre><code> SIZE=50,50 ./endoh4.sh</code></pre>
<p>Not specifying a file feeds <a href="endoh4.c">endoh4.c</a> to the program.</p>
<p>Not specifying a file feeds <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/endoh4/endoh4.c">endoh4.c</a> to the program.</p>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>This program is formatted as the net for a tetrahedron (hint: try feeding the
program it’s own source code like <code>./endoh4.sh</code>). When it runs there is an
+15 -15
View File
@@ -65,7 +65,7 @@ program.
This program will loop infinitely while progressively refining a
[raytraced](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)) image.
NOTE: the author refers to [a.c](a.c), placed in a gzipped file `a.c.gz`. We do not
NOTE: the author refers to [a.c](%%REPO_URL%%/2013/hou/a.c), placed in a gzipped file `a.c.gz`. We do not
include it but it can be generated like:
``` <!---sh-->
@@ -134,7 +134,7 @@ don't have to worry about conflicts.
### Abuse of the rules
* [hou.c](hou.c) uses compression to get around the size limit. The compression
* [hou.c](%%REPO_URL%%/2013/hou/hou.c) uses compression to get around the size limit. The compression
fully complies with the rules and the guidelines (at least the portion that
shows up in `grep` "size limit"). Please see the [Self-imposed
restrictions](self-imposed-restrictions) section below for more details.
@@ -145,18 +145,18 @@ restrictions](self-imposed-restrictions) section below for more details.
* The building process does not involve any OS tool beyond `cc(1)` and
`make(1)`. No `gzip(1)` compression! `a.c.gz` doesn't fit in 2053 bytes, anyway.
* Neither [hou.c](hou.c) nor [a.c](a.c) (the *real* decompressed source) uses
* Neither [hou.c](%%REPO_URL%%/2013/hou/hou.c) nor [a.c](%%REPO_URL%%/2013/hou/a.c) (the *real* decompressed source) uses
`#define` (or `cc -D`) at all.
* The source code is not required at runtime.
* [a.c](a.c) does not drop optional features to reduce size. There are pure
* [a.c](%%REPO_URL%%/2013/hou/a.c) does not drop optional features to reduce size. There are pure
optimization code that can be dropped without affecting the converged output
(only affecting the ray tracing speed / convergence rate). All files are
properly `fopen()`ed with `"rb"` / `"wb"` for Windows compatibility. The PPM
header has a comment line for non-standard-compliant viewers (specifically, my
old HDRShop 1.0). And there is a nice text message saying "please wait...".
Despite the messy look, [a.c](a.c) and [hou.c](hou.c) compile warning-free
([hou.c](hou.c) even wastes 18 bytes on `#include<stdio.h>` just for `putchar(3)`).
[a.c](a.c) compiles mostly clean in the C99/ANSI modes of clang and gcc (with:
Despite the messy look, [a.c](%%REPO_URL%%/2013/hou/a.c) and [hou.c](%%REPO_URL%%/2013/hou/hou.c) compile warning-free
([hou.c](%%REPO_URL%%/2013/hou/hou.c) even wastes 18 bytes on `#include<stdio.h>` just for `putchar(3)`).
[a.c](%%REPO_URL%%/2013/hou/a.c) compiles mostly clean in the C99/ANSI modes of clang and gcc (with:
```
-Wall --pedantic
@@ -178,15 +178,15 @@ internal states.
the code, but they leave the text clear in the *result*. This entry takes it
further and obfuscates the output image as well. Can you find the text in the
image? Hint: look up.
* [a.c](a.c) leaves all shaders in plain text, but the plain text shader code can't
* [a.c](%%REPO_URL%%/2013/hou/a.c) leaves all shaders in plain text, but the plain text shader code can't
be taken for its face value; the arithmetic rules subtly diverge from our common
sense.
* [a.c](a.c) is less portable than [hou.c](hou.c) itself. [hou.c](hou.c) only depends
* [a.c](%%REPO_URL%%/2013/hou/a.c) is less portable than [hou.c](%%REPO_URL%%/2013/hou/hou.c) itself. [hou.c](%%REPO_URL%%/2013/hou/hou.c) only depends
on ASCII and should run just fine on 16-bit, small memory, or
floating-point-incapable machines. [a.c](a.c), while still reasonably portable, is
floating-point-incapable machines. [a.c](%%REPO_URL%%/2013/hou/a.c), while still reasonably portable, is
quite memory consuming, requires IEEE754-compliant `double`, and assumes `int` to be
32-bits.
* Though technically endian-dependent, [a.c](a.c) remains portable providing that one
* Though technically endian-dependent, [a.c](%%REPO_URL%%/2013/hou/a.c) remains portable providing that one
doesn't copy saved sessions across different endianness.
@@ -216,7 +216,7 @@ corresponds to the final image, which can then be produced as a simple per-pixel
histogram of all generated paths. The robustness comes from a state mutation
strategy that actively tries to explore the neighborhood of high energy peaks
(e.g. paths that happen to hit the light source in
[otherroom.scene](otherroom.scene)). In addition, a rudimentary form of lens
[otherroom.scene](%%REPO_URL%%/2013/hou/otherroom.scene)). In addition, a rudimentary form of lens
path stratification is added to balance the attention each pixel receives. The
Metropolis-Hasting process completely avoids the tell-tale pixel sampling loop
required in most other image generation methods.
@@ -237,11 +237,11 @@ necessarily map to the same set of paths in `PSSMLT`. After all,
Metropolis-Hasting used an even worse PRNG in their 1953 paper.
The `PPM` compressor uses statically weighted fixed order contexts with an
arithmetic encoder tweaked for [iocccsize.c](../iocccsize.c). The encoder emits octet-space pairs
arithmetic encoder tweaked for [iocccsize.c](%%REPO_URL%%/2013/iocccsize.c). The encoder emits octet-space pairs
where each octet encodes ~6.5 bits of information and each space encodes 2 bits
(thanks to the generous definition of "space" in [iocccsize.c](../iocccsize.c)). The compressor
(thanks to the generous definition of "space" in [iocccsize.c](%%REPO_URL%%/2013/iocccsize.c)). The compressor
actively shuffles the variable names around until the compressed string happens
to contain enough `{}; `s to pass the final [iocccsize.c](../iocccsize.c) test.
to contain enough `{}; `s to pass the final [iocccsize.c](%%REPO_URL%%/2013/iocccsize.c) test.
There are a few other tweaks:
* The `PPM` model uses mostly whitespace characters for weights.
+183 -17
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../../../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
@@ -312,7 +478,7 @@ the camera, and shoot a ray from the camera point to the image plane point, see:
width=935 height=632></p>
<p>.. and the ray direction vector (image plane point - camera point) is <code>(X,Y,Z)</code>. For the
coordinate space, volume 0 is scaled up 64x here to <code>(0,0,0)-(4096,4096,4096)</code>.</p>
<p>For a basic camera shader example, check <a href="../otherroom.scene">otherroom.scene</a>.</p>
<p>For a basic camera shader example, check <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/otherroom.scene">otherroom.scene</a>.</p>
<p>If any ray goes out of volume 0, the renderer crashes. Make sure it doesn’t
happen. Wall up everything.</p>
<p>Variables <code>ABCDEF</code> control the color returned from the ray. They will be
+1 -1
View File
@@ -247,7 +247,7 @@ the camera, and shoot a ray from the camera point to the image plane point, see:
.. and the ray direction vector (image plane point - camera point) is `(X,Y,Z)`. For the
coordinate space, volume 0 is scaled up 64x here to `(0,0,0)-(4096,4096,4096)`.
For a basic camera shader example, check [otherroom.scene](../otherroom.scene).
For a basic camera shader example, check [otherroom.scene](%%REPO_URL%%/2013/hou/otherroom.scene).
If any ray goes out of volume 0, the renderer crashes. Make sure it doesn't
happen. Wall up everything.
+197 -31
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
@@ -188,7 +354,7 @@ really just a decompressor to generate the real source code of the
program.</p>
<p>This program will loop infinitely while progressively refining a
<a href="https://en.wikipedia.org/wiki/Ray_tracing_(graphics)">raytraced</a> image.</p>
<p>NOTE: the author refers to <a href="a.c">a.c</a>, placed in a gzipped file <code>a.c.gz</code>. We do not
<p>NOTE: the author refers to <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/a.c">a.c</a>, placed in a gzipped file <code>a.c.gz</code>. We do not
include it but it can be generated like:</p>
<pre><code> cc -Wall hou.c -o hou -lm
./hou &gt; a.c</code></pre>
@@ -241,7 +407,7 @@ don’t have to worry about conflicts.</li>
</ul>
<h3 id="abuse-of-the-rules">Abuse of the rules</h3>
<ul>
<li><a href="hou.c">hou.c</a> uses compression to get around the size limit. The compression
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/hou.c">hou.c</a> uses compression to get around the size limit. The compression
fully complies with the rules and the guidelines (at least the portion that
shows up in <code>grep</code> “size limit”). Please see the <a href="self-imposed-restrictions">Self-imposed
restrictions</a> section below for more details.</li>
@@ -251,18 +417,18 @@ restrictions</a> section below for more details.</li>
<ul>
<li>The building process does not involve any OS tool beyond <code>cc(1)</code> and
<code>make(1)</code>. No <code>gzip(1)</code> compression! <code>a.c.gz</code> doesn’t fit in 2053 bytes, anyway.</li>
<li>Neither <a href="hou.c">hou.c</a> nor <a href="a.c">a.c</a> (the <em>real</em> decompressed source) uses
<li>Neither <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/hou.c">hou.c</a> nor <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/a.c">a.c</a> (the <em>real</em> decompressed source) uses
<code>#define</code> (or <code>cc -D</code>) at all.</li>
<li>The source code is not required at runtime.</li>
<li><a href="a.c">a.c</a> does not drop optional features to reduce size. There are pure
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/a.c">a.c</a> does not drop optional features to reduce size. There are pure
optimization code that can be dropped without affecting the converged output
(only affecting the ray tracing speed / convergence rate). All files are
properly <code>fopen()</code>ed with <code>"rb"</code> / <code>"wb"</code> for Windows compatibility. The PPM
header has a comment line for non-standard-compliant viewers (specifically, my
old HDRShop 1.0). And there is a nice text message saying “please wait…”.
Despite the messy look, <a href="a.c">a.c</a> and <a href="hou.c">hou.c</a> compile warning-free
(<a href="hou.c">hou.c</a> even wastes 18 bytes on <code>#include&lt;stdio.h&gt;</code> just for <code>putchar(3)</code>).
<a href="a.c">a.c</a> compiles mostly clean in the C99/ANSI modes of clang and gcc (with:</li>
Despite the messy look, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/a.c">a.c</a> and <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/hou.c">hou.c</a> compile warning-free
(<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/hou.c">hou.c</a> even wastes 18 bytes on <code>#include&lt;stdio.h&gt;</code> just for <code>putchar(3)</code>).
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/a.c">a.c</a> compiles mostly clean in the C99/ANSI modes of clang and gcc (with:</li>
</ul>
<pre><code>-Wall --pedantic</code></pre>
<p>The only warning generated is a pedantic one: <code>"string constant too long"</code>.</p>
@@ -278,15 +444,15 @@ internal states.</li>
the code, but they leave the text clear in the <em>result</em>. This entry takes it
further and obfuscates the output image as well. Can you find the text in the
image? Hint: look up.</li>
<li><a href="a.c">a.c</a> leaves all shaders in plain text, but the plain text shader code can’t
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/a.c">a.c</a> leaves all shaders in plain text, but the plain text shader code can’t
be taken for its face value; the arithmetic rules subtly diverge from our common
sense.</li>
<li><a href="a.c">a.c</a> is less portable than <a href="hou.c">hou.c</a> itself. <a href="hou.c">hou.c</a> only depends
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/a.c">a.c</a> is less portable than <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/hou.c">hou.c</a> itself. <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/hou.c">hou.c</a> only depends
on ASCII and should run just fine on 16-bit, small memory, or
floating-point-incapable machines. <a href="a.c">a.c</a>, while still reasonably portable, is
floating-point-incapable machines. <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/a.c">a.c</a>, while still reasonably portable, is
quite memory consuming, requires IEEE754-compliant <code>double</code>, and assumes <code>int</code> to be
32-bits.</li>
<li>Though technically endian-dependent, <a href="a.c">a.c</a> remains portable providing that one
<li>Though technically endian-dependent, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/a.c">a.c</a> remains portable providing that one
doesn’t copy saved sessions across different endianness.</li>
</ul>
<h3 id="spoiler">Spoiler</h3>
@@ -310,7 +476,7 @@ corresponds to the final image, which can then be produced as a simple per-pixel
histogram of all generated paths. The robustness comes from a state mutation
strategy that actively tries to explore the neighborhood of high energy peaks
(e.g. paths that happen to hit the light source in
<a href="otherroom.scene">otherroom.scene</a>). In addition, a rudimentary form of lens
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/hou/otherroom.scene">otherroom.scene</a>). In addition, a rudimentary form of lens
path stratification is added to balance the attention each pixel receives. The
Metropolis-Hasting process completely avoids the tell-tale pixel sampling loop
required in most other image generation methods.</p>
@@ -329,11 +495,11 @@ session would run through its short period many times, but that doesn’t
necessarily map to the same set of paths in <code>PSSMLT</code>. After all,
Metropolis-Hasting used an even worse PRNG in their 1953 paper.</p>
<p>The <code>PPM</code> compressor uses statically weighted fixed order contexts with an
arithmetic encoder tweaked for <a href="../iocccsize.c">iocccsize.c</a>. The encoder emits octet-space pairs
arithmetic encoder tweaked for <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/iocccsize.c">iocccsize.c</a>. The encoder emits octet-space pairs
where each octet encodes ~6.5 bits of information and each space encodes 2 bits
(thanks to the generous definition of “space” in <a href="../iocccsize.c">iocccsize.c</a>). The compressor
(thanks to the generous definition of “space” in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/iocccsize.c">iocccsize.c</a>). The compressor
actively shuffles the variable names around until the compressed string happens
to contain enough <code>{};</code>s to pass the final <a href="../iocccsize.c">iocccsize.c</a> test.
to contain enough <code>{};</code>s to pass the final <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/iocccsize.c">iocccsize.c</a> test.
There are a few other tweaks:</p>
<ul>
<li><p>The <code>PPM</code> model uses mostly whitespace characters for weights.</p></li>
+182 -16
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
+2 -2
View File
@@ -110,7 +110,7 @@ them.
### User-modifiable Features
The code can be user-modified simply by changing the build command line.
The following symbols are defined in the [Makefile](Makefile):
The following symbols are defined in the [Makefile](%%REPO_URL%%/2013/millsMakefile):
* `-DLT=x1,y1,z1,x2,y2,z2,...` defines the coordinates of the lights in the
scene. It should be a comma-separated list of coordinates `(x, y, z)`, three per
@@ -129,7 +129,7 @@ The original program bound the server to `INADDR_ANY` to allow everyone to
experience the server's output. The Judges suggested that I instead restrict
the bind to `INADDR_LOOPBACK` to reduce security alarms. As a compliant veteran
of innumerable post-ship late feature additions, I have modified the
[Makefile](Makefile) to inject the new code without destroying the beautiful
[Makefile](%%REPO_URL%%/2013/millsMakefile) to inject the new code without destroying the beautiful
spherical symmetry of the source code. In addition, I have altered the word
`sin_port` to the more family-friendly version `win_port` (via
`-Dwin_port="sin_addr.s_addr=htonl(2130706433),R.sin_port"`) to protect against
+184 -18
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
@@ -216,7 +382,7 @@ doesn’t count whitespace in strings differently than whitespace outside of
them.</p>
<h3 id="user-modifiable-features">User-modifiable Features</h3>
<p>The code can be user-modified simply by changing the build command line.
The following symbols are defined in the <a href="Makefile">Makefile</a>:</p>
The following symbols are defined in the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/millsMakefile">Makefile</a>:</p>
<ul>
<li><p><code>-DLT=x1,y1,z1,x2,y2,z2,...</code> defines the coordinates of the lights in the
scene. It should be a comma-separated list of coordinates <code>(x, y, z)</code>, three per
@@ -231,7 +397,7 @@ The eye is looking at the origin <code>(0, 0, 0)</code>.</p></li>
experience the server’s output. The Judges suggested that I instead restrict
the bind to <code>INADDR_LOOPBACK</code> to reduce security alarms. As a compliant veteran
of innumerable post-ship late feature additions, I have modified the
<a href="Makefile">Makefile</a> to inject the new code without destroying the beautiful
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/millsMakefile">Makefile</a> to inject the new code without destroying the beautiful
spherical symmetry of the source code. In addition, I have altered the word
<code>sin_port</code> to the more family-friendly version <code>win_port</code> (via
<code>-Dwin_port="sin_addr.s_addr=htonl(2130706433),R.sin_port"</code>) to protect against
+4 -4
View File
@@ -107,7 +107,7 @@ If `-` is specified as a file name, `horizontal_cat` will read from `stdin`.
Unlike `cat`, `horizontal_cat` loads all input to memory first. Thus you
can specify `-` multiple times to get `stdin` multiplied horizontally. For
example, if you have `seq(1)` in your shell, you can add line numbers to both
sides of [misaka.c](misaka.c) like this:
sides of [misaka.c](%%REPO_URL%%/2013/misaka/misaka.c) like this:
``` <!---sh-->
seq -f ' %.0f ' 45 | ./horizontal_cat - misaka.c -
@@ -144,7 +144,7 @@ enabled by concatenating the source code horizontally:
After `horizontal_cat` and `vertical_cat`, I thought, maybe all I really wanted
was just more [cats](https://rationalwiki.org/wiki/Fun:Cat). So I implemented
one more mode, this one is enabled by concatenating [misaka.c](misaka.c)
one more mode, this one is enabled by concatenating [misaka.c](%%REPO_URL%%/2013/misaka/misaka.c)
vertically:
``` <!---sh-->
@@ -187,7 +187,7 @@ triangle like the following will not have horizontally expanded output:
gcc misaka9.c -o same_as_long_cat
```
Finally, if you lost track of how many [misaka.c](misaka.c) you have stacked
Finally, if you lost track of how many [misaka.c](%%REPO_URL%%/2013/misaka/misaka.c) you have stacked
together, you can feed the source to a
[brainfuck](https://en.wikipedia.org/wiki/Brainfuck) interpreter to get an
overview of how the programs are stacked. Example:
@@ -261,7 +261,7 @@ does not output any irrelevant other warnings (verified on 4.6.3).
Extra files included in my submission are informational only, they are not
needed for the program to work.
* [bf.pl](bf.pl) - a perl brainfuck interpreter, in case you don't have one
* [bf.pl](%%REPO_URL%%/2013/misaka/bf.pl) - a perl brainfuck interpreter, in case you don't have one
handy.
* [spoiler.html](spoiler.html) - making of this program.
+186 -20
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
@@ -213,7 +379,7 @@ original text alignments are preserved.</p>
Unlike <code>cat</code>, <code>horizontal_cat</code> loads all input to memory first. Thus you
can specify <code>-</code> multiple times to get <code>stdin</code> multiplied horizontally. For
example, if you have <code>seq(1)</code> in your shell, you can add line numbers to both
sides of <a href="misaka.c">misaka.c</a> like this:</p>
sides of <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/misaka/misaka.c">misaka.c</a> like this:</p>
<pre><code> seq -f &#39; %.0f &#39; 45 | ./horizontal_cat - misaka.c -</code></pre>
<h3 id="vertical-cat">Vertical cat</h3>
<p>Because <code>horizontal_cat</code> must know the maximum width of all files before
@@ -233,7 +399,7 @@ enabled by concatenating the source code horizontally:</p>
<h3 id="long-cat">Long cat</h3>
<p>After <code>horizontal_cat</code> and <code>vertical_cat</code>, I thought, maybe all I really wanted
was just more <a href="https://rationalwiki.org/wiki/Fun:Cat">cats</a>. So I implemented
one more mode, this one is enabled by concatenating <a href="misaka.c">misaka.c</a>
one more mode, this one is enabled by concatenating <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/misaka/misaka.c">misaka.c</a>
vertically:</p>
<pre><code> ./vertical_cat misaka.c misaka.c &gt; misaka3.c
gcc misaka3.c -o long_cat
@@ -260,7 +426,7 @@ by concatenating files horizontally:</p>
triangle like the following will not have horizontally expanded output:</p>
<pre><code> ./horizontal_cat misaka.c misaka.c | ./vertical_cat misaka.c - &gt; misaka9.c
gcc misaka9.c -o same_as_long_cat</code></pre>
<p>Finally, if you lost track of how many <a href="misaka.c">misaka.c</a> you have stacked
<p>Finally, if you lost track of how many <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/misaka/misaka.c">misaka.c</a> you have stacked
together, you can feed the source to a
<a href="https://en.wikipedia.org/wiki/Brainfuck">brainfuck</a> interpreter to get an
overview of how the programs are stacked. Example:</p>
@@ -311,7 +477,7 @@ does not output any irrelevant other warnings (verified on 4.6.3).</p>
<p>Extra files included in my submission are informational only, they are not
needed for the program to work.</p>
<ul>
<li><a href="bf.pl">bf.pl</a> - a perl brainfuck interpreter, in case you don’t have one
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/misaka/bf.pl">bf.pl</a> - a perl brainfuck interpreter, in case you don’t have one
handy.</li>
<li><a href="spoiler.html">spoiler.html</a> - making of this program.</li>
</ul>
+182 -16
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
+182 -16
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
+182 -16
View File
@@ -51,6 +51,8 @@
IOCCC
</div>
<div class="mobile-header-button-label">Click This</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
@@ -58,10 +60,10 @@
</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 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>
@@ -71,11 +73,11 @@
</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 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>
@@ -85,11 +87,11 @@
</span>
<div class="sub-item">
<div class="outfit-font"><a href="../../bugs.html">Bugs &amp; (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 class="outfit-font"><a href="./bugs.html">Bugs &amp; (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>
@@ -99,15 +101,179 @@
</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 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 class="header-mobile-menu">
<button id="header-open-menu-button" class="topbar-mobile-menu">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M4 6h16M4 12h16M4 18h16"
></path>
</svg>
</button>
<button id="header-close-menu-button" class="hide-content">
<svg
class="mobile-menu-icon"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M6 18L18 6M6 6l12 12"
></path>
</svg>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Home
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./index.html">
IOCCC Home
</a>
<a class="mobile-submenu-item" href="./years.html">
Winning Entries
</a>
<a class="mobile-submenu-item" href="./authors.html">
People who have won
</a>
<a class="mobile-submenu-item" href="./location.html">
Location of authors
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
News
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./news.html">
IOCCC News
</a>
<a class="mobile-submenu-item" href="./status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="./next/index.html">
Rules and Guidelines
</a>
<a class="mobile-submenu-item" href="./faq.html#submit">
How to enter the IOCCC
</a>
<a class="mobile-submenu-item" href="./faq.html">
FAQ
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Bugs
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./bugs.html">
Bugs &amp; (mis)features
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_an_entry">
Fixing IOCCC entries
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_web_site">
Fixing the web site
</a>
<a class="mobile-submenu-item" href="./faq.html#fix_author">
Fixing author info
</a>
<a class="mobile-submenu-item" href="./thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Judges
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="./judges.html">
The IOCCC Judges
</a>
<a class="mobile-submenu-item" href="./contact.html">
Contacting the IOCCC
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->