fix many internal links

Fixed a number of internal links that need to
go to the GitHub site.

Ran `make www` to perform the above.
This commit is contained in:
Landon Curt Noll committed 2024-04-24 02:37:42 -07:00
1 parent b84f8cbe28
commit e7d69bc232
175 files changed
+645 -631

No files matched your search

+5 -5
View File
@@ -73,7 +73,7 @@ separator in the form of a single line followed by a section signifying the
function of the program, a block with removed shape of lambda character. Even
the official IOCCC size tool acknowledges this: When you call `./iocccsize -i
<prog.c`, using the [2019 version of
iocccsize](../../2019/iocccsize.c), iocccsize returns **955**,
iocccsize](%%REPO_URL%%/2019/iocccsize.c), iocccsize returns **955**,
which is the Unicode codepoint of the **&#955;** character.
It might be a surprise for you that according to the IOCCC size tool the program is
@@ -89,7 +89,7 @@ When built directly using
```
the program (`prog`) accepts a single parameter with the name of an Unlambda program. You can
download the [Colossal Cave Adventure][1] (the [advent.unl](advent.unl) file)
download the [Colossal Cave Adventure][1] (the [advent.unl](%%REPO_URL%%/2019/adamovsky/advent.unl) file)
and run it like this:
``` <!---sh-->
@@ -103,7 +103,7 @@ You can also try other programs from the Web. Many example programs are in the o
entries from [quine contest][4].
There is an alternative build path that requires the 2018 IOCCC size tool to complete. Put the tool
source [iocccsize_2018.c](iocccsize_2018.c) in the project directory and call
source [iocccsize_2018.c](%%REPO_URL%%/2019/adamovskyiocccsize_2018.c) in the project directory and call
``` <!---sh-->
make identify
@@ -199,7 +199,7 @@ since it was developed using `char`s it should be always used safely.
### Spoilers:
- You can examine the [progSpoiler.c](progSpoiler.c) file. It is the original
- You can examine the [progSpoiler.c](%%REPO_URL%%/2019/adamovskyprogSpoiler.c) file. It is the original
final version of the interpreter, before I started the downsizing. It accepts
one more optional parameter that specifies a filename for the output Unlambda
function (it's the Unlambda function that remains after all function
@@ -291,7 +291,7 @@ be applied.
[6]: https://en.wikipedia.org/wiki/Lambda_calculus "Lambda Calculus on Wikipedia"
[7]: https://en.wikipedia.org/wiki/Combinatory_logic "Combinatory Logic on Wikipedia"
[8]: https://inazz.jp/unlambda/ "Online Unlambda interpreter"
[9]: ../../2014/birken/index.html "Best use of port 1701"
[9]: %%REPO_URL%%/2014/birken/index.html "Best use of port 1701"
<!--
+5 -5
View File
@@ -410,7 +410,7 @@ it into two portions: the initial macro section where I had limited resources
which you should disregard its shape, unless you like it, and the rest, which is a
separator in the form of a single line followed by a section signifying the
function of the program, a block with removed shape of lambda character. Even
the official IOCCC size tool acknowledges this: When you call <code>./iocccsize -i &lt;prog.c</code>, using the <a href="../../2019/iocccsize.c">2019 version of
the official IOCCC size tool acknowledges this: When you call <code>./iocccsize -i &lt;prog.c</code>, using the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/iocccsize.c">2019 version of
iocccsize</a>, iocccsize returns <strong>955</strong>,
which is the Unicode codepoint of the <strong>λ</strong> character.</p>
<p>It might be a surprise for you that according to the IOCCC size tool the program is
@@ -420,7 +420,7 @@ by the sheer length of the dividing line and totally overlooks the rest of the p
<p>When built directly using</p>
<pre><code> make</code></pre>
<p>the program (<code>prog</code>) accepts a single parameter with the name of an Unlambda program. You can
download the <a href="https://github.com/irori/advent-unlambda" title="Adventure">Colossal Cave Adventure</a> (the <a href="advent.unl">advent.unl</a> file)
download the <a href="https://github.com/irori/advent-unlambda" title="Adventure">Colossal Cave Adventure</a> (the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/adamovsky/advent.unl">advent.unl</a> file)
and run it like this:</p>
<pre><code> ./prog advent.unl</code></pre>
<p><strong>NOTE</strong>: the file was added to the entry so there is no need to download it.</p>
@@ -428,7 +428,7 @@ and run it like this:</p>
<a href="http://www.madore.org/~david/programs/unlambda/#distrib" title="Reference Unlambda distribution">Unlambda distribution</a> on the Unlambda homepage. The most complex programs there are
entries from <a href="http://www.madore.org/~david/programs/unlambda/#quine" title="Unlambda quine contest">quine contest</a>.</p>
<p>There is an alternative build path that requires the 2018 IOCCC size tool to complete. Put the tool
source <a href="iocccsize_2018.c">iocccsize_2018.c</a> in the project directory and call</p>
source <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/adamovskyiocccsize_2018.c">iocccsize_2018.c</a> in the project directory and call</p>
<pre><code> make identify</code></pre>
<p>It will build the tool and use it to build an alternative program <code>prog2</code>, which in turn will
produce an Unlambda program <code>identify.unl</code>. <code>make identify</code> runs this program to identify
@@ -502,7 +502,7 @@ since it was developed using <code>char</code>s it should be always used safely.
</ul>
<h3 id="spoilers">Spoilers:</h3>
<ul>
<li><p>You can examine the <a href="progSpoiler.c">progSpoiler.c</a> file. It is the original
<li><p>You can examine the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/adamovskyprogSpoiler.c">progSpoiler.c</a> file. It is the original
final version of the interpreter, before I started the downsizing. It accepts
one more optional parameter that specifies a filename for the output Unlambda
function (it’s the Unlambda function that remains after all function
@@ -547,7 +547,7 @@ were shuffled both for <code>S</code> functions and Apply functions in the same
the meaning of <code>f</code> and <code>r</code> prefixes.</p></li>
</ul>
<h3 id="identification-spoiler">Identification spoiler:</h3>
<p>The alternative build path <code>make identify</code> output commemorates a <a href="../../2014/birken/index.html" title="Best use of port 1701">previous IOCCC
<p>The alternative build path <code>make identify</code> output commemorates a <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/birken/index.html" title="Best use of port 1701">previous IOCCC
winning entry</a> which uses similar methods to mess with the size tool.</p>
<h3 id="judges-spoilers">Judges’ spoilers:</h3>
<p>It is not a bug, it is a feature. :)</p>
+2 -2
View File
@@ -60,7 +60,7 @@ Compiles cleanly with:
Included is a test script, useful for the corner cases. As in all good Unix
programs, it is silent upon success; any output demonstrates an error. Instead
of checking correctness, the [check.sh](check.sh) script can simply output the
of checking correctness, the [check.sh](%%REPO_URL%%/2019/burton/Rcheck.sh) script can simply output the
results: (The Makefile contains the spoiler):
``` <!---sh-->
@@ -92,7 +92,7 @@ All your base belong to us, but the constants seem a bit ... off?
### Bonus
The script [cow.sh](cow.sh) provides a closer analog, and perhaps a more useful
The script [cow.sh](%%REPO_URL%%/2019/burton/cow.sh) provides a closer analog, and perhaps a more useful
interface.
Included is a version without compilation warnings:
+2 -2
View File
@@ -405,7 +405,7 @@ The output should look familiar.</p>
<h3 id="description">Description:</h3>
<p>Included is a test script, useful for the corner cases. As in all good Unix
programs, it is silent upon success; any output demonstrates an error. Instead
of checking correctness, the <a href="check.sh">check.sh</a> script can simply output the
of checking correctness, the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/burton/Rcheck.sh">check.sh</a> script can simply output the
results: (The Makefile contains the spoiler):</p>
<pre><code> out=cat ./check.sh ./prog</code></pre>
<p>Interestingly, and a spoiler here: macOS and FreeBSD implement the common
@@ -423,7 +423,7 @@ Input should be less than ten million octets “toavoidthisproblem”.</p>
No whitespace was harmed in the creation of this program.
All your base belong to us, but the constants seem a bit … off?</p>
<h3 id="bonus">Bonus</h3>
<p>The script <a href="cow.sh">cow.sh</a> provides a closer analog, and perhaps a more useful
<p>The script <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/burton/cow.sh">cow.sh</a> provides a closer analog, and perhaps a more useful
interface.</p>
<p>Included is a version without compilation warnings:</p>
<pre><code> cc -Wall -Wextra -Weverything -pedantic -include stdio.h -o prog.clean prog.clean.c</code></pre>
+9 -8
View File
@@ -132,14 +132,14 @@ is too long, and 2 if the command-line arguments are missing.
### Helper scripts:
- [getwords.sh](getwords.sh)
- [getwords.sh](%%REPO_URL%%/2019/ciura/getwords.sh)
`./getwords.sh LANGUAGE_CODE`
outputs a sorted list of unique words in a given language, one per line. It
requires `aspell` with a dictionary for _LANGUAGE_CODE_.
- [wrapprog.py](wrapprog.py)
- [wrapprog.py](%%REPO_URL%%/2019/ciura/wrapprog.py)
`./wrapprog.py LETTERS [N]`
@@ -148,8 +148,9 @@ is too long, and 2 if the command-line arguments are missing.
it finishes the job faster than `prog` when there are millions of perfect
pangrams. It requires a UTF-8 locale.
- [de.sh](de.sh), [en.sh](en.sh), [fr.sh](fr.sh), [it.sh](it.sh),
[pl.sh](pl.sh), and [ru.sh](ru.sh) output German,
- [de.sh](%%REPO_URL%%/2019/ciura/de.sh), [en.sh](%%REPO_URL%%/2019/ciura/en.sh),
[fr.sh](%%REPO_URL%%/2019/ciura/fr.sh), [it.sh](%%REPO_URL%%/2019/ciura/it.sh),
[pl.sh](%%REPO_URL%%/2019/ciura/pl.sh), and [ru.sh](%%REPO_URL%%/2019/ciura/ru.sh) output German,
English, French, Italian, Polish, and Russian perfect pangrams, respectively.
They require a UTF-8 locale.
@@ -162,7 +163,7 @@ among the programs that won IOCCC in the past), and _obscure bugs_ (see
the questions about Linux core dumps below).
To a casual eye, this entry may look similar to
[2005/klausler](../../2005/klausler/index.html).
[2005/klausler](%%REPO_URL%%/2005/klausler/index.html).
However, `prog` is internationalized and way faster. On my machine,
`./klausler abcdefghijklmnopqrstuvwxyz` printed only 3,965 perfect
pangrams until I killed it after 144 hours running, while the
@@ -173,7 +174,7 @@ the example from section [What is this?](#wit) finished in 1.35
seconds. On the other hand, `prog` can only output series of words
with non-repeating characters, unlike `klausler`.
In contrast to [prog.alt.c](prog.alt.c), [prog.c](prog.c) does not call
In contrast to [prog.alt.c](%%REPO_URL%%/2019/ciura/prog.alt.c), [prog.c](%%REPO_URL%%/2019/ciura/prog.c) does not call
`fflush(stdout)` after outputting each line, thus running faster.
I am grateful to Witold Jarnicki for suggesting this change.
The original `prog` finished the example above in 100 minutes
@@ -201,8 +202,8 @@ by without `goto M` and `goto H`, I challenge the adherents of
structured programming to refactor `goto T`, which jumps back into a
nested `if` block.
With the supplied [Makefile](Makefile), both `gcc` and `clang` compile
[prog.c](prog.c) without warnings in C11 and C99 mode. For a clean
With the supplied [Makefile](%%REPO_URL%%/2019/ciura/Makefile), both `gcc` and `clang` compile
[prog.c](%%REPO_URL%%/2019/ciura/prog.c) without warnings in C11 and C99 mode. For a clean
compilation with `gcc -std=c90`, add `-Wno-format` to
`CSILENCE` in `Makefile`.
+9 -8
View File
@@ -451,18 +451,19 @@ unlimited. The characters in <code>LETTERS</code> must not repeat. The length of
is too long, and 2 if the command-line arguments are missing.</p>
<h3 id="helper-scripts">Helper scripts:</h3>
<ul>
<li><p><a href="getwords.sh">getwords.sh</a></p>
<li><p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/ciura/getwords.sh">getwords.sh</a></p>
<p><code>./getwords.sh LANGUAGE_CODE</code></p>
<p>outputs a sorted list of unique words in a given language, one per line. It
requires <code>aspell</code> with a dictionary for <em>LANGUAGE_CODE</em>.</p></li>
<li><p><a href="wrapprog.py">wrapprog.py</a></p>
<li><p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/ciura/wrapprog.py">wrapprog.py</a></p>
<p><code>./wrapprog.py LETTERS [N]</code></p>
<p>works similarly to <code>./prog LETTERS [N]</code> except that it merges pangrams
before passing them to <code>prog</code> and expands them in <code>prog</code>’s output. This way,
it finishes the job faster than <code>prog</code> when there are millions of perfect
pangrams. It requires a UTF-8 locale.</p></li>
<li><p><a href="de.sh">de.sh</a>, <a href="en.sh">en.sh</a>, <a href="fr.sh">fr.sh</a>, <a href="it.sh">it.sh</a>,
<a href="pl.sh">pl.sh</a>, and <a href="ru.sh">ru.sh</a> output German,
<li><p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/ciura/de.sh">de.sh</a>, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/ciura/en.sh">en.sh</a>,
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/ciura/fr.sh">fr.sh</a>, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/ciura/it.sh">it.sh</a>,
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/ciura/pl.sh">pl.sh</a>, and <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/ciura/ru.sh">ru.sh</a> output German,
English, French, Italian, Polish, and Russian perfect pangrams, respectively.
They require a UTF-8 locale.</p></li>
</ul>
@@ -472,7 +473,7 @@ They require a UTF-8 locale.</p></li>
among the programs that won IOCCC in the past), and <em>obscure bugs</em> (see
the questions about Linux core dumps below).</p>
<p>To a casual eye, this entry may look similar to
<a href="../../2005/klausler/index.html">2005/klausler</a>.
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/klausler/index.html">2005/klausler</a>.
However, <code>prog</code> is internationalized and way faster. On my machine,
<code>./klausler abcdefghijklmnopqrstuvwxyz</code> printed only 3,965 perfect
pangrams until I killed it after 144 hours running, while the
@@ -482,7 +483,7 @@ finished in 62 minutes, reporting 1,640,569,315 perfect pangrams, and
the example from section <a href="#wit">What is this?</a> finished in 1.35
seconds. On the other hand, <code>prog</code> can only output series of words
with non-repeating characters, unlike <code>klausler</code>.</p>
<p>In contrast to <a href="prog.alt.c">prog.alt.c</a>, <a href="prog.c">prog.c</a> does not call
<p>In contrast to <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/ciura/prog.alt.c">prog.alt.c</a>, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/ciura/prog.c">prog.c</a> does not call
<code>fflush(stdout)</code> after outputting each line, thus running faster.
I am grateful to Witold Jarnicki for suggesting this change.
The original <code>prog</code> finished the example above in 100 minutes
@@ -504,8 +505,8 @@ have no perfect pangrams.</p>
by without <code>goto M</code> and <code>goto H</code>, I challenge the adherents of
structured programming to refactor <code>goto T</code>, which jumps back into a
nested <code>if</code> block.</p>
<p>With the supplied <a href="Makefile">Makefile</a>, both <code>gcc</code> and <code>clang</code> compile
<a href="prog.c">prog.c</a> without warnings in C11 and C99 mode. For a clean
<p>With the supplied <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/ciura/Makefile">Makefile</a>, both <code>gcc</code> and <code>clang</code> compile
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/ciura/prog.c">prog.c</a> without warnings in C11 and C99 mode. For a clean
compilation with <code>gcc -std=c90</code>, add <code>-Wno-format</code> to
<code>CSILENCE</code> in <code>Makefile</code>.</p>
<!--
+2 -2
View File
@@ -27,7 +27,7 @@ to a one-liner, still producing files in the UNIX compress format, albeit
sacrificing the compression ratio?
Can you explain why the `/dev/zero` file compresses identically by the entry and
the standard `compress(1)` tool (see [try.sh](try.sh)), but the text file
the standard `compress(1)` tool (see [try.sh](%%REPO_URL%%/2019/diels-grabsch1/try.sh)), but the text file
compresses differently? The judges know. :)
@@ -54,7 +54,7 @@ compresses differently? The judges know. :)
diff -s guidelines.txt guidelines2.txt
```
Of course you can also use [2015/mills2](../../2015/mills2/mills2.c) instead of
Of course you can also use [2015/mills2](%%REPO_URL%%/2015/mills2/mills2.c) instead of
`zcat` to verify the output file. The achieved compression ratio roughly matches
that of the classic Unix `compress(1)` tool. And the source code is very
compressed, too: It has exactly the same size as the paragraph you are reading
+2 -2
View File
@@ -389,7 +389,7 @@ to qualify for the Best Short Program award! That said, can you compress it down
to a one-liner, still producing files in the UNIX compress format, albeit
sacrificing the compression ratio?</p>
<p>Can you explain why the <code>/dev/zero</code> file compresses identically by the entry and
the standard <code>compress(1)</code> tool (see <a href="try.sh">try.sh</a>), but the text file
the standard <code>compress(1)</code> tool (see <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/diels-grabsch1/try.sh">try.sh</a>), but the text file
compresses differently? The judges know. :)</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="a-tiny-compress-tool">A tiny “compress” tool:</h3>
@@ -400,7 +400,7 @@ compresses differently? The judges know. :)</p>
<h4 id="check-for-correctness">Check for correctness:</h4>
<pre><code> zcat guidelines.txt.Z &gt; guidelines2.txt
diff -s guidelines.txt guidelines2.txt</code></pre>
<p>Of course you can also use <a href="../../2015/mills2/mills2.c">2015/mills2</a> instead of
<p>Of course you can also use <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/mills2/mills2.c">2015/mills2</a> instead of
<code>zcat</code> to verify the output file. The achieved compression ratio roughly matches
that of the classic Unix <code>compress(1)</code> tool. And the source code is very
compressed, too: It has exactly the same size as the paragraph you are reading
+5 -5
View File
@@ -1,4 +1,4 @@
## To build:
%%REPO_URL%%/2019/lynn/## To build:
``` <!---sh-->
make
@@ -35,8 +35,8 @@ the program and the script.
## Judges' remarks:
[1991/davidguy](../../1991/davidguy/index.html),
[2011/blakely](../../2011/blakely/index.html), ...
[1991/davidguy](%%REPO_URL%%/1991/davidguy/index.html),
[2011/blakely](%%REPO_URL%%/2011/blakely/index.html), ...
...This entry likely concludes the IOCCC category "Cellular automata simulators";
it would be very hard to beat it on its field.
@@ -135,7 +135,7 @@ is the current macrocell (`L`) and which zoom Scale you are watching (`S`).
This entry is quite portable hopefully on most modern platforms. It assumes X
Window support of course. More than 2GB of memory is recommended. Configuration
through [Makefile](Makefile) is provided for the display windows size and for
through [Makefile](%%REPO_URL%%/2019/dogon/Makefile) is provided for the display windows size and for
the memory usage. The Makefile provided configuration (`Z=0x20000000`) will need a
system with 4GB DRAM to run nicely. There are several other salient assumptions
though:
@@ -228,7 +228,7 @@ includes some famous name dropping and documents itself as usual.
### Further spoilers, engineering, and obfuscation galore:
Those wait for you, curious and intrepid reader, in the attached
[apholife.c](apholife.c) file, which is a partially obfuscated version of the
[apholife.c](%%REPO_URL%%/2019/ciura/apholife.c) file, which is a partially obfuscated version of the
program I wrote with a lot of helpful annotations and comments for myself and
posterity, revealing some of the magic under the hood. This program is also a
somewhat improved version which uses `ldexp()`s in the draw routine and has
+5 -5
View File
@@ -377,7 +377,7 @@ Location: <a href="../../location.html#IL">IL</a> - <em>State of Israel</em> (<e
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- BEFORE: 1st line of markdown file: 2019/dogon/README.md -->
<h2 id="to-build">To build:</h2>
<p>https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/lynn/## To build:</p>
<pre><code> make</code></pre>
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
<p>The current status of this entry is:</p>
@@ -390,8 +390,8 @@ Location: <a href="../../location.html#IL">IL</a> - <em>State of Israel</em> (<e
<p>Make sure that you keep focus of windows in mind when going back and forth to
the program and the script.</p>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p><a href="../../1991/davidguy/index.html">1991/davidguy</a>,
<a href="../../2011/blakely/index.html">2011/blakely</a>, …</p>
<p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1991/davidguy/index.html">1991/davidguy</a>,
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2011/blakely/index.html">2011/blakely</a>, …</p>
<p>…This entry likely concludes the IOCCC category “Cellular automata simulators”;
it would be very hard to beat it on its field.</p>
<p>FYI: The <code>.mc</code> extension stands for <code>Golly macrocell</code> format.</p>
@@ -469,7 +469,7 @@ is the current macrocell (<code>L</code>) and which zoom Scale you are watching
<h3 id="portability-issues">Portability issues</h3>
<p>This entry is quite portable hopefully on most modern platforms. It assumes X
Window support of course. More than 2GB of memory is recommended. Configuration
through <a href="Makefile">Makefile</a> is provided for the display windows size and for
through <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/dogon/Makefile">Makefile</a> is provided for the display windows size and for
the memory usage. The Makefile provided configuration (<code>Z=0x20000000</code>) will need a
system with 4GB DRAM to run nicely. There are several other salient assumptions
though:</p>
@@ -543,7 +543,7 @@ character juxtaposed against a very ancient one, not to mention the program
includes some famous name dropping and documents itself as usual.</p>
<h3 id="further-spoilers-engineering-and-obfuscation-galore">Further spoilers, engineering, and obfuscation galore:</h3>
<p>Those wait for you, curious and intrepid reader, in the attached
<a href="apholife.c">apholife.c</a> file, which is a partially obfuscated version of the
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/ciura/apholife.c">apholife.c</a> file, which is a partially obfuscated version of the
program I wrote with a lot of helpful annotations and comments for myself and
posterity, revealing some of the magic under the hood. This program is also a
somewhat improved version which uses <code>ldexp()</code>s in the draw routine and has
+5 -5
View File
@@ -91,7 +91,7 @@ directory which you'll have to delete manually. This is also discussed in
## Alternate code:
An alternate version of this entry, [prog.alt.c](prog.alt.c), is provided. This
An alternate version of this entry, [prog.alt.c](%%REPO_URL%%/2019/duble/prog.alt.c), is provided. This
alternate code might not work as well in macOS.
@@ -228,9 +228,9 @@ IMPORTANT NOTES:
so any peer reaching the session should have a terminal with the same
size or larger.
### [prog.c](prog.c) vs [prog.alt.c](prog.alt.c)
### [prog.c](%%REPO_URL%%/2019/duble/prog.c) vs [prog.alt.c](%%REPO_URL%%/2019/duble/prog.alt.c)
The file [prog.alt.c](prog.alt.c) is the one I submitted.
The file [prog.alt.c](%%REPO_URL%%/2019/duble/prog.alt.c) is the one I submitted.
The judges proposed a small update: the program was using macro `FD_SET` inside an
expression, which breaks compilation on macOS. Wrapping this macro into a
@@ -240,13 +240,13 @@ However, that was not enough to make the program work on macOS. If you analyse
the program you will see that it heavily relies on OS resources. And, for this
first version of the program, you even needed to increase default `sysctl`
parameters to make it work on FreeBSD (this was the purpose of file
[check-os.sh](check-os.sh)). I tried hard to tune macOS the same, but failed.
[check-os.sh](%%REPO_URL%%/2019/duble/check-os.sh)). I tried hard to tune macOS the same, but failed.
The simple fact the Judges proposed this update meant they wish it could work on
Mac. And if the judges wish something, it **has to** be done. ;) So I
refactored a little more the program to reduce OS resources consumption. Or
maybe not reduce consumption, but consume them differently... And I obtained
[prog.c](prog.c). With this version, no need to touch `sysctl` parameters, and
[prog.c](%%REPO_URL%%/2019/duble/prog.c). With this version, no need to touch `sysctl` parameters, and
it works on macOS too! I must confess it was challenging to remain below the
size limit with this little change.
+5 -5
View File
@@ -422,7 +422,7 @@ in the beginning this will also happen. This is discussed in
directory which you’ll have to delete manually. This is also discussed in
<a href="../../bugs.html#2019_duble">2019 duble bugs</a>.</p>
<h2 id="alternate-code">Alternate code:</h2>
<p>An alternate version of this entry, <a href="prog.alt.c">prog.alt.c</a>, is provided. This
<p>An alternate version of this entry, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/duble/prog.alt.c">prog.alt.c</a>, is provided. This
alternate code might not work as well in macOS.</p>
<h3 id="alternate-build">Alternate build:</h3>
<pre><code> make alt</code></pre>
@@ -510,8 +510,8 @@ with a different size!</strong></li>
so any peer reaching the session should have a terminal with the same
size or larger.</li>
</ul>
<h3 id="prog.c-vs-prog.alt.c"><a href="prog.c">prog.c</a> vs <a href="prog.alt.c">prog.alt.c</a></h3>
<p>The file <a href="prog.alt.c">prog.alt.c</a> is the one I submitted.</p>
<h3 id="prog.c-vs-prog.alt.c"><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/duble/prog.c">prog.c</a> vs <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/duble/prog.alt.c">prog.alt.c</a></h3>
<p>The file <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/duble/prog.alt.c">prog.alt.c</a> is the one I submitted.</p>
<p>The judges proposed a small update: the program was using macro <code>FD_SET</code> inside an
expression, which breaks compilation on macOS. Wrapping this macro into a
function was enough to fix this compilation issue.</p>
@@ -519,12 +519,12 @@ function was enough to fix this compilation issue.</p>
the program you will see that it heavily relies on OS resources. And, for this
first version of the program, you even needed to increase default <code>sysctl</code>
parameters to make it work on FreeBSD (this was the purpose of file
<a href="check-os.sh">check-os.sh</a>). I tried hard to tune macOS the same, but failed.</p>
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/duble/check-os.sh">check-os.sh</a>). I tried hard to tune macOS the same, but failed.</p>
<p>The simple fact the Judges proposed this update meant they wish it could work on
Mac. And if the judges wish something, it <strong>has to</strong> be done. ;) So I
refactored a little more the program to reduce OS resources consumption. Or
maybe not reduce consumption, but consume them differently… And I obtained
<a href="prog.c">prog.c</a>. With this version, no need to touch <code>sysctl</code> parameters, and
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/duble/prog.c">prog.c</a>. With this version, no need to touch <code>sysctl</code> parameters, and
it works on macOS too! I must confess it was challenging to remain below the
size limit with this little change.</p>
<!--
+1 -1
View File
@@ -35,7 +35,7 @@ If you have `gdb(1)` installed:
```
Note that in macOS installing `gdb(1)` takes multiple steps - it's not just a
matter of installing `gdb(1)` and that's that. The [try.sh](try.sh) script has
matter of installing `gdb(1)` and that's that. The [try.sh](%%REPO_URL%%/2019/endoh/try.sh) script has
only been tested with linux.
You might also wish to try:
+1 -1
View File
@@ -391,7 +391,7 @@ this entry because it is SUPPOSED to crash and it needs debugging symbols.</p>
<p>If you have <code>gdb(1)</code> installed:</p>
<pre><code> ./try.sh</code></pre>
<p>Note that in macOS installing <code>gdb(1)</code> takes multiple steps - it’s not just a
matter of installing <code>gdb(1)</code> and that’s that. The <a href="try.sh">try.sh</a> script has
matter of installing <code>gdb(1)</code> and that’s that. The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/endoh/try.sh">try.sh</a> script has
only been tested with linux.</p>
<p>You might also wish to try:</p>
<pre><code> gdb ./prog || lldb ./prog</code></pre>
+1 -1
View File
@@ -19,7 +19,7 @@
```
NOTE: `play`, which [try.sh](try.sh) uses, comes from SoX, the Swiss Army Knife
NOTE: `play`, which [try.sh](%%REPO_URL%%/2019/giles/try.sh) uses, comes from SoX, the Swiss Army Knife
of sound processing programs. If you don't have this installed, see [FAQ 3.10:
How do I compile and use an IOCCC entry that requires sound](../../faq.html#sox).
+1 -1
View File
@@ -383,7 +383,7 @@ Location: <a href="../../location.html#AU">AU</a> - <em>Commonwealth of Australi
<pre><code> ./prog infile.wav outfile.wav</code></pre>
<h2 id="try">Try:</h2>
<pre><code> ./try.sh</code></pre>
<p>NOTE: <code>play</code>, which <a href="try.sh">try.sh</a> uses, comes from SoX, the Swiss Army Knife
<p>NOTE: <code>play</code>, which <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/giles/try.sh">try.sh</a> uses, comes from SoX, the Swiss Army Knife
of sound processing programs. If you don’t have this installed, see <a href="../../faq.html#sox">FAQ 3.10:
How do I compile and use an IOCCC entry that requires sound</a>.</p>
<h2 id="judges-remarks">Judges’ remarks:</h2>
+8 -7
View File
@@ -70,7 +70,7 @@ Build the compiler:
#### Fibonacci numbers:
Test the compiler on [fib.hs](fib.hs):
Test the compiler on [fib.hs](%%REPO_URL%%/2019/lynn/fib.hs):
``` <!---sh-->
(./prog < fib.hs ; cat prog.c) > fib.c
@@ -78,7 +78,8 @@ Test the compiler on [fib.hs](fib.hs):
Compiling the output produces a binary that prints the 30th Fibonacci number.
The file [ghcfib.hs](ghcfib.hs) includes [fib.hs](fib.hs) with some glue code,
The file [ghcfib.hs](%%REPO_URL%%/2019/lynn/ghcfib.hs)
includes [fib.hs](%%REPO_URL%%/2019/lynn/fib.hs) with some glue code,
and shows GHC also accepts our subset of Haskell:
``` <!---sh-->
@@ -89,7 +90,7 @@ and shows GHC also accepts our subset of Haskell:
#### Self-hosting compiler:
To avoid spoiling this entry by revealing the original Haskell source, we
instead provide [hint.hs](hint.hs), the output of a certain stage of the
instead provide [hint.hs](%%REPO_URL%%/2019/lynn/hint.hs), the output of a certain stage of the
compiler when run on itself. This intermediate output is hopefully difficult to
understand, yet is accepted by our compiler:
@@ -102,7 +103,7 @@ understand, yet is accepted by our compiler:
The output program behaves like the compiler itself.
Unlike the original source from which it is derived, GHC fails to compile
[hint.hs](hint.hs). This is because values have been replaced with their [Scott
[hint.hs](%%REPO_URL%%/2019/lynn/hint.hs). This is because values have been replaced with their [Scott
encodings](https://en.wikipedia.org/wiki/Mogensen-Scott_encoding)
by this stage, which messes up type-checks; we'd need `equirecursive` types for
it to work.
@@ -110,7 +111,7 @@ it to work.
#### Regexes:
The file [lol.hs](lol.hs) contains an adaptation of [Doug McIlroy's elegant code from
The file [lol.hs](%%REPO_URL%%/2019/lynn/lol.hs) contains an adaptation of [Doug McIlroy's elegant code from
"Enumerating the strings of regular
languages"](https://www.cs.dartmouth.edu/~doug/nfa.pdf). We exercise it by
showing the first entries of the length-ordered list of all strings consisting
@@ -131,7 +132,7 @@ A GHC wrapper is provided:
### Strongly-connected components:
See [scc.hs](scc.hs) (and its GHC wrapper [ghcscc.hs](ghcscc.hs)) for an elegant
See [scc.hs](%%REPO_URL%%/2019/lynn/scc.hs) (and its GHC wrapper [ghcscc.hs](%%REPO_URL%%/2019/lynn/ghcscc.hs)) for an elegant
way to print the strongly-connected components of a graph in reverse topological
order.
@@ -280,7 +281,7 @@ represent the integer `n` with a term equivalent to `Y(BT)n`; it works because
* A sentinel in the heap often confused me, so ought to confuse others.
Other obfuscation techniques are better appreciated after decoding the
compiler. See [hint.hs](hint.hs).
compiler. See [hint.hs](%%REPO_URL%%/2019/lynn/hint.hs).
* Mercilessly point-free. Everything is a combinator.
* Scott encoding. Everything is a combinator.
+8 -7
View File
@@ -411,15 +411,16 @@ trace of those scary <code>unsafeThisAndThat</code> functions. All functions mus
<pre><code> cc -o prog prog.c</code></pre>
<h3 id="demos">Demos:</h3>
<h4 id="fibonacci-numbers">Fibonacci numbers:</h4>
<p>Test the compiler on <a href="fib.hs">fib.hs</a>:</p>
<p>Test the compiler on <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/lynn/fib.hs">fib.hs</a>:</p>
<pre><code> (./prog &lt; fib.hs ; cat prog.c) &gt; fib.c</code></pre>
<p>Compiling the output produces a binary that prints the 30th Fibonacci number.</p>
<p>The file <a href="ghcfib.hs">ghcfib.hs</a> includes <a href="fib.hs">fib.hs</a> with some glue code,
<p>The file <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/lynn/ghcfib.hs">ghcfib.hs</a>
includes <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/lynn/fib.hs">fib.hs</a> with some glue code,
and shows GHC also accepts our subset of Haskell:</p>
<pre><code> ghc ghcfib.hs</code></pre>
<h4 id="self-hosting-compiler">Self-hosting compiler:</h4>
<p>To avoid spoiling this entry by revealing the original Haskell source, we
instead provide <a href="hint.hs">hint.hs</a>, the output of a certain stage of the
instead provide <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/lynn/hint.hs">hint.hs</a>, the output of a certain stage of the
compiler when run on itself. This intermediate output is hopefully difficult to
understand, yet is accepted by our compiler:</p>
<pre><code> (./prog &lt; hint.hs ; cat prog.c) &gt; hint.c
@@ -427,12 +428,12 @@ understand, yet is accepted by our compiler:</p>
./hint</code></pre>
<p>The output program behaves like the compiler itself.</p>
<p>Unlike the original source from which it is derived, GHC fails to compile
<a href="hint.hs">hint.hs</a>. This is because values have been replaced with their <a href="https://en.wikipedia.org/wiki/Mogensen-Scott_encoding">Scott
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/lynn/hint.hs">hint.hs</a>. This is because values have been replaced with their <a href="https://en.wikipedia.org/wiki/Mogensen-Scott_encoding">Scott
encodings</a>
by this stage, which messes up type-checks; we’d need <code>equirecursive</code> types for
it to work.</p>
<h4 id="regexes">Regexes:</h4>
<p>The file <a href="lol.hs">lol.hs</a> contains an adaptation of <a href="https://www.cs.dartmouth.edu/~doug/nfa.pdf">Doug McIlroy’s elegant code from
<p>The file <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/lynn/lol.hs">lol.hs</a> contains an adaptation of <a href="https://www.cs.dartmouth.edu/~doug/nfa.pdf">Doug McIlroy’s elegant code from
“Enumerating the strings of regular
languages”</a>. We exercise it by
showing the first entries of the length-ordered list of all strings consisting
@@ -443,7 +444,7 @@ of the characters <code>a</code> and <code>b</code> that contain an even number
<p>A GHC wrapper is provided:</p>
<pre><code> ghc ghclol.hs</code></pre>
<h3 id="strongly-connected-components">Strongly-connected components:</h3>
<p>See <a href="scc.hs">scc.hs</a> (and its GHC wrapper <a href="ghcscc.hs">ghcscc.hs</a>) for an elegant
<p>See <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/lynn/scc.hs">scc.hs</a> (and its GHC wrapper <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/lynn/ghcscc.hs">ghcscc.hs</a>) for an elegant
way to print the strongly-connected components of a graph in reverse topological
order.</p>
<pre><code> (./prog &lt; scc.hs ; cat prog.c) &gt; scc.c</code></pre>
@@ -547,7 +548,7 @@ represent the integer <code>n</code> with a term equivalent to <code>Y(BT)n</cod
<li>A sentinel in the heap often confused me, so ought to confuse others.</li>
</ul>
<p>Other obfuscation techniques are better appreciated after decoding the
compiler. See <a href="hint.hs">hint.hs</a>.</p>
compiler. See <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/lynn/hint.hs">hint.hs</a>.</p>
<ul>
<li>Mercilessly point-free. Everything is a combinator.</li>
<li>Scott encoding. Everything is a combinator.</li>
+3 -3
View File
@@ -162,7 +162,7 @@ White](https://www.glyphweb.com/arda/g/gandalf.html) and the [Judges of
the IOCCC](../../judges.html).
Output of `iocccsize`, using the [2019 version of
iocccsize](../../2019/iocccsize.c), is carefully selected. For
iocccsize](%%REPO_URL%%/2019/iocccsize.c), is carefully selected. For
the sake of clarity, I used single letter variables in the code. I also avoided
unnecessary use of functions. Like a
[tripundra](https://en.wikipedia.org/wiki/Tripundra), this program has three
@@ -261,7 +261,7 @@ arrays, so I did it.
[Cody Boone Ferguson](../../authors.html#Cody_Boone_Ferguson): I really like that you enjoyed my
previous entry. I hope that you will like this entry too. Because I did not
want to give too many clues to [the Judges](../../judges.html), I tried to write this
entry in a different way than [Most Stellar](../../2018/poikola/index.html), but in this
entry in a different way than [Most Stellar](%%REPO_URL%%/2018/poikola/index.html), but in this
code there is at least one recycled thing from it. By the way, the answers to
the questions I posed: (1) 255. (2) Try to compare binary representations of
those `float`s and binary representation of the string "`25th IOCCC!`". (3) I
@@ -278,7 +278,7 @@ not match anymore and `goto` jumps to the end of the code.
I see that one of the [Volker
Diels-Grabsch](../../authors.html#Volker_Diels-Grabsch)'s winning entries is
awarded the category [Most self-aware](../../2019/diels-grabsch2/prog.c). In last
awarded the category [Most self-aware](%%REPO_URL%%/2019/diels-grabsch2/prog.c). In last
year, my entry incorporates the [Fletcher's 16
algorithm](https://en.wikipedia.org/wiki/Fletcher%27s_checksum#Fletcher-16) to
ensure integrity of code. One of my first ideas for this year was to do the same
+3 -3
View File
@@ -454,7 +454,7 @@ who passed away on fourth of February 2019.</p>
<p>So, I followed the rules given by <a href="https://www.glyphweb.com/arda/g/gandalf.html">Gandalf the
White</a> and the <a href="../../judges.html">Judges of
the IOCCC</a>.</p>
<p>Output of <code>iocccsize</code>, using the <a href="../../2019/iocccsize.c">2019 version of
<p>Output of <code>iocccsize</code>, using the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/iocccsize.c">2019 version of
iocccsize</a>, is carefully selected. For
the sake of clarity, I used single letter variables in the code. I also avoided
unnecessary use of functions. Like a
@@ -521,7 +521,7 @@ arrays, so I did it.</p>
<p><a href="../../authors.html#Cody_Boone_Ferguson">Cody Boone Ferguson</a>: I really like that you enjoyed my
previous entry. I hope that you will like this entry too. Because I did not
want to give too many clues to <a href="../../judges.html">the Judges</a>, I tried to write this
entry in a different way than <a href="../../2018/poikola/index.html">Most Stellar</a>, but in this
entry in a different way than <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/poikola/index.html">Most Stellar</a>, but in this
code there is at least one recycled thing from it. By the way, the answers to
the questions I posed: (1) 255. (2) Try to compare binary representations of
those <code>float</code>s and binary representation of the string “<code>25th IOCCC!</code>”. (3) I
@@ -537,7 +537,7 @@ checksum</a> does
not match anymore and <code>goto</code> jumps to the end of the code.</p>
<p>I see that one of the <a href="../../authors.html#Volker_Diels-Grabsch">Volker
Diels-Grabsch</a>’s winning entries is
awarded the category <a href="../../2019/diels-grabsch2/prog.c">Most self-aware</a>. In last
awarded the category <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/diels-grabsch2/prog.c">Most self-aware</a>. In last
year, my entry incorporates the <a href="https://en.wikipedia.org/wiki/Fletcher%27s_checksum#Fletcher-16">Fletcher’s 16
algorithm</a> to
ensure integrity of code. One of my first ideas for this year was to do the same
+1 -1
View File
@@ -209,7 +209,7 @@ Verified to work and compiles without warnings on these environments:
I tried really hard to make `prog.c` fit in a 80x25 terminal without wrapping.
If I were not constrained by space, I would have made an ASCII art out of it.
[violet.c](violet.c) is that program, and also comes with the minor benefit of
[violet.c](%%REPO_URL%%/2019/yang/violet.c) is that program, and also comes with the minor benefit of
supporting lines longer than a million columns depending on `sizeof(int)`.
Violet is named after [Violet
+1 -1
View File
@@ -496,7 +496,7 @@ feeds (preserved) and tabs (expanded to 8 spaces).</p>
<h3 id="full-version">Full version</h3>
<p>I tried really hard to make <code>prog.c</code> fit in a 80x25 terminal without wrapping.
If I were not constrained by space, I would have made an ASCII art out of it.
<a href="violet.c">violet.c</a> is that program, and also comes with the minor benefit of
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2019/yang/violet.c">violet.c</a> is that program, and also comes with the minor benefit of
supporting lines longer than a million columns depending on <code>sizeof(int)</code>.</p>
<p>Violet is named after <a href="https://en.wikipedia.org/wiki/Violet_Evergarden">Violet
Evergarden</a> in the story with