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:
1 parent
b84f8cbe28
commit
e7d69bc232
175 files changed
+645
-631
No files matched your search
+1
-1
@@ -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
@@ -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
@@ -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'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&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>>>></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=\"keywords\" -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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__**
|
||||
|
||||
@@ -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 **__<-_Source_of_Parrots__**
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 'words' 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 'words' 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<=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! <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
@@ -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 <= 4096 bytes in length.</code></pre>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
@@ -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).
|
||||
|
||||
|
||||
|
||||
@@ -433,10 +433,10 @@ leading whitespaces:</p>
|
||||
./shift < input.txt > 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 < prog.c | ./left > msg2.c && gcc msg2.c -o msg2 && ./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>
|
||||
|
||||
Reference in new issue
Block a user