We add an initial "_title_" and "_abstract_" to all entry `.entry.json` files. The `bin/csv2entry.sh` tool reads the `summary.csv` file and loads the "_title_" and "_abstract_" to entry `.entry.json` files. Changed `bin/csv2entry.sh` VERSION from "1.3 2024-09-23" to "1.4 2024-09-27". Perform `make csv2entry` to perform the above and test under macOS. The `bin/cvt-submission.sh` tool adds "_title_" and "_abstract_" to the .entry.json based on the `.info.json` file. Changed `bin/cvt-submission.sh` VERSION from "1.2 2024-09-23" to "1.3 2024-09-27". The `bin/entry2csv.sh` tool forms the `summary.csv` file based on the "_title_" and "_abstract_" fields found in .entry.json files. Changed `bin/entry2csv.sh` VERSION from "1.3 2024-09-23" to "1.4 2024-09-27". Perform `make entry2csv` to perform the above and test under macOS. Added `-H` and `header=with-header-3` to the `bin/md2html.cfg` for the configuration entry for `[12][0-9][0-9][0-9]/*/README.md`. Changed `bin/md2html.sh` VERSION from "1.6 2024-08-17" to "1.7 2024-09-27". All entry `index.html` files now list the "_abstract_" in a new `<h3>abstract</h3>` header. Changed `bin/subst.entry-index.sh` VERSION from "1.6 2024-09-23" to "1.7 2024-09-27". Removed `summary.csv`. Added `summary.csv` and `summary.numbers` to `.gitignore`. Sorted the result with `bin/sgi.sh`. Perform `make quick_www` to perform the above and test under macOS. Perform `make www` to perform the above and test under macOS.
686 lines
27 KiB
HTML
686 lines
27 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>2001/herrmann2 - Most eye-crossing</title>
|
||
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
|
||
<meta name="description" content="2001 IOCCC entry herrmann2 - Most eye-crossing">
|
||
<meta name="keywords" content="IOCCC, 2001, IOCCC 2001, IOCCC entry, herrmann2, Most eye-crossing">
|
||
</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: 2001/herrmann2/README.md -->
|
||
<!-- -->
|
||
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2001/herrmann2/README.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2001/herrmann2/README.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2001/herrmann2/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>2001/herrmann2 - Most eye-crossing</h2>
|
||
<h3>SIRDS/3D generator where the source is SIRDS/3D itself</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="../herrmann1/index.html">← 2001/herrmann1</a>
|
||
<a class="Left" href="../index.html">↑ 2001 ↑</a>
|
||
<a class="Left" href="../jason/index.html">2001/jason →</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.c">C code</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/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%2F2001%2Fherrmann2%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#Immanuel_Herrmann">Immanuel Herrmann</a><br>
|
||
Location: <a href="../../location.html#DE">DE</a> - <em>Federal Republic of Germany</em> (<em>Germany</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: 2001/herrmann2/README.md -->
|
||
<h2 id="to-build">To build:</h2>
|
||
<pre><code> make</code></pre>
|
||
<h2 id="to-use">To use:</h2>
|
||
<pre><code> ./herrmann2</code></pre>
|
||
<h2 id="try">Try:</h2>
|
||
<pre><code> ./try.sh</code></pre>
|
||
<p>If you use vi(m) you can see a pattern in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.cup">herrmann2.cup</a> and
|
||
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.ioccc">herrmann2.ioccc</a> by say:</p>
|
||
<pre><code> /[pon]\</code></pre>
|
||
<p>and</p>
|
||
<pre><code> /l</code></pre>
|
||
<p>For additional fun in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.cup">herrmann2.cup</a> try:</p>
|
||
<pre><code> /[po]
|
||
/q</code></pre>
|
||
<p>and in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.ioccc">herrmann2.ioccc</a> try:</p>
|
||
<pre><code> /n</code></pre>
|
||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||
<p>Be careful when staring at the source code - your eyes might cross, but
|
||
if you concentrate on your focus you will find illumination!</p>
|
||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||
<p>You probably know those “magic eye” 3D pictures - pictures looking
|
||
like random noise, but when you look “through” the paper, you
|
||
either get a three dimensional picture or a headache. With this
|
||
program, you can create your own 3D pictures in ASCII art. And
|
||
yes, the program itself is such a 3D picture.</p>
|
||
<h3 id="how-to-use-it">How to use it</h3>
|
||
<ol type="1">
|
||
<li><p>Create a file which describes the desired 3D picture. The file
|
||
must be a block of lowercase letters the size of the desired
|
||
picture. The letters specify the depth of the corresponding pixel:
|
||
<code>a</code> means close to the paper, <code>z</code> means far away. The info files
|
||
are examples. Be aware that the size of the picture is restricted
|
||
to about 9k.</p></li>
|
||
<li><p>Pipe your picture into the program. The output will be your
|
||
3D picture, constructed of random characters (with ASCII code between
|
||
32 and 126). For example, type</p></li>
|
||
</ol>
|
||
<pre><code> ./herrmann2 < herrmann2.ioccc</code></pre>
|
||
<ol start="3" type="1">
|
||
<li>If you want to control the characters used in the output (for
|
||
example if your picture is to consist only of digits), pass them
|
||
as the first argument. In this case, each time the program needs a
|
||
new random character, it will take the next one from the
|
||
argument. When it arrives at the end of the argument, it will
|
||
start over at the beginning. Example:</li>
|
||
</ol>
|
||
<pre><code> ./herrmann2 "234 84 045 5 6765 7487 65190 84 656 254 12 43931 818 0 6542 \
|
||
341 45 567 76967 7244 606 976567 895 81898 095 68678 1843 4650547 \
|
||
565980691 389 04974" < herrmann2.ioccc</code></pre>
|
||
<h3 id="some-hints-to-get-better-results">Some hints to get better results</h3>
|
||
<ul>
|
||
<li><p>Due to the way these 3D pictures work, the left part of the
|
||
picture won’t look really 3D, so don’t put things too much on
|
||
the left. The reason is that for each letter in the source file,
|
||
a character for the right eye is printed. The 3D effect appears
|
||
when the left eye sees the same character more to the left. This
|
||
is of course impossible on the left border of the picture.</p></li>
|
||
<li><p>Don’t use too different depths and don’t use the depths very
|
||
close to the paper (beginning of the alphabet). This would make
|
||
it more difficult to see the picture.</p></li>
|
||
<li><p>When passing an argument, don’t use a too short one; the
|
||
repeating pattern which arises from the repetition of the argument
|
||
could interfere with the repeating pattern which creates the 3D
|
||
effect.</p></li>
|
||
</ul>
|
||
<h3 id="extra-features">Extra-Features</h3>
|
||
<ul>
|
||
<li><p>The program is able to handle all common kinds of line breaks:
|
||
Unix, DOS and Mac. To get an output with a certain kind of line
|
||
breaks, simply use the same kind of line breaks in the input
|
||
file.</p></li>
|
||
<li><p>As the source code is a 3D picture itself, the easiest way to
|
||
get it (if you lost it or if you don’t have it already) is to use
|
||
the program itself on the right picture and with the right
|
||
argument:</p></li>
|
||
</ul>
|
||
<pre><code> ./herrmann2 \
|
||
'char*d,A[9876];e;b;*ad,a,c; tw,ndr,T; wri; ;*h; _,ar ;on;'\
|
||
' ;l ;i(V)man,n {-!har ; =Aadre(0,&e,o||n -- +,o4,=9,l=b=8,'\
|
||
'!( te-*Aim)|(0~l),srand (l),,!A,d=,b))&&+((A + te-A(&(*)=+ +95>'\
|
||
'e?(*& c_*r=5,r+e-r +_:2-19<-+?|(d==d),!n ?*d| *( (char**)+V+), ('\
|
||
' +0,*d-7 ) -r+8)c:7:+++7+! r: and%9- 85! ()-(r+o):(+w,_+ A*(=er'\
|
||
'i+(o)+b)),!write,(=_((-b+*h)(1,A+b,!!((((-+, a >T^l,( o-95=+))w?'\
|
||
'++ &&r:b<<2+a +w) ((!main(n*n,V) , +-) ),l)),w= +T-->o +o+;{ &!'\
|
||
'a;}return _+= ' < herrmann2.ioccc</code></pre>
|
||
<ul>
|
||
<li><p>If I had submitted the program last year, I would have said that
|
||
it has exactly the maximum allowed length: 1536 characters. Now
|
||
let’s say it’s a way of protesting against the inflation in
|
||
program length.</p></li>
|
||
<li><p>The size of the source 3D picture has been chosen carefully: as
|
||
big as possible, but small enough to be viewed without problems
|
||
on normal-sized terminals.</p></li>
|
||
</ul>
|
||
<h3 id="why-this-program-should-win">Why this program should win</h3>
|
||
<ul>
|
||
<li><p>The layout is of a completely new kind. And it describes what
|
||
the program does more precisely than any comment could.</p></li>
|
||
<li><p>I don’t think there has ever been an IOCCC program with so
|
||
severe layout constraints. Once the 3D picture has been fixed,
|
||
only a sixth of the characters can be chosen freely! (457 of
|
||
1840, to be exact.) In contrast, in palindrome programs, for
|
||
example, half of the characters can be chosen freely.</p></li>
|
||
<li><p>I did not cheat by using comments or <code>-D</code> options - something
|
||
I’ve seen even some palindrome programs do. In fact, at my first
|
||
attempt at writing the program I became convinced that it
|
||
isn’t possible without cheating. But then I found out that with
|
||
comments or defines, it would become trivial, so I had to try
|
||
harder…</p></li>
|
||
<li><p>If you don’t believe the constraints are hard, try to write just
|
||
one single line which satisfies them. (To be able to make one
|
||
function call, for example, you have to fill an entire line with
|
||
stuff doing mostly nothing.)</p></li>
|
||
<li><p>Just in case this is not enough: Yes, the code itself is
|
||
obfuscated: It’s (almost) only one big expression, with deep
|
||
nesting of <code>()</code> and <code>?:</code>, and full of unnecessary operations which
|
||
do not really help making it readable. And it contains a lot of
|
||
“magic numbers”. (My favourite is the <code>7</code> in line 15 (each
|
||
one). Which is the other digit I could have put there instead,
|
||
and what other changes to the program would have been necessary?
|
||
Without violating the constraints of course.)</p></li>
|
||
<li><p>The fact that the main loop of the program calls <code>main()</code>
|
||
recursively is nothing new. New however is that this program
|
||
only needs a logarithmic recursion depth! (Find out how this
|
||
works.)</p></li>
|
||
<li><p>When still in doubt about how to judge this program, type</p></li>
|
||
</ul>
|
||
<pre><code> ./herrmann2 < herrmann2.cup</code></pre>
|
||
<p>and let the result inspire you. ;-)</p>
|
||
<h3 id="requirements-to-the-compiler-compatibility">Requirements to the compiler / Compatibility</h3>
|
||
<ul>
|
||
<li><p>I fear that gcc is the only compiler for which this program
|
||
works. Due to the severe restrictions, I was forced to use
|
||
declarations of <code>int</code> variables, functions and parameters without
|
||
specifying their type. The biggest problem was to put <code>int main(int c, char ** v){</code> into the program. After some time, I
|
||
became convinced that this is impossible. Finally, at least I
|
||
managed to squeeze <code>main(c, v){</code> into the constraints instead.</p></li>
|
||
<li><p>Also, a lot of warnings are produced - most of them “data
|
||
definition has no type or storage class”, but also some
|
||
“parameter names (without types) in function declaration” and
|
||
“assignment from incompatible pointer type”. I wasn’t able to
|
||
get rid of them.</p></li>
|
||
<li><p>At least, it probably works with all sufficiently recent
|
||
versions of gcc. I tested it with versions 2.7.2.1, 2.8.1,
|
||
2.95.2, and ecgs-2.91.66.</p></li>
|
||
<li><p>Of course I couldn’t put <code>#include</code>s at the beginning of
|
||
the program. Usually, this is not really necessary with
|
||
gcc. However, for this program it would have been, because some
|
||
functions appear as function pointers, and as such they are not
|
||
generated implicitly. So the build script has to pass <code>-include ...</code> to gcc. A problem with this is that the complete path of
|
||
the include files has to be provided. In the build script, I
|
||
assume that the path is <code>/usr/include</code>, but this can easily be
|
||
adapted.</p></li>
|
||
</ul>
|
||
<!--
|
||
|
||
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: 2001/herrmann2/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-2001herrmann2">Inventory for 2001/herrmann2</h1>
|
||
</div>
|
||
<h2 id="primary-files">Primary files</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.c">herrmann2.c</a> - entry source code</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/Makefile">Makefile</a> - entry Makefile</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.alt.c">herrmann2.alt.c</a> - alternate source code</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.orig.c">herrmann2.orig.c</a> - original source code</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.cup">herrmann2.cup</a> - sample input</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.ioccc">herrmann2.ioccc</a> - sample input</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/try.sh">try.sh</a> - script to try entry</li>
|
||
</ul>
|
||
<h2 id="secondary-files">Secondary files</h2>
|
||
<ul>
|
||
<li><a href="2001_herrmann2.tar.bz2">2001_herrmann2.tar.bz2</a> - download entry tarball</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/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/2001/herrmann2/.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/2001/herrmann2/.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/2001/herrmann2/.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%2F2001%2Fherrmann2%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 -->
|