The navigation bar for a winning entry now has a "_Original C_" link
(between the ✅ and the Inventory on the right hand side) so that one
may easily view the original C code that was submitted for IOCCC judging.
Ran `make www timestamp` to perform the above.
807 lines
34 KiB
HTML
807 lines
34 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||
<!-- START: two lines up starts content from: inc/top.default.html -->
|
||
|
||
<!-- END: this line ends content from: inc/top.default.html -->
|
||
<!-- START: this line starts content from: inc/head.default.html -->
|
||
|
||
<head>
|
||
<link rel="stylesheet" href="../../ioccc.css">
|
||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap" rel="stylesheet">
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||
<title>2012/endoh1 - Most complex ASCII fluid - Honorable mention</title>
|
||
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
|
||
<meta name="description" content="2012 IOCCC entry endoh1 - Most complex ASCII fluid - Honorable mention">
|
||
<meta name="keywords" content="IOCCC, 2012, IOCCC 2012, IOCCC entry, endoh1, Most complex ASCII fluid - Honorable mention">
|
||
</head>
|
||
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
|
||
<!-- END: this line ends content from: inc/head.default.html -->
|
||
|
||
<!-- -->
|
||
<!-- This web page was formed via the tool: bin/readme2index.sh -->
|
||
<!-- The content of main section of this web page came from: 2012/endoh1/README.md -->
|
||
<!-- -->
|
||
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2012/endoh1/README.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2012/endoh1/README.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2012/endoh1/README.md !!! -->
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
|
||
<!-- Markdown content was converted into HTML via the tool: bin/md2html.sh -->
|
||
|
||
<!-- START: this line starts content from: inc/body.default.html -->
|
||
|
||
<body>
|
||
|
||
<!-- END: this line ends content from: inc/body.default.html -->
|
||
<!-- START: this line starts content from: inc/topbar.default.html -->
|
||
|
||
<div class="theader">
|
||
<nav class="topbar">
|
||
<div class="container">
|
||
<div class="logo">
|
||
<a href="../../index.html" class="logo-link">
|
||
IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="topbar-items">
|
||
<div class="item">
|
||
<span class="item-header">
|
||
Entries
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../years.html" class="sub-item-link">
|
||
Winning entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../authors.html" class="sub-item-link">
|
||
Winning authors
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../location.html" class="sub-item-link">
|
||
Location of authors
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../bugs.html" class="sub-item-link">
|
||
Bugs and (mis)features
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#fix_an_entry" class="sub-item-link">
|
||
Fixing entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#fix_author" class="sub-item-link">
|
||
Updating author info
|
||
</a>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
Status
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../news.html" class="sub-item-link">
|
||
News
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../status.html" class="sub-item-link">
|
||
Contest status
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../next/rules.html" class="sub-item-link">
|
||
IOCCC rules
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../next/guidelines.html" class="sub-item-link">
|
||
IOCCC guidelines
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../markdown.html" class="sub-item-link">
|
||
Markdown guidelines
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../SECURITY.html" class="sub-item-link">
|
||
Security policy
|
||
</a>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
FAQ
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html" class="sub-item-link">
|
||
Frequently asked questions
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../quick-start.html#enter" class="sub-item-link">
|
||
Enter the IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#compiling" class="sub-item-link">
|
||
Compiling entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#running_entries" class="sub-item-link">
|
||
Running entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#help" class="sub-item-link">
|
||
How to help
|
||
</a>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
About
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../index.html" class="sub-item-link">
|
||
Home page
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../social.html" class="sub-item-link">
|
||
IOCCC social media
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../about.html" class="sub-item-link">
|
||
About the IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../judges.html" class="sub-item-link">
|
||
The judges
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../thanks-for-help.html" class="sub-item-link">
|
||
Thanks for the help
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../contact.html" class="sub-item-link">
|
||
Contact us
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<div class="header-mobile-menu">
|
||
<noscript>
|
||
<a href="../../nojs-menu.html" class="topbar-js-label">
|
||
Please Enable JavaScript
|
||
</a>
|
||
</noscript>
|
||
|
||
<button id="header-open-menu-button" class="topbar-mobile-menu">
|
||
<img
|
||
src="../../png/hamburger-icon-open.png"
|
||
alt="hamburger style menu icon - open state"
|
||
width=48
|
||
height=48>
|
||
</button>
|
||
|
||
<button id="header-close-menu-button" class="hide-content">
|
||
<img
|
||
src="../../png/hamburger-icon-closed.png"
|
||
alt="hamburger style menu icon - closed state"
|
||
width=48
|
||
height=48>
|
||
</button>
|
||
|
||
<div id="mobile-menu-panel" class="hide-content">
|
||
<div class="mobile-menu-container">
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
<div class="mobile-menu-item">
|
||
Entries
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../../years.html">
|
||
Winning entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../authors.html">
|
||
Winning authors
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../location.html">
|
||
Location of authors
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../bugs.html">
|
||
Bugs and (mis)features
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#fix_an_entry">
|
||
Fixing entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#fix_author">
|
||
Updating author info
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../thanks-for-help.html">
|
||
Thanks for the help
|
||
</a>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
|
||
<div class="mobile-menu-item">
|
||
Status
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../../news.html">
|
||
News
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../status.html">
|
||
Contest status
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../next/rules.html">
|
||
IOCCC rules
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../next/guidelines.html">
|
||
IOCCC guidelines
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../markdown.html">
|
||
Markdown guidelines
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../SECURITY.html">
|
||
Security policy
|
||
</a>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
<div class="mobile-menu-item">
|
||
FAQ
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html">
|
||
Frequently asked questions
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../quick-start.html#enter">
|
||
Enter the IOCCC
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#compiling">
|
||
Compiling entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#running_entries">
|
||
Running entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#help">
|
||
How to help
|
||
</a>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
<div class="mobile-menu-item">
|
||
About
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../../index.html">
|
||
Home page
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../social.html">
|
||
IOCCC social media
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../about.html">
|
||
About the IOCCC
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../judges.html">
|
||
The judges
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../contact.html">
|
||
Contact us
|
||
</a>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<script>
|
||
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
|
||
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
|
||
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
|
||
|
||
headerOpenMenuButton.addEventListener("click", () => {
|
||
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
|
||
headerOpenMenuButton.classList.add("hide-content");
|
||
|
||
headerCloseMenuButton.classList.remove("hide-content");
|
||
headerCloseMenuButton.classList.add("topbar-mobile-menu");
|
||
|
||
mobileMenuPanel.classList.remove("hide-content");
|
||
mobileMenuPanel.classList.add("topbar-mobile-panel");
|
||
});
|
||
|
||
headerCloseMenuButton.addEventListener("click", () => {
|
||
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
|
||
headerCloseMenuButton.classList.add("hide-content");
|
||
|
||
mobileMenuPanel.classList.add("hide-content");
|
||
mobileMenuPanel.classList.remove("topbar-mobile-panel");
|
||
|
||
headerOpenMenuButton.classList.add("topbar-mobile-menu");
|
||
headerOpenMenuButton.classList.remove("hide-content");
|
||
});
|
||
</script>
|
||
|
||
<!-- END: this line ends content from: inc/topbar.default.html -->
|
||
<!-- START: this line starts content from: inc/header.default.html -->
|
||
|
||
<div class="header">
|
||
<a href="../../2011/zucker/index.html">
|
||
<img src="../../png/ioccc.png"
|
||
alt="IOCCC image by Matt Zucker"
|
||
width=300
|
||
height=110>
|
||
</a>
|
||
<h1>The International Obfuscated C Code Contest</h1>
|
||
<h2>2012/endoh1 - Most complex ASCII fluid - Honorable mention</h2>
|
||
<h3>ASCII fluid dynamics</h3>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/header.default.html -->
|
||
<!-- START: this line starts content from: inc/navbar.mid.html -->
|
||
|
||
<div class="navbar">
|
||
<a class="Left" href="../dlowe/index.html">← 2012/dlowe</a>
|
||
<a class="Left" href="../index.html">↑ 2012 ↑</a>
|
||
<a class="Left" href="../endoh2/index.html">2012/endoh2 →</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/endoh1.c">C code</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/Makefile">Makefile</a>
|
||
<a class="Right" href="#inventory">Inventory</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/endoh1.orig.c">Original C</a>
|
||
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.ioccc.org%2F2012%2Fendoh1%2Findex.html">✓</a>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/navbar.mid.html -->
|
||
<!-- START: this line starts content from: inc/before-content.default.html -->
|
||
|
||
<div class="content" id="content">
|
||
|
||
<!-- END: this line ends content from: inc/before-content.default.html -->
|
||
<!-- START: this line starts content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
|
||
|
||
<!-- START: this line starts content generated by: bin/output-index-author.sh -->
|
||
|
||
<h2 id="author">Author:</h2>
|
||
<ul>
|
||
<li>Name: <a href="../../authors.html#Yusuke_Endoh">Yusuke Endoh</a><br>
|
||
Location: <a href="../../location.html#JP">JP</a> - <em>Japan</em></li>
|
||
</ul>
|
||
|
||
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
|
||
|
||
<!-- END: this line ends content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
|
||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||
|
||
<!-- BEFORE: 1st line of markdown file: 2012/endoh1/README.md -->
|
||
<h2 id="to-use">To use:</h2>
|
||
<pre><code> make</code></pre>
|
||
<p>There are two alt versions that let you control the compile time variables that
|
||
control the fluid behaviour and the added variables to speed up or slow down the
|
||
fluid as well as setting a timeout (if not 0): one for the original black and
|
||
white and one for the colour one added by the author (at the request of the
|
||
judges at the time of the contest). Another version is the deobfuscated version
|
||
provided by the author as well. See the <a href="#alternate-code">Alternate code</a>
|
||
section below for more details.</p>
|
||
<pre><code> ./endoh1 < file</code></pre>
|
||
<p><strong>WARNING</strong>: if you’re sensitive to/don’t like flashing colours/text or just want to
|
||
see what this looks like not going so fast then you might wish to try the
|
||
<a href="#alternate-code">Alternate code</a> instead.</p>
|
||
<h2 id="try">Try:</h2>
|
||
<pre><code> ./try.bw.sh endoh1.c
|
||
./try.sh endoh1.c
|
||
|
||
./try.bw.sh pour-out.txt
|
||
./try.sh pour-out.txt
|
||
|
||
./try.bw.sh fountain.txt
|
||
./try.sh fountain.txt</code></pre>
|
||
<h2 id="alternate-code">Alternate code:</h2>
|
||
<p>The files <a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/endoh1.alt.c">endoh1.alt.c</a> and
|
||
<a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/endoh1_color.alt.c">endoh1_color.alt.c</a> correspond to <a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/endoh1.c">endoh1.c</a> and
|
||
<a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/endoh1_color.c">endoh1_color.c</a> but which allow you to speed up or slow down
|
||
the fluid and change the behaviour of the fluid. The file
|
||
<a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/endoh1.alt.c">endoh1.alt2.c</a> is deobfuscated and was provided by the author.</p>
|
||
<h3 id="alternate-build">Alternate build:</h3>
|
||
<p>For the default values, try:</p>
|
||
<pre><code> make alt</code></pre>
|
||
<p>In the <code>alt</code> versions a default time of 10 seconds is set as an alarm so that
|
||
one can more easily go through the list of files to see them all in succession,
|
||
for fun. That is controlled by the variable <code>TIMER</code> at compilation.
|
||
For instance if you wish to change the value to 5:</p>
|
||
<pre><code> make clobber TIMER=5 alt</code></pre>
|
||
<p>If you want to disable the alarm time, set it to 0:</p>
|
||
<pre><code> make clobber TIMER=0 alt</code></pre>
|
||
<p>It cannot be < 0 or > 60 (arbitrarily selected).</p>
|
||
<p>The <code>SLEEP</code> variable is to delay the time between updates to make it easier to
|
||
see and to not flash too quickly. The code protects against a value < 0 and
|
||
defaults to 12321 but you can change it to. For instance to slow it down you
|
||
could increase the sleep time from <code>12321</code> to <code>50000</code>:</p>
|
||
<pre><code> make clobber SLEEP=50000 alt</code></pre>
|
||
<p>If you wish to speed it up you might decrease the sleep time from <code>12321</code> to
|
||
<code>9999</code>:</p>
|
||
<pre><code> make clobber SLEEP=9999 alt</code></pre>
|
||
<p>WARNING: the lower the value the faster it will flash so be careful if you’re
|
||
sensitive to this.</p>
|
||
<p>If you wish to change the gravity factor, pressure factor and/or
|
||
viscosity factor, you should redefine the values <code>GRAVITY</code>, <code>PRESSURE</code> and/or
|
||
<code>VISCOSITY</code> macros, respectively. For instance if you wish to change the
|
||
viscosity and pressure factors but leave the other values alone:</p>
|
||
<pre><code> make clobber VISCOSITY=X PRESSURE=Y alt</code></pre>
|
||
<p>where <code>X</code> and <code>Y</code> are numbers or the letter <code>I</code> and which are, respectively, the
|
||
viscosity and pressure factors. There is no attempt to check the value or type
|
||
because doing so prevents the macros from being defined to <code>I</code> which would
|
||
prevent the author’s remarks about it from being done.</p>
|
||
<p>You might also wish to try redefining the macros <code>G</code>, <code>P</code> and/or <code>V</code>. For
|
||
instance:</p>
|
||
<pre><code> make clobber GRAVITY=5 PRESSURE=5 VISCOSITY=5 alt</code></pre>
|
||
<p>You might try even:</p>
|
||
<pre><code> make clobber GRAVITY=I alt</code></pre>
|
||
<p>See the author’s remarks for details on these macros where:</p>
|
||
<pre><code> G = GRAVITY
|
||
P = PRESSURE
|
||
V = VISCOSITY</code></pre>
|
||
<h3 id="alternate-use">Alternate use:</h3>
|
||
<p>Use <code>endoh1.alt</code>, <code>endoh1_color.alt</code> and <code>endoh1.alt2</code> as you would <code>endoh1</code>
|
||
and <code>endoh1_color</code> above.</p>
|
||
<h3 id="alternate-try">Alternate try:</h3>
|
||
<p>To see two different ways run on the source file and each of the text files,
|
||
try:</p>
|
||
<pre><code> ./try.alt.sh</code></pre>
|
||
<p>The second run of each will be with the gravity factor set to <code>I</code>.</p>
|
||
<p>To see the same thing but in the original uncoloured version, try:</p>
|
||
<pre><code> ./try.alt.bw.sh</code></pre>
|
||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||
<p>Let’s play <a href="https://en.wikipedia.org/wiki/Jeopardy!">Jeopardy!</a></p>
|
||
<p>A: An obfuscated program that deals with complex numbers and produces animated ASCII graphics.
|
||
Q: What is a Mandelbrot simulator?</p>
|
||
<p>Bzzzt!</p>
|
||
<p>Such heavily squeezed fluid simulation (this is parsed uniquely
|
||
as fluids are not squeezable) has a few quirks that the judges were
|
||
happy to experiment with.</p>
|
||
<p>One configuration file was inspired by an <a href="https://web.archive.org/web/20230711134609/https://whatif.xkcd.com/6/">XKCD what if?
|
||
entry</a>.</p>
|
||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||
<h3 id="synopsis">Synopsis</h3>
|
||
<p><strong>DO NOT FORGET</strong> <code>-DG=1 -DP=4 -DV=8</code> and make your terminal window larger
|
||
than 80 x 25.</p>
|
||
<pre><code> cc endoh1.c -DG=1 -DP=4 -DV=8 -D_BSD_SOURCE -o endoh1 -lm
|
||
./endoh1 < endoh1.c
|
||
./endoh1 < logo.txt
|
||
./endoh1 < column.txt
|
||
./endoh1 < pour-out.txt
|
||
./endoh1 < tanada.txt</code></pre>
|
||
<h3 id="what-it-is">What it is</h3>
|
||
<pre><code> ,___. ,. ,. ,. ,___. ,. ,. ,.
|
||
|/--' || `' || |/--' `' || |\_.
|
||
|\__. || ,. ,. ,. ,__/| |\__. ,. ,____. ,. ,. || ,_. |/-' ,_. ,__.
|
||
|/--' || || || || |/-\| `--\| || |/\/\| || || || ,/-\. || ,/-\. |/-\.
|
||
|| || `\_/| || |\_/| ,__/| || |||||| `\_/| || `\_/\.`\_. `\_/' || `'
|
||
`' `' `--' `' `---' `---' `' `'`'`' `--' `' `-'`' `-' `-' `'
|
||
|
||
|
||
,.,. ,.,.
|
||
,/\/\. ,. ,. ,. ,/\/\. ,. ,. ,__.
|
||
|||#/' || `' ,_.|| |||#/' `',_.,__. || ||\\. ,.
|
||
|||#\. || ,. ,. ,.,/#||| |\//\. ,.|#||##| ,. ,. || ,.,. |\/-' ,.,. ,.|\.
|
||
|\/--' ||,/\.|| |||#/\/| `\#||| |||#||/\|,/\.|| ||,/'`\.|#| ,/'`\.|\/-\.
|
||
`\| ||`\#||| |||#||\| ,//\/| ||`\|||||`\#||| ||`\.,/\/\|,.`\.,/'`\| `'
|
||
`' `' `-'`' `'`-'`-' `-'`-' `' `'`'`' `-'`' `' `'`--'`'`' `'`' `'
|
||
|
||
|
||
,_.,_. ,. ,. ,. ,_.,_. ,. ,. ,.
|
||
|#||#| || `' || |#||#| `' || ||,_.
|
||
||\/#| ||,. ,. ,.,_.,/| |\||#| ,.,_.,__.,. ,. || ,.,. |||#| ,.,. ,.,_.
|
||
|||##| |||| || |||#||#| |#||#| |||#||##||| || ||,/||\.||`-',/||\.|||#\.
|
||
||`--' ||`\_.|| |||\||#| |#||#| ||||'||\|`\_.|| ||`\||#|`\.,.`\||/'||`--'
|
||
`' `' |#||| `'|#||#| |#||#| `'`' `'`' |#||| `' |||/' |||| |||| `'
|
||
`-'`' `-'`-' `-'`-' `-'`' `'`' `'`' `'`'
|
||
|
||
</code></pre>
|
||
<p>This program is a fluid simulator using the SPH:
|
||
<a href="http://en.wikipedia.org/wiki/Smoothed-particle_hydrodynamics">Smoothed-particle hydrodynamics</a> method.</p>
|
||
<p>The SPH particles represent the fluid flow. Particles have information about
|
||
the position, density, and velocity. In every simulation step, they are
|
||
changed by pressure force, viscosity force, and external force (i.e., gravity).</p>
|
||
<p>This program reads a text from standard input, and uses it as an initial
|
||
configuration of the particles. The character <code>#</code> represents a “wall particle” (a
|
||
particle with a fixed position), and any other non-space characters represent
|
||
free particles.</p>
|
||
<p>The compilation options <code>-DG=1 -DP=4 -DV=8</code> represent, respectively, the factor
|
||
of gravity, pressure, and viscosity. By changing their values, you can see
|
||
different fluid behavior.</p>
|
||
<p><a href="http://en.wikipedia.org/wiki/Marching_squares">Marching square</a>-like algorithm
|
||
is used to render the particles.</p>
|
||
<h3 id="portability">Portability</h3>
|
||
<p>The program requires a C99 compiler; it uses <code>complex</code> types and one-line
|
||
comments. It also uses <code>usleep(3)</code>, which may require <code>-D_BSD_SOURCE</code> or so
|
||
to build with no warning. Under these conditions, it should be portable.
|
||
At least, recent compilers with <code>-std=c99 -Wall -W -Wextra -pedantic</code> say
|
||
nothing.</p>
|
||
<pre><code> gcc -DG=1 -DP=4 -DV=8 -D_BSD_SOURCE -std=c99 -Wall -W -Wextra -pedantic endoh1.c
|
||
|
||
clang -DG=1 -DP=4 -DV=8 -D_BSD_SOURCE -std=c99 -Wall -W -Wextra -pedantic endoh1.c</code></pre>
|
||
<p>I expect it to work in any Unix-like environment. VTxxx/ANSI sequences are
|
||
used to clear screen and move cursor to home.</p>
|
||
<p>I’ve tested with gcc-4.6.3 and clang-3.0 on Linux (Ubuntu 12.04)
|
||
and gcc-4.5.3 and clang-3.1 on Cygwin. On Cygwin, gcc and clang complain about
|
||
a usage of <code>I</code> (complex’s imaginary unit), but I bet this is cygwin’s issue;
|
||
it is surely a C99 feature.</p>
|
||
<h3 id="notes-about-additional-files">Notes about Additional Files</h3>
|
||
<p><a href="logo.txt">logo.txt</a> is a source of the logo in this remark file.</p>
|
||
<p><a href="column.txt">column.txt</a> is a water column collapse, which is a popular demo of SPH.</p>
|
||
<p><a href="pour-out.txt">pour-out.txt</a> pours you a cup of tea.</p>
|
||
<p><a href="tanada.txt">tanada.txt</a> simulates “Terrace farming”. (“Tanada” means a
|
||
“<a href="https://en.wikipedia.org/wiki/Terrace_(earthworks)%20fields">terraced rice</a>” in Japanese.)</p>
|
||
<p><a href="clock.txt">clock.txt</a> is a “water” clock created by HAMANO Tsukasa.</p>
|
||
<p>Other <code>*.txt</code> files are from the judges.</p>
|
||
<p><a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/endoh1_color.c">endoh1_color.c</a> is a variant that shows the density by using terminal 256
|
||
colors.</p>
|
||
<h3 id="acknowledgments">Acknowledgments</h3>
|
||
<p>I would like to thank my wife <span class="citation" data-cites="hirekoke">@hirekoke</span> for her teaching me the SPH method.</p>
|
||
<p>The judges <del>ordered</del> suggested creating a color version
|
||
after the contest.</p>
|
||
<p>The judges and HAMANO Tsukasa (The silver medalist at this IOCCC) kindly
|
||
provided many configuration files.</p>
|
||
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge:</h3>
|
||
<p><strong>If you want a greater challenge, don’t read any further</strong>:
|
||
just try to understand the program via the source.</p>
|
||
<p>If you get stuck, come back and read below for additional hints and information.</p>
|
||
<h3 id="how-this-entry-works">How this entry works:</h3>
|
||
<p>First of all, the source code itself serves as an initial configuration.
|
||
Preprocessing directives (such as <code>#include</code>)’s <code>#</code> serve as walls.</p>
|
||
<p>This program uses <code>double complex</code> to represent any 2D vector. But, note that
|
||
the <code>x-axis</code> and <code>y-axis</code> are swapped (real axis = y-axis, imaginary axis =
|
||
x-axis). The purpose of swapping is not only obfuscation, but also short
|
||
coding: for example, to add gravity to total force, <code>force += G</code> suffices,
|
||
rather than <code>force += G*I</code>.</p>
|
||
<p>(Incidentally, you can exert horizontal gravity by using for instance <code>-DG=I</code>)</p>
|
||
<p>Every five entries of <code>double complex a[]</code> contain information of one particle:
|
||
position, wall-flag, density, force, and velocity, in turn.</p>
|
||
<p>You can use <code>G</code>, <code>P</code>, and <code>V</code> as a guide to find the calculation code of
|
||
gravity, pressure, and viscosity forces.</p>
|
||
<p>Though some assignments may look meaningless, they are actually meaningful; they
|
||
extract “integer part of real part” from a complex value by assigning (and
|
||
casting) it to an integer-type variable.</p>
|
||
<!--
|
||
|
||
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
|
||
|
||
You are free to share and adapt this file under the terms of this license:
|
||
|
||
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
|
||
|
||
For more information, see:
|
||
|
||
https://creativecommons.org/licenses/by-sa/4.0/
|
||
|
||
-->
|
||
<!-- AFTER: last line of markdown file: 2012/endoh1/README.md -->
|
||
|
||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||
<!-- START: this line starts content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
|
||
|
||
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
|
||
|
||
<div id="inventory">
|
||
<h1 id="inventory-for-2012endoh1">Inventory for 2012/endoh1</h1>
|
||
</div>
|
||
<h2 id="primary-files">Primary files</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/endoh1.c">endoh1.c</a> - entry source code</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/Makefile">Makefile</a> - entry Makefile</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/endoh1.alt2.c">endoh1.alt2.c</a> - second alternate source code</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/endoh1.alt.c">endoh1.alt.c</a> - alternate source code</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/endoh1_color.alt.c">endoh1_color.alt.c</a> - alternate source code with color</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/endoh1.orig.c">endoh1.orig.c</a> - original source code</li>
|
||
<li><a href="clock.txt">clock.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="column2.txt">column2.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="column3.txt">column3.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="column.txt">column.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="corners.txt">corners.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="dripping-pan.txt">dripping-pan.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="evaporation.txt">evaporation.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="flat.txt">flat.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="fountain.txt">fountain.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="funnel2.txt">funnel2.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="funnel3.txt">funnel3.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="funnel.txt">funnel.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="glass-half-empty.txt">glass-half-empty.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="leidenfrost.txt">leidenfrost.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="logo.txt">logo.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="pour-out.txt">pour-out.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="tanada.txt">tanada.txt</a> - fluid simulator initial state as text</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/try.alt.bw.sh">try.alt.bw.sh</a> - script to try alternate code in black and white</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/try.alt.sh">try.alt.sh</a> - script to try alternate code</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/try.bw.sh">try.bw.sh</a> - script to try black and white version</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/try.sh">try.sh</a> - script to try entry</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/endoh1_color.c">endoh1_color.c</a> - source code using terminal 256 colors</li>
|
||
</ul>
|
||
<h2 id="secondary-files">Secondary files</h2>
|
||
<ul>
|
||
<li><a href="2012_endoh1.tar.bz2">2012_endoh1.tar.bz2</a> - download entry tarball</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/README.md">README.md</a> - markdown source for this web page</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/.entry.json">.entry.json</a> - entry summary and manifest in JSON</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
|
||
<li><a href="https://github.com/ioccc-src/winner/blob/master/2012/endoh1/.path">.path</a> - directory path from top level directory</li>
|
||
<li><a href="index.html">index.html</a> - this web page</li>
|
||
</ul>
|
||
<hr style="width:10%;text-align:left;margin-left:0">
|
||
<h4>
|
||
Jump to: <a href="#">top</a>
|
||
</h4>
|
||
|
||
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
|
||
|
||
<!-- END: this line ends content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
|
||
<!-- START: this line starts content from: inc/after-content.default.html -->
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/after-content.default.html -->
|
||
<!-- START: this line starts content from: inc/footer.inventory.html -->
|
||
|
||
<!--
|
||
|
||
Copyright © 1984-2025 by Landon Curt Noll. All Rights Reserved.
|
||
|
||
You are free to share and adapt this file under the terms of this license:
|
||
|
||
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
|
||
|
||
For more information, see:
|
||
|
||
https://creativecommons.org/licenses/by-sa/4.0/
|
||
|
||
-->
|
||
|
||
<div class="footer">
|
||
|
||
<div id="copyright"><h3>Copyright © 1984-2025 by Landon Curt Noll:
|
||
<a href="https://creativecommons.org/faq/#what-does-some-rights-reserved-mean"
|
||
target="_blank"
|
||
rel="license noopener noreferrer">Some Rights Reserved</a></h3>
|
||
<p>
|
||
This work is <b>licensed by Landon Curt Noll</b> under
|
||
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/?ref=chooser-v1"
|
||
target="_blank"
|
||
rel="license noopener noreferrer"
|
||
style="display:inline-block;">CC BY-SA 4.0</a></b>.
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../../png/cc.png"
|
||
alt="cc inside circle symbol">
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../../png/by.png"
|
||
alt="person inside circle symbol">
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../../png/sa.png"
|
||
alt="arrow looping back on itself inside circle symbol"><br>
|
||
You should <b>carefully review</b> the
|
||
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode.en"
|
||
target="_blank"
|
||
rel="license noopener noreferrer">CC BY-SA 4.0 LEGAL CODE</a></b>
|
||
before using the licensed material.<br>
|
||
You may wish to review the
|
||
<b><a href="../../license.html"
|
||
target="_blank"
|
||
rel="license noopener noreferrer">highlights of some of the key features and terms</a></b>
|
||
of <b>CC BY-SA 4.0</b>.<br>
|
||
</p>
|
||
</div>
|
||
|
||
<div id="coda"><h3>Coda</h3>
|
||
<p>
|
||
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.ioccc.org%2F2012%2Fendoh1%2Findex.html" rel="nofollow">Nu HTML check this web page</a><br>
|
||
<a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a><br>
|
||
</p>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/footer.inventory.html -->
|
||
<!-- START: this line starts content from: inc/bottom.default.html -->
|
||
|
||
</body>
|
||
</html>
|
||
|
||
<!-- END: this line ends content from: inc/bottom.default.html -->
|