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

+1 -1
View File
@@ -74,7 +74,7 @@ Rule 22, now known as "Catch 22" states:
to be Peter Honeyman, will be grounds for disqualification of your entry.
```
A number of other entries were based on [iocccsize.c](iocccsize.c), making
A number of other entries were based on [iocccsize.c](%%REPO_URL%%/2018/iocccsize.c), making
derivative works rather than original works.
Still other entries were too large, violating the first line of rule 2:
+25 -24
View File
@@ -158,7 +158,7 @@ These test cases were vital in debugging and regression testing, and provided a
determine which tool was correct when there were differences.
```
A version of this tool in more clearly written C ([tac.c](tac.c))
A version of this tool in more clearly written C
is presented for the Judge's consideration as a more accurate replacement for `iocccsize`.
This obfuscated entry is derived from (and compatible with) that code,
but due to obfuscation, has had some significant, deep changes for the contest.
@@ -166,10 +166,10 @@ determine which tool was correct when there were differences.
```
NB: `iocccsize` gets a different answer from `tac` on its own
([iocccsize.c](../../2018/iocccsize.c)) source code;
([iocccsize.c](%%REPO_URL%%/2018/iocccsize.c)) source code;
`tac` gets the correct answer. This is due to the aforementioned bugs within `iocccsize`,
proved by fixing
[iocccsize.c](../../2018/iocccsize.c) with the included patch, so `iocccsize` reports
[iocccsize.c](%%REPO_URL%%/2018/iocccsize.c) with the included patch, so `iocccsize` reports
the correct answer for itself.
### But wait... There's More!
@@ -219,7 +219,7 @@ This allows such additional programs in concert with the tool's primary operatio
A poor-man's de-obfuscator can be based upon the output of `tac -t` and a
handful of simple rules (and another use of the external keyword file). A more
refined version of this is included in the file [unob.sh](unob.sh), but the
refined version of this is included in the file [unob.sh](%%REPO_URL%%/2018/burton/unob.sh), but the
simple code below is a serviceable obfuscated C de-obfuscator in a _scripting
language_. It really is this easy with `tac`:
@@ -294,7 +294,7 @@ language_. It really is this easy with `tac`:
* The code describes its function by careful arrangement of variables up front...
* ...coupled with a description of the typical IOCCC contestant, or at least the author
* Why shouldn't trigraph parsing be written in trigraph?
* Where [iocccsize.c](../../2018/iocccsize.c) mocks, this code flaunts:
* Where [iocccsize.c](%%REPO_URL%%/2018/iocccsize.c) mocks, this code flaunts:
"_no matter how well you may think you understand this code, you don't, so don't mess with it. :-)_"
* `O,0,l,1` are used to confusing effect, local names obscure global names.
* Globals are used to pass information between routines: don't reorder "unrelated" statements....
@@ -316,7 +316,7 @@ using a different list. For instance: removing all the secondary keywords;
removing all the C11 keywords; trying just K&R C. Since C++ and Java share the
same operators as C, just change the keyword list and `tac` will correctly
tokenize both of these; the tokens `>>>` and `::` can be handled with a short
post-filter ([tokenfix.sh](tokenfix.sh), included).
post-filter ([tokenfix.sh](%%REPO_URL%%/2018/burton2/tokenfix.sh), included).
I believe this entry may also satisfy the request for gratuitous use of all the
C11 keywords? Whether this context satisfies "intended C language context" is a
@@ -326,20 +326,20 @@ the IOJCC trash can.
The following reserved word files are included:
* [kandr](kandr) from my venerable 1978 18th printing "The C Programming Language"
* [v7unix](v7unix) 7th edition Unix source code, extracted from c00.c
* [kandr2](kandr2) from my 1988 1st printing "The C Programming Language", 2e
* [ansi](ansi) ANSI X3.159-1989
* [c99](c99) ISO/IEC 9899:1999(E)
* [c11](c11) ISO/IEC 9899:201x(E) N1570
* [c++98](c++98) http://en.cppreference.com/w/cpp/keyword
* [c++11](c++11) ISO/IEC 14882:2011(E) N3337 2012-01-16
* [c++14](c++14) ISO/IEC 14882:2014(E) N4296 2014-11-09
* [java8](java8) <http://docs.oracle.com/javase/specs/index.html>
* [ioccc.kw.freq](ioccc.kw.freq) c11 + additional words, sorted on frequency of occurrence in IOCCC entries
* [kandr](%%REPO_URL%%/2018/burton/kandr) from my venerable 1978 18th printing "The C Programming Language"
* [v7unix](%%REPO_URL%%/2018/burton/v7unix) 7th edition Unix source code, extracted from c00.c
* [kandr2](%%REPO_URL%%/2018/burton/kandr2) from my 1988 1st printing "The C Programming Language", 2e
* [ansi](%%REPO_URL%%/2018/burton/ansi) ANSI X3.159-1989
* [c99](%%REPO_URL%%/2018/burton/c99) ISO/IEC 9899:1999(E)
* [c11](%%REPO_URL%%/2018/burton/c11) ISO/IEC 9899:201x(E) N1570
* [c++98](%%REPO_URL%%/2018/burton/c++98) http://en.cppreference.com/w/cpp/keyword
* [c++11](%%REPO_URL%%/2018/burton/c++11) ISO/IEC 14882:2011(E) N3337 2012-01-16
* [c++14](%%REPO_URL%%/2018/burton/c++14) ISO/IEC 14882:2014(E) N4296 2014-11-09
* [java8](%%REPO_URL%%/2018/burton/java8) <http://docs.oracle.com/javase/specs/index.html>
* [ioccc.kw.freq](%%REPO_URL%%/2018/burton/ioccc.kw.freq) c11 + additional words, sorted on frequency of occurrence in IOCCC entries
NB: The keyword file used in this code is derived from the list in [iocccsize.c](../../2018/iocccsize.c),
NB: The keyword file used in this code is derived from the list in [iocccsize.c](%%REPO_URL%%/2018/iocccsize.c),
which is neither complete (`#define`, `#ifndef`, `#undef` are missing
```
@@ -396,12 +396,13 @@ Thus:
### Coda:
[Cody Boone Ferguson](../../authors.html#Cody_Boone_Ferguson) was relentless in his pursuit of bugs.
Thanks to his reports, the version of [unob.sh](unob.sh) is stronger,
`tac` groks digraphs, [tokenfix.sh](tokenfix.sh) corrects for missing digraphs
in [prog.c](prog.c), and the program [manpage.sh](manpage.sh) was added to the corpus.
Thanks to his reports, the version of [unob.sh](%%REPO_URL%%/2018/burton2/unob.sh) is stronger,
`tac` groks digraphs, [tokenfix.sh](%%REPO_URL%%/2018/burton2/tokenfix.sh) corrects for missing digraphs
in [prog.c](%%REPO_URL%%/2018/burton/prog.c), and the program
[manpage.sh](%%REPO_URL%%/2018/burton/manpage.sh) was added to the corpus.
[manpage.sh](manpage.sh) is a useful program that turns ASCII versions of man
pages (e.g. [tac.man](tac.man)) into real man pages. It works for C and C-like
[manpage.sh](%%REPO_URL%%/2018/burton/manpage.sh) is a useful program that turns ASCII versions of man
pages (e.g. [tac.man](%%REPO_URL%%/2018/burton/tac.man)) into real man pages. It works for C and C-like
languages, command lines, and was designed to handle man page sections 1-8. It
works well on most inputs, but tends to need some raw nroff for more fancy
constructions, such as combined arguments (e.g. the `-r` and `-s` arguments to tac
@@ -419,7 +420,7 @@ Try:
```
NOTE: in 2023 the `tac.man` was updated to proper man format and renamed
[tac.1](tac.1).
[tac.1](%%REPO_URL%%/2018/burton/tac.1).
<!--
+25 -24
View File
@@ -482,16 +482,16 @@ whitespace surrounds English words, not necessarily C tokens, as in <code>a+=1;<
designed to allow exhaustive, hand-counted values for comparison with the tool values.
These test cases were vital in debugging and regression testing, and provided a way to
determine which tool was correct when there were differences.</p>
<pre><code> A version of this tool in more clearly written C ([tac.c](tac.c))
<pre><code> A version of this tool in more clearly written C
is presented for the Judge&#39;s consideration as a more accurate replacement for `iocccsize`.
This obfuscated entry is derived from (and compatible with) that code,
but due to obfuscation, has had some significant, deep changes for the contest.
Nevertheless, the more clearly written code remains a spoiler for this entry.</code></pre>
<p>NB: <code>iocccsize</code> gets a different answer from <code>tac</code> on its own
(<a href="../../2018/iocccsize.c">iocccsize.c</a>) source code;
(<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/iocccsize.c">iocccsize.c</a>) source code;
<code>tac</code> gets the correct answer. This is due to the aforementioned bugs within <code>iocccsize</code>,
proved by fixing
<a href="../../2018/iocccsize.c">iocccsize.c</a> with the included patch, so <code>iocccsize</code> reports
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/iocccsize.c">iocccsize.c</a> with the included patch, so <code>iocccsize</code> reports
the correct answer for itself.</p>
<h3 id="but-wait-theres-more">But wait… There’s More!</h3>
<p>There is no limit on line length, file length, comment length, or identifier length.</p>
@@ -523,7 +523,7 @@ keyword distribution over time. The top five for the decades:</p>
This allows such additional programs in concert with the tool’s primary operation.</p>
<p>A poor-man’s de-obfuscator can be based upon the output of <code>tac -t</code> and a
handful of simple rules (and another use of the external keyword file). A more
refined version of this is included in the file <a href="unob.sh">unob.sh</a>, but the
refined version of this is included in the file <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/unob.sh">unob.sh</a>, but the
simple code below is a serviceable obfuscated C de-obfuscator in a <em>scripting
language</em>. It really is this easy with <code>tac</code>:</p>
<pre><code> #!/usr/bin/env bash
@@ -589,7 +589,7 @@ Clang gets quite irate</em>.</p></li>
<li><p>The code describes its function by careful arrangement of variables up front…</p></li>
<li><p>…coupled with a description of the typical IOCCC contestant, or at least the author</p></li>
<li><p>Why shouldn’t trigraph parsing be written in trigraph?</p></li>
<li><p>Where <a href="../../2018/iocccsize.c">iocccsize.c</a> mocks, this code flaunts:
<li><p>Where <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/iocccsize.c">iocccsize.c</a> mocks, this code flaunts:
“<em>no matter how well you may think you understand this code, you don’t, so don’t mess with it. :-)</em>”</p></li>
<li><p><code>O,0,l,1</code> are used to confusing effect, local names obscure global names.</p></li>
<li><p>Globals are used to pass information between routines: don’t reorder “unrelated” statements….</p></li>
@@ -605,26 +605,26 @@ using a different list. For instance: removing all the secondary keywords;
removing all the C11 keywords; trying just K&amp;R C. Since C++ and Java share the
same operators as C, just change the keyword list and <code>tac</code> will correctly
tokenize both of these; the tokens <code>&gt;&gt;&gt;</code> and <code>::</code> can be handled with a short
post-filter (<a href="tokenfix.sh">tokenfix.sh</a>, included).</p>
post-filter (<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton2/tokenfix.sh">tokenfix.sh</a>, included).</p>
<p>I believe this entry may also satisfy the request for gratuitous use of all the
C11 keywords? Whether this context satisfies “intended C language context” is a
matter of interpretation. ;-) And <code>tac</code> is ready for the IOCCC++ contest. And
the IOJCC trash can.</p>
<p>The following reserved word files are included:</p>
<ul>
<li><a href="kandr">kandr</a> from my venerable 1978 18th printing “The C Programming Language”</li>
<li><a href="v7unix">v7unix</a> 7th edition Unix source code, extracted from c00.c</li>
<li><a href="kandr2">kandr2</a> from my 1988 1st printing “The C Programming Language”, 2e</li>
<li><a href="ansi">ansi</a> ANSI X3.159-1989</li>
<li><a href="c99">c99</a> ISO/IEC 9899:1999(E)</li>
<li><a href="c11">c11</a> ISO/IEC 9899:201x(E) N1570</li>
<li><a href="c++98">c++98</a> http://en.cppreference.com/w/cpp/keyword</li>
<li><a href="c++11">c++11</a> ISO/IEC 14882:2011(E) N3337 2012-01-16</li>
<li><a href="c++14">c++14</a> ISO/IEC 14882:2014(E) N4296 2014-11-09</li>
<li><a href="java8">java8</a> <a href="http://docs.oracle.com/javase/specs/index.html" class="uri">http://docs.oracle.com/javase/specs/index.html</a></li>
<li><a href="ioccc.kw.freq">ioccc.kw.freq</a> c11 + additional words, sorted on frequency of occurrence in IOCCC entries</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/kandr">kandr</a> from my venerable 1978 18th printing “The C Programming Language”</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/v7unix">v7unix</a> 7th edition Unix source code, extracted from c00.c</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/kandr2">kandr2</a> from my 1988 1st printing “The C Programming Language”, 2e</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/ansi">ansi</a> ANSI X3.159-1989</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/c99">c99</a> ISO/IEC 9899:1999(E)</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/c11">c11</a> ISO/IEC 9899:201x(E) N1570</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/c++98">c++98</a> http://en.cppreference.com/w/cpp/keyword</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/c++11">c++11</a> ISO/IEC 14882:2011(E) N3337 2012-01-16</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/c++14">c++14</a> ISO/IEC 14882:2014(E) N4296 2014-11-09</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/java8">java8</a> <a href="http://docs.oracle.com/javase/specs/index.html" class="uri">http://docs.oracle.com/javase/specs/index.html</a></li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/ioccc.kw.freq">ioccc.kw.freq</a> c11 + additional words, sorted on frequency of occurrence in IOCCC entries</li>
</ul>
<p>NB: The keyword file used in this code is derived from the list in <a href="../../2018/iocccsize.c">iocccsize.c</a>,
<p>NB: The keyword file used in this code is derived from the list in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/iocccsize.c">iocccsize.c</a>,
which is neither complete (<code>#define</code>, <code>#ifndef</code>, <code>#undef</code> are missing</p>
<pre><code>yes, Virginia knows about `#define` omitted on purpose</code></pre>
<p>nor correct (many more are added: <code>I</code>, <code>true</code>, <code>bool</code>, <code>compl</code>, …):</p>
@@ -659,11 +659,12 @@ NB: This is <em>not</em> a portability concern, the one string holds only printa
<pre><code> cc -ansi -Wall -trigraphs -Wno-trigraphs -Wno-parentheses -Wno-empty-body -Wno-char-subscripts -Wno-pointer-sign -DU=O -DW=\&quot;keywords\&quot; -o prog prog.c</code></pre>
<h3 id="coda">Coda:</h3>
<p><a href="../../authors.html#Cody_Boone_Ferguson">Cody Boone Ferguson</a> was relentless in his pursuit of bugs.
Thanks to his reports, the version of <a href="unob.sh">unob.sh</a> is stronger,
<code>tac</code> groks digraphs, <a href="tokenfix.sh">tokenfix.sh</a> corrects for missing digraphs
in <a href="prog.c">prog.c</a>, and the program <a href="manpage.sh">manpage.sh</a> was added to the corpus.</p>
<p><a href="manpage.sh">manpage.sh</a> is a useful program that turns ASCII versions of man
pages (e.g. <a href="tac.man">tac.man</a>) into real man pages. It works for C and C-like
Thanks to his reports, the version of <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton2/unob.sh">unob.sh</a> is stronger,
<code>tac</code> groks digraphs, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton2/tokenfix.sh">tokenfix.sh</a> corrects for missing digraphs
in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/prog.c">prog.c</a>, and the program
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/manpage.sh">manpage.sh</a> was added to the corpus.</p>
<p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/manpage.sh">manpage.sh</a> is a useful program that turns ASCII versions of man
pages (e.g. <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/tac.man">tac.man</a>) into real man pages. It works for C and C-like
languages, command lines, and was designed to handle man page sections 1-8. It
works well on most inputs, but tends to need some raw nroff for more fancy
constructions, such as combined arguments (e.g. the <code>-r</code> and <code>-s</code> arguments to tac
@@ -676,7 +677,7 @@ are not recognised when written as <code>-rs</code> in prose).</p>
./manpage.sh -h | ./manpage.sh -R | less
./manpage.sh -h | ./manpage.sh -P | lpr</code></pre>
<p>NOTE: in 2023 the <code>tac.man</code> was updated to proper man format and renamed
<a href="tac.1">tac.1</a>.</p>
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/burton/tac.1">tac.1</a>.</p>
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+6 -6
View File
@@ -25,7 +25,7 @@ below for more details.
## Alternate code:
An alternate version of this entry, [prog.alt.c](prog.alt.c), is provided. As
An alternate version of this entry, [prog.alt.c](%%REPO_URL%%/2018/ciura/prog.alt.c), is provided. As
mentioned in the author's [remarks](#remarks), the alternate version lacks a
useful bug fix.
@@ -48,14 +48,14 @@ Use `prog.alt` as you would `prog` above.
./try.alt.sh
```
Do you spot the fix by running both [try.sh](try.sh) and
[try.alt.sh](try.alt.sh)?
Do you spot the fix by running both [try.sh](%%REPO_URL%%/2018/ciura/try.sh) and
[try.alt.sh](%%REPO_URL%%/2018/ciura/try.alt.sh)?
## Judges' remarks:
This text was processed by `prog`. You may get confused. We're not really sure:
[prog.c](prog.c) wasn't commented. Who has been thoroughly puzzled by `prog`?
[prog.c](%%REPO_URL%%/2018/ciura/prog.c) wasn't commented. Who has been thoroughly puzzled by `prog`?
Also how obfuscated is `prog`? Having been written in C, how large of a
vocabulary has it?
@@ -258,8 +258,8 @@ Return `abbreviation`.
### Remarks:
The judges found a bug in the handling of contractions: [prog.alt.c](prog.alt.c)
outputs "foo wasn'**[t bazzed]**". I fixed the bug in [prog.c](prog.c), making
The judges found a bug in the handling of contractions: [prog.alt.c](%%REPO_URL%%/2018/ciura/prog.alt.c)
outputs "foo wasn'**[t bazzed]**". I fixed the bug in [prog.c](%%REPO_URL%%/2018/ciura/prog.c), making
it output "foo **[wasn't bazzed]**" instead, and took the liberty to merge
one statement into a `for` loop inside its `main()` function.
+6 -6
View File
@@ -387,7 +387,7 @@ below for more details.</p>
<h2 id="try">Try:</h2>
<pre><code> ./try.sh</code></pre>
<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. As
<p>An alternate version of this entry, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/ciura/prog.alt.c">prog.alt.c</a>, is provided. As
mentioned in the author’s <a href="#remarks">remarks</a>, the alternate version lacks a
useful bug fix.</p>
<h3 id="alternate-build">Alternate build:</h3>
@@ -396,11 +396,11 @@ useful bug fix.</p>
<p>Use <code>prog.alt</code> as you would <code>prog</code> above.</p>
<h3 id="alternate-try">Alternate try:</h3>
<pre><code> ./try.alt.sh</code></pre>
<p>Do you spot the fix by running both <a href="try.sh">try.sh</a> and
<a href="try.alt.sh">try.alt.sh</a>?</p>
<p>Do you spot the fix by running both <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/ciura/try.sh">try.sh</a> and
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/ciura/try.alt.sh">try.alt.sh</a>?</p>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>This text was processed by <code>prog</code>. You may get confused. We’re not really sure:
<a href="prog.c">prog.c</a> wasn’t commented. Who has been thoroughly puzzled by <code>prog</code>?
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/ciura/prog.c">prog.c</a> wasn’t commented. Who has been thoroughly puzzled by <code>prog</code>?
Also how obfuscated is <code>prog</code>? Having been written in C, how large of a
vocabulary has it?</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
@@ -578,8 +578,8 @@ in the byte. Return <code>adverb</code>.</li>
Return <code>abbreviation</code>.</li>
</ul>
<h3 id="remarks">Remarks:</h3>
<p>The judges found a bug in the handling of contractions: <a href="prog.alt.c">prog.alt.c</a>
outputs “foo wasn’<strong>[t bazzed]</strong>”. I fixed the bug in <a href="prog.c">prog.c</a>, making
<p>The judges found a bug in the handling of contractions: <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/ciura/prog.alt.c">prog.alt.c</a>
outputs “foo wasn’<strong>[t bazzed]</strong>”. I fixed the bug in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/ciura/prog.c">prog.c</a>, making
it output “foo <strong>[wasn’t bazzed]</strong>” instead, and took the liberty to merge
one statement into a <code>for</code> loop inside its <code>main()</code> function.</p>
<p>The program uses a 9,437,187-byte buffer so it probably will not run
+1 -1
View File
@@ -41,7 +41,7 @@ The "_Python_" in the award name refers to Monty Python, **not** the
[programming language Python](https://en.wikipedia.org/wiki/Python_(programming_language)
(the name of the programming language Python is derived from Monty Python).
The shape of [prog.c](prog.c) is "Undead Parrot" based on "dead parrot". The
The shape of [prog.c](%%REPO_URL%%/2018/endoh2prog.c) is "Undead Parrot" based on "dead parrot". The
message that appears in the bottom line of the output source code is the subject
of the dialogue that appears in "Dead Parrot" and explains in various
expressions that the parrot died. Also, the second **__<-_Source_of_Parrots__**
+1 -1
View File
@@ -399,7 +399,7 @@ sitcom <a href="https://en.wikipedia.org/wiki/Monty_Python%27s_Flying_Circus">
The “<em>Python</em>” in the award name refers to Monty Python, <strong>not</strong> the
[programming language Python](https://en.wikipedia.org/wiki/Python_(programming_language)
(the name of the programming language Python is derived from Monty Python).</p>
<p>The shape of <a href="prog.c">prog.c</a> is “Undead Parrot” based on “dead parrot”. The
<p>The shape of <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/endoh2prog.c">prog.c</a> is “Undead Parrot” based on “dead parrot”. The
message that appears in the bottom line of the output source code is the subject
of the dialogue that appears in “Dead Parrot” and explains in various
expressions that the parrot died. Also, the second **__&lt;-_Source_of_Parrots__**
+8 -8
View File
@@ -29,9 +29,9 @@ monkey Eric. See [Alternate code](#alternate-code) below.
./monkey-words.sh
```
NOTE: the [try.sh](try.sh) script will run the other two scripts but if the
first one, [id.sh](id.sh) is terminated early in the try script, the second one,
[monkey-words.sh](monkey-words.sh) will not be run.
NOTE: the [try.sh](%%REPO_URL%%/2018/ferguson/try.sh) script will run the other two scripts but if the
first one, [id.sh](%%REPO_URL%%/2018/ferguson/id.sh) is terminated early in the try script, the second one,
[monkey-words.sh](%%REPO_URL%%/2018/ferguson/monkey-words.sh) will not be run.
You can reconfigure certain values. These are described by the author in more
detail in the [S, M and N Constants](#constants) section. The script above will
@@ -71,9 +71,9 @@ Use `weasel.alt` as you would `weasel` above.
./monkey-words.alt.sh
```
NOTE: the [try.alt.sh](try.alt.sh) script will run the other two scripts but if the
first one, [id.alt.sh](id.alt.sh) is terminated early in the try script, the second one,
[monkey-words.alt.sh](monkey-words.alt.sh) will not be run.
NOTE: the [try.alt.sh](%%REPO_URL%%/2018/ferguson/try.alt.sh) script will run the other two scripts but if the
first one, [id.alt.sh](%%REPO_URL%%/2018/ferguson/id.alt.sh) is terminated early in the try script, the second one,
[monkey-words.alt.sh](%%REPO_URL%%/2018/ferguson/monkey-words.alt.sh) will not be run.
You can reconfigure certain values. These are described by the author in more
detail in the [S, M and N Constants](#constants) section. The script above will
@@ -225,7 +225,7 @@ operative phrase is *given enough time*; but even if it's extremely unlikely
monkey; I thought the monkey had it too easy: unlike his limited keyboard I have
(besides space) every character in the ASCII range `0<=126` that
`isprint()` returns non-zero except that only capital letters are included;
the file [prog.alt.c](prog.alt.c) has a slightly smaller keyboard. There are some
the file [prog.alt.c](%%REPO_URL%%/2018/ferguson/prog.alt.c) has a slightly smaller keyboard. There are some
additional features I have added (including two Easter eggs); amongst others:
ability to change the target string and maximum length. See
**[How it works](#how)**, **[Hints](#hints)** and **[How to build](#build)** for
@@ -1358,7 +1358,7 @@ Finally I would like to thank my mother for being the best mum anyone could ask
for, who's always been here for me and whom I also inherit the keen analytical
mind from. I love you all!
I want to also thank [Dave Burton](../../authors#Dave_Burton) for acknowledging me in
I want to also thank [Dave Burton](../../authors.html#Dave_Burton) for acknowledging me in
his [Dave Burton]((../../authors.html#Dave_Burton) for his [2018/burton2](../burton2/index.html)
entry for as he put it 'being relentless with pursuit of bugs'. To think that it
was circumstantial to my entry too makes it all the more unlikely but that
+8 -8
View File
@@ -393,9 +393,9 @@ monkey Eric. See <a href="#alternate-code">Alternate code</a> below.</p>
# For those who want to see if Eric the monkey can type the word &#39;words&#39; before
# falling asleep or giving up:
./monkey-words.sh</code></pre>
<p>NOTE: the <a href="try.sh">try.sh</a> script will run the other two scripts but if the
first one, <a href="id.sh">id.sh</a> is terminated early in the try script, the second one,
<a href="monkey-words.sh">monkey-words.sh</a> will not be run.</p>
<p>NOTE: the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/ferguson/try.sh">try.sh</a> script will run the other two scripts but if the
first one, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/ferguson/id.sh">id.sh</a> is terminated early in the try script, the second one,
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/ferguson/monkey-words.sh">monkey-words.sh</a> will not be run.</p>
<p>You can reconfigure certain values. These are described by the author in more
detail in the <a href="#constants">S, M and N Constants</a> section. The script above will
make use of some of these.</p>
@@ -417,9 +417,9 @@ about this under the <a href="#keyboards">keyboards</a> section, briefly referre
# For those who want to see if Eric the monkey can type the word &#39;words&#39; before
# falling asleep or giving up:
./monkey-words.alt.sh</code></pre>
<p>NOTE: the <a href="try.alt.sh">try.alt.sh</a> script will run the other two scripts but if the
first one, <a href="id.alt.sh">id.alt.sh</a> is terminated early in the try script, the second one,
<a href="monkey-words.alt.sh">monkey-words.alt.sh</a> will not be run.</p>
<p>NOTE: the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/ferguson/try.alt.sh">try.alt.sh</a> script will run the other two scripts but if the
first one, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/ferguson/id.alt.sh">id.alt.sh</a> is terminated early in the try script, the second one,
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/ferguson/monkey-words.alt.sh">monkey-words.alt.sh</a> will not be run.</p>
<p>You can reconfigure certain values. These are described by the author in more
detail in the <a href="#constants">S, M and N Constants</a> section. The script above will
make use of some of these.</p>
@@ -530,7 +530,7 @@ operative phrase is <em>given enough time</em>; but even if it’s extremely unl
monkey; I thought the monkey had it too easy: unlike his limited keyboard I have
(besides space) every character in the ASCII range <code>0&lt;=126</code> that
<code>isprint()</code> returns non-zero except that only capital letters are included;
the file <a href="prog.alt.c">prog.alt.c</a> has a slightly smaller keyboard. There are some
the file <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/ferguson/prog.alt.c">prog.alt.c</a> has a slightly smaller keyboard. There are some
additional features I have added (including two Easter eggs); amongst others:
ability to change the target string and maximum length. See
<strong><a href="#how">How it works</a></strong>, <strong><a href="#hints">Hints</a></strong> and <strong><a href="#build">How to build</a></strong> for
@@ -1321,7 +1321,7 @@ and don’t you forget it! &lt;3</p>
<p>Finally I would like to thank my mother for being the best mum anyone could ask
for, who’s always been here for me and whom I also inherit the keen analytical
mind from. I love you all!</p>
<p>I want to also thank <a href="../../authors#Dave_Burton">Dave Burton</a> for acknowledging me in
<p>I want to also thank <a href="../../authors.html#Dave_Burton">Dave Burton</a> for acknowledging me in
his [Dave Burton]((../../authors.html#Dave_Burton) for his <a href="../burton2/index.html">2018/burton2</a>
entry for as he put it ‘being relentless with pursuit of bugs’. To think that it
was circumstantial to my entry too makes it all the more unlikely but that
+1 -1
View File
@@ -411,7 +411,7 @@ and 22 (one third of 666).</p>
Identifying yourself, in an obvious way in your code, data, remarks
or program output, unless you are Peter Honeyman or pretending
to be Peter Honeyman, will be grounds for disqualification of your entry.</code></pre>
<p>A number of other entries were based on <a href="iocccsize.c">iocccsize.c</a>, making
<p>A number of other entries were based on <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/iocccsize.c">iocccsize.c</a>, making
derivative works rather than original works.</p>
<p>Still other entries were too large, violating the first line of rule 2:</p>
<pre><code> 2) The size of your program source must be &lt;= 4096 bytes in length.</code></pre>
+3 -3
View File
@@ -526,10 +526,10 @@ contest scheduling, I chose not to wait for the actual 50th anniversary).
I had thought of writing self-hosting compilers for a stripped-down version of
C, or maybe even a version of the B language... At the same time, I was
obsessed with the idea of allowing [mullender.c from
1984](../../1984/mullender/index.html) to run. Although
1984](%%REPO_URL%%/1984/mullender/index.html) to run. Although
that was still a possibility on an interpreted version of B or a stripped-down
version of C, it felt cheap, as it would be
[mullender.c](../../1984/mullender/mullender.c) only in spirit.
[mullender.c](%%REPO_URL%%/1984/mullender/mullender.c) only in spirit.
It was during this time that I discovered that in 2016, members of the Unix
Heritage Society got access to [printouts of assembly-language source for the
@@ -793,7 +793,7 @@ time...
<hr style="width:10%;text-align:left;margin-left:0">
[1]: ../../1984/mullender/mullender.c "mullender.c"
[1]: %%REPO_URL%%/1984/mullender/mullender.c "mullender.c"
[2]: http://minnie.tuhs.org/cgi-bin/utree.pl?file=2.9BSD "2.9 BSD"
[3]: https://www.bell-labs.com/usr/dmr/www/kbman.html "B Language"
[4]: https://www.bell-labs.com/usr/dmr/www/hist.html "UNIX history"
+3 -3
View File
@@ -516,7 +516,7 @@ Let’s try some:</p>
# bin/cc mullender.c
# ./a.out</code></pre>
<p>The program you’ve just run was the [winning entry of the first IOCCC contest from
1984] <a href="../../1984/mullender/mullender.c" title="mullender.c">1</a> (or was it 1894?), a personal favorite of mine. It is rather
1984] <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/mullender.c" title="mullender.c">1</a> (or was it 1894?), a personal favorite of mine. It is rather
tightly bound to running on either a PDP-11 or a VAX-11. Now you have one.</p>
<p>Hitting Control-C will return you to the BSD UNIX prompt. Hitting Control-D
will log you out of the single-user session and get you back to the <code>:login:</code>
@@ -748,11 +748,11 @@ emulator.</p>
contest scheduling, I chose not to wait for the actual 50th anniversary).
I had thought of writing self-hosting compilers for a stripped-down version of
C, or maybe even a version of the B language… At the same time, I was
obsessed with the idea of allowing <a href="../../1984/mullender/index.html">mullender.c from
obsessed with the idea of allowing <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/index.html">mullender.c from
1984</a> to run. Although
that was still a possibility on an interpreted version of B or a stripped-down
version of C, it felt cheap, as it would be
<a href="../../1984/mullender/mullender.c">mullender.c</a> only in spirit.</p>
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/mullender.c">mullender.c</a> only in spirit.</p>
<p>It was during this time that I discovered that in 2016, members of the Unix
Heritage Society got access to [printouts of assembly-language source for the
original version of UNIX] <a href="http://www.tuhs.org/Archive/Distributions/Research/McIlroy_v0/" title="V0 Scans">7</a>. With what was a [huge amount of work] <a href="https://web.archive.org/web/20180826162445/https://minnie.tuhs.org//Y5/wkt_hapop_paper.pdf" title="UNIX v0">8</a>,
+7 -7
View File
@@ -100,13 +100,13 @@ leading whitespaces:
Where this might be useful, besides ruining the formatting of certain
files, is that it completes the set of tools needed to solve the
puzzle that is embedded in [prog.c](prog.c).
puzzle that is embedded in [prog.c](%%REPO_URL%%/2018/yang/prog.c).
### Puzzle box:
Notice how the edges of [prog.c](prog.c) contain two notches. By rotating
[prog.c](prog.c) and removing leading space, the code would be shifted one space
Notice how the edges of [prog.c](%%REPO_URL%%/2018/yang/prog.c) contain two notches. By rotating
[prog.c](%%REPO_URL%%/2018/yang/prog.c) and removing leading space, the code would be shifted one space
toward one of those notches (and create a new notch on the other
side). This shifted code behaves slightly different from the original
program. For example, here are two more messages that can be
@@ -119,14 +119,14 @@ produced:
In total, there are 9 embedded strings that can be produced via a
sequence of rotates and shifts, one of which can be used to extract
the 10th final string from [prog.c](prog.c). The intent is to simulate those
the 10th final string from [prog.c](%%REPO_URL%%/2018/yang/prog.c). The intent is to simulate those
wooden puzzle boxes that can be opened by pushing and shifting various
well-concealed seams. Thus, finding the correct sequence of rotates
and shifts is left as an exercise to the reader (but if you are really
lazy, just read the [Makefile](Makefile)).
lazy, just read the [Makefile](%%REPO_URL%%/2018/yang/Makefile)).
Source code for all the tools needed to solve this puzzle are embedded
in [prog.c](prog.c), all you need is a C compiler.
in [prog.c](%%REPO_URL%%/2018/yang/prog.c), all you need is a C compiler.
### Features
@@ -142,7 +142,7 @@ but not limited to the "1125" at line 4 as opposed to "1025", to satisfy
- CRC32 of the code is embedded in the code itself.
- Process for writing [prog.c](prog.c) is available in
- Process for writing [prog.c](%%REPO_URL%%/2018/yang/prog.c) is available in
[spoiler.html](spoiler.html).
+7 -7
View File
@@ -433,10 +433,10 @@ leading whitespaces:</p>
./shift &lt; input.txt &gt; no_leading_space.txt</code></pre>
<p>Where this might be useful, besides ruining the formatting of certain
files, is that it completes the set of tools needed to solve the
puzzle that is embedded in <a href="prog.c">prog.c</a>.</p>
puzzle that is embedded in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/yang/prog.c">prog.c</a>.</p>
<h3 id="puzzle-box">Puzzle box:</h3>
<p>Notice how the edges of <a href="prog.c">prog.c</a> contain two notches. By rotating
<a href="prog.c">prog.c</a> and removing leading space, the code would be shifted one space
<p>Notice how the edges of <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/yang/prog.c">prog.c</a> contain two notches. By rotating
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/yang/prog.c">prog.c</a> and removing leading space, the code would be shifted one space
toward one of those notches (and create a new notch on the other
side). This shifted code behaves slightly different from the original
program. For example, here are two more messages that can be
@@ -445,13 +445,13 @@ produced:</p>
./shift &lt; prog.c | ./left &gt; msg2.c &amp;&amp; gcc msg2.c -o msg2 &amp;&amp; ./msg2</code></pre>
<p>In total, there are 9 embedded strings that can be produced via a
sequence of rotates and shifts, one of which can be used to extract
the 10th final string from <a href="prog.c">prog.c</a>. The intent is to simulate those
the 10th final string from <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/yang/prog.c">prog.c</a>. The intent is to simulate those
wooden puzzle boxes that can be opened by pushing and shifting various
well-concealed seams. Thus, finding the correct sequence of rotates
and shifts is left as an exercise to the reader (but if you are really
lazy, just read the <a href="Makefile">Makefile</a>).</p>
lazy, just read the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/yang/Makefile">Makefile</a>).</p>
<p>Source code for all the tools needed to solve this puzzle are embedded
in <a href="prog.c">prog.c</a>, all you need is a C compiler.</p>
in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/yang/prog.c">prog.c</a>, all you need is a C compiler.</p>
<h3 id="features">Features</h3>
<ul>
<li><p>Code compiles when rotated 4 ways. This required a bit of patience to
@@ -462,7 +462,7 @@ various tweaks to satisfy cases where the compiler is overly protective, includi
but not limited to the “1125” at line 4 as opposed to “1025”, to satisfy
<code>-Waggresive-loop-optimizations</code>.</p></li>
<li><p>CRC32 of the code is embedded in the code itself.</p></li>
<li><p>Process for writing <a href="prog.c">prog.c</a> is available in
<li><p>Process for writing <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2018/yang/prog.c">prog.c</a> is available in
<a href="spoiler.html">spoiler.html</a>.</p></li>
</ul>
<h3 id="compatibility">Compatibility:</h3>