The location of the link is in the About menu under the 'Contacting the IOCCC' and above 'Thanks for the help'. At first I had it at the very bottom, under 'IOCCC markdown guidelines', but it seemed better to have it closer to contacting the IOCCC. This is the same location in the no JavaScript menu (which, for those who do not know or forget, is not a requirement except for some screen sizes). The top level Makefile has a new 'security' rule. Updated make help. Typo fixes in make help. SECURITY.html has had a few updates as well: change the wording of entry code is unsupported (it now says 'ALL CODE IN ALL IOCCC ENTRIES IS UNSUPPORTED!!') and it now links to the mkiocccentry repo and how to report a possible security vulnerability in that repo; as that IS supported - and since there was reference to discussing security concerns is in SECURITY.html - even though the entries will not receive security updates - it seemed a good idea to have a link to report such security issues in the mkiocccentry repo. Perhaps the FAQ needs to be updated for this too.
741 lines
33 KiB
HTML
741 lines
33 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 winning authors
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../bugs.html" class="sub-item-link">
|
||
Bugs and (mis)features
|
||
</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">
|
||
IOCCC 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/index.html" class="sub-item-link">
|
||
Rules and Guidelines
|
||
</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">
|
||
FAQ
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#submit" class="sub-item-link">
|
||
How to enter the IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#fix_an_entry" class="sub-item-link">
|
||
Fixing IOCCC entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#fix_web_site" class="sub-item-link">
|
||
Fixing the website
|
||
</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">
|
||
About
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../../index.html" class="sub-item-link">
|
||
IOCCC Home
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../judges.html" class="sub-item-link">
|
||
The IOCCC Judges
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../contact.html" class="sub-item-link">
|
||
Contacting the IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../SECURITY.html" class="sub-item-link">
|
||
IOCCC Security Policy
|
||
</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="../../markdown.html" class="sub-item-link">
|
||
IOCCC markdown guidelines
|
||
</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">
|
||
Authors of winning IOCCC entries
|
||
</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>
|
||
|
||
</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="../../status.html">
|
||
Contest status
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../next/index.html">
|
||
Rules and Guidelines
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../news.html">
|
||
IOCCC News
|
||
</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="../../faq.html#submit">
|
||
How to enter the IOCCC
|
||
</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 website
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#fix_author">
|
||
Fixing author info
|
||
</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">
|
||
IOCCC Home
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../judges.html">
|
||
The IOCCC Judges
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../contact.html">
|
||
Contacting the IOCCC
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../thanks-for-help.html">
|
||
Thanks for the help
|
||
</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>
|
||
</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">← dlowe</a>
|
||
<a class="Left" href="../index.html">↑ 2012 ↑</a>
|
||
<a class="Left" href="../endoh2/index.html">endoh2 →</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/endoh1.c">C code</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/Makefile">Makefile</a>
|
||
<a class="Right" href="#inventory">Inventory</a>
|
||
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2012%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>WARNING: 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/temp-test-ioccc/blob/master/2012/endoh1/endoh1.alt.c">endoh1.alt.c</a> and
|
||
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/endoh1_color.alt.c">endoh1_color.alt.c</a> correspond to <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/endoh1.c">endoh1.c</a> and
|
||
<a href="https://github.com/ioccc-src/temp-test-ioccc/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/temp-test-ioccc/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/temp-test-ioccc/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/temp-test-ioccc/blob/master/2012/endoh1/endoh1.c">endoh1.c</a> - entry source code</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/Makefile">Makefile</a> - entry Makefile</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/endoh1.alt2.c">endoh1.alt2.c</a> - second alternate source code</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/endoh1.alt.c">endoh1.alt.c</a> - alternate source code</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/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/temp-test-ioccc/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/temp-test-ioccc/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/temp-test-ioccc/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/temp-test-ioccc/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/temp-test-ioccc/blob/master/2012/endoh1/try.sh">try.sh</a> - script to try entry</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/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/temp-test-ioccc/blob/master/2012/endoh1/README.md">README.md</a> - markdown source for this web page</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/.entry.json">.entry.json</a> - entry summary and manifest in JSON</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/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/temp-test-ioccc/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-2024 by Landon Curt Noll. All Rights Reserved.
|
||
|
||
You are free to share and adapt this file under the terms of this license:
|
||
|
||
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
|
||
|
||
For more information, see:
|
||
|
||
https://creativecommons.org/licenses/by-sa/4.0/
|
||
|
||
-->
|
||
|
||
<div class="footer">
|
||
|
||
<div id="copyright"><h3>Copyright © 1984-2024 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%2Fioccc-src.github.io%2Ftemp-test-ioccc%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 -->
|