Fix html files in 2001
This also includes a few updates to the bugs file.
This commit is contained in:
1 parent
3da5bb9022
commit
515281417c
28 files changed
+264
-277
No files matched your search
@@ -6,7 +6,7 @@
|
||||
|
||||
The programs that this program is supposed to act on,
|
||||
[anonymous.ten.c](%%REPO_URL%%/2001/anonymous/anonymous.ten.c) and [anonymous.bed.c](%%REPO_URL%%/2001/anonymous/anonymous.bed.c),
|
||||
compiled with `make`, MUST be compiled as 32-bit ELF binaries. In the case that
|
||||
compiled with `make`, **MUST** be compiled as **32-bit ELF binaries**. In the case that
|
||||
this fails these programs will be compiled as 64-bit binaries as alternate code,
|
||||
`anonymous.ten.alt` and `anonymous.bed.alt`, ELF or otherwise. However trying to
|
||||
use the entry on these files will fail. See [Alternate code](#alternate-code)
|
||||
@@ -38,7 +38,7 @@ For more detailed information see [2001/anonymous in bugs.html](../../bugs.html#
|
||||
./anonymous anonymous.bed # if able to compile as a 32-bit (-m32) ELF binary
|
||||
```
|
||||
|
||||
NOTE: if the 32-bit version cannot be compiled the script will at least compile
|
||||
**NOTE**: if the 32-bit version cannot be compiled the script will at least compile
|
||||
[anonymous.ten](%%REPO_URL%%/2001/anonymous/anonymous.ten.c) as a 64-bit program (or whatever your system is
|
||||
set to) and run it directly.
|
||||
|
||||
@@ -196,7 +196,7 @@ global state, and the other doesn't.
|
||||
|
||||
There is also quite a nice trick where I wave a magic wand, and a chunk of code
|
||||
which should only be run when the program is run for the first time (setting the
|
||||
[PC / IP](https://en.wikipedia.org/wiki/Program_counter) to point at `main()`
|
||||
[PC/IP](https://en.wikipedia.org/wiki/Program_counter) to point at `main()`
|
||||
etc.) gets turned into a <del>frog</del>string. The C compiler sees a string by
|
||||
itself in the code, thinks "yup, that's a valid C expression", and quietly moves
|
||||
on to the next line of code.
|
||||
@@ -231,7 +231,7 @@ new set of switches, and the call to `execv(3)` asks for the newly compiled
|
||||
program to be executed. I would point out that almost every other entry to this
|
||||
competition also require a C compiler (well, the published winning entries at any rate,
|
||||
and I recognize that a few don't). There is little real difference between this
|
||||
program and one like last year's entry [dhyang](%%REPO_URL%%/2000/dhyang/dhyang.c); both are
|
||||
program and one like last year's entry [dhyang](../../2000/dhyang/index.html); both are
|
||||
just C programs that generate C code as their output.
|
||||
|
||||
Enjoy and thanks!
|
||||
|
||||
@@ -411,7 +411,7 @@ Location: <a href="../../location.html#GB">GB</a> - <em>United Kingdom of Great
|
||||
<pre><code> make</code></pre>
|
||||
<p>The programs that this program is supposed to act on,
|
||||
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/anonymous/anonymous.ten.c">anonymous.ten.c</a> and <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/anonymous/anonymous.bed.c">anonymous.bed.c</a>,
|
||||
compiled with <code>make</code>, MUST be compiled as 32-bit ELF binaries. In the case that
|
||||
compiled with <code>make</code>, <strong>MUST</strong> be compiled as <strong>32-bit ELF binaries</strong>. In the case that
|
||||
this fails these programs will be compiled as 64-bit binaries as alternate code,
|
||||
<code>anonymous.ten.alt</code> and <code>anonymous.bed.alt</code>, ELF or otherwise. However trying to
|
||||
use the entry on these files will fail. See <a href="#alternate-code">Alternate code</a>
|
||||
@@ -429,7 +429,7 @@ whatever your system will compile them as).</p>
|
||||
<pre><code> ./try.sh
|
||||
|
||||
./anonymous anonymous.bed # if able to compile as a 32-bit (-m32) ELF binary</code></pre>
|
||||
<p>NOTE: if the 32-bit version cannot be compiled the script will at least compile
|
||||
<p><strong>NOTE</strong>: if the 32-bit version cannot be compiled the script will at least compile
|
||||
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/anonymous/anonymous.ten.c">anonymous.ten</a> as a 64-bit program (or whatever your system is
|
||||
set to) and run it directly.</p>
|
||||
<p>What happens if the x86 program has already been modified by this program? The
|
||||
@@ -537,7 +537,7 @@ local variables which shadow global variables: so one modifies the
|
||||
global state, and the other doesn’t.</p>
|
||||
<p>There is also quite a nice trick where I wave a magic wand, and a chunk of code
|
||||
which should only be run when the program is run for the first time (setting the
|
||||
<a href="https://en.wikipedia.org/wiki/Program_counter">PC / IP</a> to point at <code>main()</code>
|
||||
<a href="https://en.wikipedia.org/wiki/Program_counter">PC/IP</a> to point at <code>main()</code>
|
||||
etc.) gets turned into a <del>frog</del>string. The C compiler sees a string by
|
||||
itself in the code, thinks “yup, that’s a valid C expression”, and quietly moves
|
||||
on to the next line of code.</p>
|
||||
@@ -564,7 +564,7 @@ new set of switches, and the call to <code>execv(3)</code> asks for the newly co
|
||||
program to be executed. I would point out that almost every other entry to this
|
||||
competition also require a C compiler (well, the published winning entries at any rate,
|
||||
and I recognize that a few don’t). There is little real difference between this
|
||||
program and one like last year’s entry <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2000/dhyang/dhyang.c">dhyang</a>; both are
|
||||
program and one like last year’s entry <a href="../../2000/dhyang/index.html">dhyang</a>; both are
|
||||
just C programs that generate C code as their output.</p>
|
||||
<p>Enjoy and thanks!</p>
|
||||
<!--
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
The current status of this entry is:
|
||||
|
||||
> **STATUS: INABIAF - please DO NOT fix**<br>
|
||||
> **STATUS: doesn't work with some platforms - please help us fix it**
|
||||
|
||||
For more detailed information see [2001/bellard in bugs.html](../../bugs.html#2001_bellard).
|
||||
|
||||
|
||||
@@ -412,8 +412,7 @@ Location: <a href="../../location.html#FR">FR</a> - <em>French Republic</em> (<e
|
||||
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
|
||||
<p>The current status of this entry is:</p>
|
||||
<blockquote>
|
||||
<p><strong>STATUS: INABIAF - please DO NOT fix</strong><br>
|
||||
<strong>STATUS: doesn’t work with some platforms - please help us fix it</strong></p>
|
||||
<p><strong>STATUS: INABIAF - please DO NOT fix</strong><br></p>
|
||||
</blockquote>
|
||||
<p>For more detailed information see <a href="../../bugs.html#2001_bellard">2001/bellard in bugs.html</a>.</p>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
|
||||
@@ -11,6 +11,12 @@
|
||||
./coupard
|
||||
```
|
||||
|
||||
**NOTE**: the author notes that you might want to convert the sound formats. For
|
||||
this you can use `SoX`. If you do not have this installed then see the
|
||||
FAQ on "[using entries that require sound](../../faq.html#sox)"
|
||||
for help.
|
||||
|
||||
|
||||
|
||||
## Try:
|
||||
|
||||
|
||||
@@ -411,6 +411,10 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
|
||||
<pre><code> make</code></pre>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<pre><code> ./coupard</code></pre>
|
||||
<p><strong>NOTE</strong>: the author notes that you might want to convert the sound formats. For
|
||||
this you can use <code>SoX</code>. If you do not have this installed then see the
|
||||
FAQ on “<a href="../../faq.html#sox">using entries that require sound</a>”
|
||||
for help.</p>
|
||||
<h2 id="try">Try:</h2>
|
||||
<pre><code> ./try.sh</code></pre>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@
|
||||
make
|
||||
```
|
||||
|
||||
There is an alternate version with vi(m) key movements. See [alternate
|
||||
code](#alternate code) below.
|
||||
There is an alternate version with vi(m) key movements. See [Alternate
|
||||
code](#alternate-code) below.
|
||||
|
||||
|
||||
## To use:
|
||||
|
||||
+1
-1
@@ -409,7 +409,7 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
|
||||
<!-- BEFORE: 1st line of markdown file: 2001/ctk/README.md -->
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<pre><code> make</code></pre>
|
||||
<p>There is an alternate version with vi(m) key movements. See <a href="#alternate%20code">alternate
|
||||
<p>There is an alternate version with vi(m) key movements. See <a href="#alternate-code">Alternate
|
||||
code</a> below.</p>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<pre><code> ./ctk</code></pre>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
make
|
||||
```
|
||||
|
||||
There is an alternate version based on the author's remarks. See [alternate
|
||||
There is an alternate version based on the author's remarks. See [Alternate
|
||||
code](#alternate-code) below for more details.
|
||||
|
||||
|
||||
@@ -221,13 +221,11 @@ this is not so.
|
||||
A: When compiled with `gcc -Wall`, the compiler generated the following
|
||||
warnings:
|
||||
|
||||
```
|
||||
suggest parentheses around + or - in operand of &
|
||||
array subscript has type 'char'
|
||||
return type defaults to 'int'
|
||||
control reaches end of non-void function
|
||||
value computed is not used
|
||||
```
|
||||
> suggest parentheses around `+` or `-` in operand of `&`<br>
|
||||
> array subscript has type '`char`'<br>
|
||||
> return type defaults to '`int`'<br>
|
||||
> control reaches end of non-void function<br>
|
||||
> value computed is not used
|
||||
|
||||
The `value computed is not used` warning happens because I use the `&&`
|
||||
operator and take advantage of short circuit evaluation instead of using
|
||||
@@ -248,7 +246,7 @@ appropriate sportsmanship for a program of this genre and can think of
|
||||
no worse job than trying to find an elusive bug in an intentionally
|
||||
obfuscated program.
|
||||
|
||||
[Judge's note: This was followed by a description of the bug, and
|
||||
[**Judges' note**: This was followed by a description of the bug, and
|
||||
the comment:]
|
||||
|
||||
Note, if this program wins, the author thinks it would be good to leave
|
||||
|
||||
@@ -409,7 +409,7 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
|
||||
<!-- BEFORE: 1st line of markdown file: 2001/dgbeards/README.md -->
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<pre><code> make</code></pre>
|
||||
<p>There is an alternate version based on the author’s remarks. See <a href="#alternate-code">alternate
|
||||
<p>There is an alternate version based on the author’s remarks. See <a href="#alternate-code">Alternate
|
||||
code</a> below for more details.</p>
|
||||
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
|
||||
<p>The current status of this entry is:</p>
|
||||
@@ -560,11 +560,13 @@ this is not so.</p>
|
||||
<h4 id="q-what-about-the-compiler-warnings">Q: What about the compiler warnings?</h4>
|
||||
<p>A: When compiled with <code>gcc -Wall</code>, the compiler generated the following
|
||||
warnings:</p>
|
||||
<pre><code> suggest parentheses around + or - in operand of &
|
||||
array subscript has type 'char'
|
||||
return type defaults to 'int'
|
||||
control reaches end of non-void function
|
||||
value computed is not used</code></pre>
|
||||
<blockquote>
|
||||
<p>suggest parentheses around <code>+</code> or <code>-</code> in operand of <code>&</code><br>
|
||||
array subscript has type ‘<code>char</code>’<br>
|
||||
return type defaults to ‘<code>int</code>’<br>
|
||||
control reaches end of non-void function<br>
|
||||
value computed is not used</p>
|
||||
</blockquote>
|
||||
<p>The <code>value computed is not used</code> warning happens because I use the <code>&&</code>
|
||||
operator and take advantage of short circuit evaluation instead of using
|
||||
an <code>if()</code> statement.</p>
|
||||
@@ -578,7 +580,7 @@ eliminate them and that can’t be done given the size limit.</p>
|
||||
appropriate sportsmanship for a program of this genre and can think of
|
||||
no worse job than trying to find an elusive bug in an intentionally
|
||||
obfuscated program.</p>
|
||||
<p>[Judge’s note: This was followed by a description of the bug, and
|
||||
<p>[<strong>Judges’ note</strong>: This was followed by a description of the bug, and
|
||||
the comment:]</p>
|
||||
<p>Note, if this program wins, the author thinks it would be good to leave
|
||||
this information out of the remarks and encourage others to try and
|
||||
|
||||
+26
-21
@@ -164,8 +164,8 @@ expected, and one more I is appended to the row.) Let's call it
|
||||
|
||||
Some explanations:
|
||||
- The tape alphabet is always O and I.
|
||||
- The states can be anything starting with "st". "start" and
|
||||
"stop" are the start and stop states, respectively.
|
||||
- The states can be anything starting with "`st`". "`start`" and
|
||||
"`stop`" are the start and stop states, respectively.
|
||||
- To define a state, use two lines: one for each letter on the
|
||||
tape. You may omit one of the lines if the Turing machine will
|
||||
never enter the state reading that letter. (In the example, the
|
||||
@@ -220,13 +220,13 @@ Tape:
|
||||
*
|
||||
```
|
||||
|
||||
and the return code will be 1. As you can see, the Turing machine
|
||||
and the return code will be `1`. As you can see, the Turing machine
|
||||
moved over the `O`s, but when it arrived at the `I` (still in state
|
||||
start), the error occurred.
|
||||
|
||||
Note that other kinds of errors can cause compilation to fail.
|
||||
If this happens, the build script will write the error message of
|
||||
gcc into a file called `error` and then exit.
|
||||
`gcc` into a file called `error` and then exit.
|
||||
|
||||
|
||||
### What the build script does
|
||||
@@ -238,7 +238,7 @@ beginning of the program; this is where the animation takes place
|
||||
(except in the first and last few steps).
|
||||
|
||||
However, there's a technical problem to overcome: Some compilers
|
||||
(including gcc) insert a lot of white space during the
|
||||
(including `gcc`) insert a lot of white space during the
|
||||
preprocessing. This is bad for two reasons. First, the animated
|
||||
picture won't look right. And second, after some time, the file
|
||||
will grow too big for your hard disk. (The amount of white space
|
||||
@@ -246,12 +246,12 @@ grows exponentially.) So after each preprocessing, the first thing
|
||||
the build script does is remove all the unnecessary white space
|
||||
using `sed`.
|
||||
|
||||
(gcc would even insert `#line` directives if I didn't suppress
|
||||
(`gcc` would even insert `#line` directives if I didn't suppress
|
||||
them with the `-P` option.)
|
||||
|
||||
### Some more details
|
||||
|
||||
- The arguments passed to the build script are passed on to gcc
|
||||
- The arguments passed to the build script are passed on to `gcc`
|
||||
with a `-D` before. I had a slight technical problem doing this
|
||||
(especially with the spaces that can appear within the tape
|
||||
argument). That made the build script a bit longer.
|
||||
@@ -266,8 +266,8 @@ lines of code.)
|
||||
`herrmann1-2.c` are generated.
|
||||
|
||||
- Also, a file `error` is generated. This file is removed after
|
||||
the compilation, except if gcc produced an error; then it contains
|
||||
the error message. (I can't let gcc output all its messages
|
||||
the compilation, except if `gcc` produced an error; then it contains
|
||||
the error message. (I can't let `gcc` output all its messages
|
||||
directly, because the warnings would clobber the animation. I
|
||||
could have made the compile script output the error file in case
|
||||
of an error, but I didn't want to make it yet longer.)
|
||||
@@ -318,9 +318,10 @@ to use many variables more than once.
|
||||
|
||||
- I couldn't refrain from doing a little bit of nasty stuff like
|
||||
|
||||
#define a 0&0
|
||||
#if !a
|
||||
|
||||
``` <!---c-->
|
||||
#define a 0&0
|
||||
#if !a
|
||||
```
|
||||
Of course, it is a bit more subtle, and even useful.
|
||||
|
||||
- The layout of the source code..., well, let's call it the
|
||||
@@ -330,9 +331,9 @@ indenting and modern art. There are even some comments...
|
||||
|
||||
### Compatibility
|
||||
|
||||
- It works with many versions of gcc. I tested it with versions
|
||||
- It works with many versions of `gcc`. I tested it with versions
|
||||
2.7.2.1, 2.8.1, 2.95.2, and ecgs-2.91.66. However, an old version
|
||||
of gcc produced "internal compiler errors" (obviously not my
|
||||
of `gcc` produced "internal compiler errors" (obviously not my
|
||||
fault).
|
||||
|
||||
- The only warnings I get tell me that I'm undefining `__FILE__` and
|
||||
@@ -356,21 +357,25 @@ script, so that one does not have to choose "preprocess" from
|
||||
the menu over and over again. I leave this as an exercise to the
|
||||
experienced Mac programmer.)
|
||||
|
||||
- In the build script, I passed the `-P` option to gcc to suppress
|
||||
- In the build script, I passed the `-P` option to `gcc` to suppress
|
||||
the insertion of `#line` directives. If your compiler doesn't
|
||||
support this option (and does insert `#line` directives), you
|
||||
should change the call to `sed` to remove them, too: Add
|
||||
|
||||
-e "/^#line/ d"
|
||||
``` <!---sed-->
|
||||
-e "/^#line/ d"
|
||||
```
|
||||
|
||||
to the sed parameters. Or, if your `#line` directives look like
|
||||
|
||||
# 15 "filename"
|
||||
to the `sed` parameters. Or, if your `#line` directives look like
|
||||
|
||||
``` <!---c-->
|
||||
# 15 "filename"
|
||||
```
|
||||
add
|
||||
|
||||
-e "/^# [0-9]/ d"
|
||||
|
||||
``` <!---sed-->
|
||||
-e "/^# [0-9]/ d"
|
||||
```
|
||||
instead.
|
||||
|
||||
- First, I had `-ansi -pedantic` turned on, but on some systems,
|
||||
|
||||
+28
-24
@@ -511,8 +511,8 @@ expected, and one more I is appended to the row.) Let’s call it
|
||||
#define st2_O I, left, stop</code></pre>
|
||||
<p>Some explanations:
|
||||
- The tape alphabet is always O and I.
|
||||
- The states can be anything starting with “st”. “start” and
|
||||
“stop” are the start and stop states, respectively.
|
||||
- The states can be anything starting with “<code>st</code>”. “<code>start</code>” and
|
||||
“<code>stop</code>” are the start and stop states, respectively.
|
||||
- To define a state, use two lines: one for each letter on the
|
||||
tape. You may omit one of the lines if the Turing machine will
|
||||
never enter the state reading that letter. (In the example, the
|
||||
@@ -541,12 +541,12 @@ line</p>
|
||||
<pre><code> *
|
||||
..OOOOOOOOIIIIOO..
|
||||
*</code></pre>
|
||||
<p>and the return code will be 1. As you can see, the Turing machine
|
||||
<p>and the return code will be <code>1</code>. As you can see, the Turing machine
|
||||
moved over the <code>O</code>s, but when it arrived at the <code>I</code> (still in state
|
||||
start), the error occurred.</p>
|
||||
<p>Note that other kinds of errors can cause compilation to fail.
|
||||
If this happens, the build script will write the error message of
|
||||
gcc into a file called <code>error</code> and then exit.</p>
|
||||
<code>gcc</code> into a file called <code>error</code> and then exit.</p>
|
||||
<h3 id="what-the-build-script-does">What the build script does</h3>
|
||||
<p>In principle, the build script simply runs the preprocessor over
|
||||
and over again, until nothing changes anymore; then, the program
|
||||
@@ -554,18 +554,18 @@ is compiled. After each preprocessing step, the script outputs the
|
||||
beginning of the program; this is where the animation takes place
|
||||
(except in the first and last few steps).</p>
|
||||
<p>However, there’s a technical problem to overcome: Some compilers
|
||||
(including gcc) insert a lot of white space during the
|
||||
(including <code>gcc</code>) insert a lot of white space during the
|
||||
preprocessing. This is bad for two reasons. First, the animated
|
||||
picture won’t look right. And second, after some time, the file
|
||||
will grow too big for your hard disk. (The amount of white space
|
||||
grows exponentially.) So after each preprocessing, the first thing
|
||||
the build script does is remove all the unnecessary white space
|
||||
using <code>sed</code>.</p>
|
||||
<p>(gcc would even insert <code>#line</code> directives if I didn’t suppress
|
||||
<p>(<code>gcc</code> would even insert <code>#line</code> directives if I didn’t suppress
|
||||
them with the <code>-P</code> option.)</p>
|
||||
<h3 id="some-more-details">Some more details</h3>
|
||||
<ul>
|
||||
<li><p>The arguments passed to the build script are passed on to gcc
|
||||
<li><p>The arguments passed to the build script are passed on to <code>gcc</code>
|
||||
with a <code>-D</code> before. I had a slight technical problem doing this
|
||||
(especially with the spaces that can appear within the tape
|
||||
argument). That made the build script a bit longer.</p></li>
|
||||
@@ -577,8 +577,8 @@ lines of code.)</p></li>
|
||||
<li><p>During the preprocessing, intermediate files <code>herrmann1-1.c</code> and
|
||||
<code>herrmann1-2.c</code> are generated.</p></li>
|
||||
<li><p>Also, a file <code>error</code> is generated. This file is removed after
|
||||
the compilation, except if gcc produced an error; then it contains
|
||||
the error message. (I can’t let gcc output all its messages
|
||||
the compilation, except if <code>gcc</code> produced an error; then it contains
|
||||
the error message. (I can’t let <code>gcc</code> output all its messages
|
||||
directly, because the warnings would clobber the animation. I
|
||||
could have made the compile script output the error file in case
|
||||
of an error, but I didn’t want to make it yet longer.)</p></li>
|
||||
@@ -620,19 +620,21 @@ produced, etc. If you want a real challenge, try to understand
|
||||
what the line <code>w j k(P ## x)</code> does.</p></li>
|
||||
<li><p>Due to the fact that our alphabet has only 53 ;-) letters, I had
|
||||
to use many variables more than once.</p></li>
|
||||
<li><p>I couldn’t refrain from doing a little bit of nasty stuff like</p>
|
||||
<pre><code> #define a 0&0
|
||||
#if !a</code></pre>
|
||||
<p>Of course, it is a bit more subtle, and even useful.</p></li>
|
||||
<li><p>The layout of the source code…, well, let’s call it the
|
||||
<li><p>I couldn’t refrain from doing a little bit of nasty stuff like</p></li>
|
||||
</ul>
|
||||
<pre><code> #define a 0&0
|
||||
#if !a</code></pre>
|
||||
<p>Of course, it is a bit more subtle, and even useful.</p>
|
||||
<ul>
|
||||
<li>The layout of the source code…, well, let’s call it the
|
||||
“modern art of programming” - a mixture of program-like
|
||||
indenting and modern art. There are even some comments…</p></li>
|
||||
indenting and modern art. There are even some comments…</li>
|
||||
</ul>
|
||||
<h3 id="compatibility">Compatibility</h3>
|
||||
<ul>
|
||||
<li><p>It works with many versions of gcc. I tested it with versions
|
||||
<li><p>It works with many versions of <code>gcc</code>. I tested it with versions
|
||||
2.7.2.1, 2.8.1, 2.95.2, and ecgs-2.91.66. However, an old version
|
||||
of gcc produced “internal compiler errors” (obviously not my
|
||||
of <code>gcc</code> produced “internal compiler errors” (obviously not my
|
||||
fault).</p></li>
|
||||
<li><p>The only warnings I get tell me that I’m undefining <code>__FILE__</code> and
|
||||
that preprocessing directives are not recognized within macro
|
||||
@@ -652,16 +654,18 @@ to write a kind of script which does the equivalent to the build
|
||||
script, so that one does not have to choose “preprocess” from
|
||||
the menu over and over again. I leave this as an exercise to the
|
||||
experienced Mac programmer.)</p></li>
|
||||
<li><p>In the build script, I passed the <code>-P</code> option to gcc to suppress
|
||||
<li><p>In the build script, I passed the <code>-P</code> option to <code>gcc</code> to suppress
|
||||
the insertion of <code>#line</code> directives. If your compiler doesn’t
|
||||
support this option (and does insert <code>#line</code> directives), you
|
||||
should change the call to <code>sed</code> to remove them, too: Add</p>
|
||||
<pre><code> -e "/^#line/ d"</code></pre>
|
||||
<p>to the sed parameters. Or, if your <code>#line</code> directives look like</p>
|
||||
<pre><code> # 15 "filename"</code></pre>
|
||||
should change the call to <code>sed</code> to remove them, too: Add</p></li>
|
||||
</ul>
|
||||
<pre><code> -e "/^#line/ d"</code></pre>
|
||||
<p>to the <code>sed</code> parameters. Or, if your <code>#line</code> directives look like</p>
|
||||
<pre><code> # 15 "filename"</code></pre>
|
||||
<p>add</p>
|
||||
<pre><code> -e "/^# [0-9]/ d"</code></pre>
|
||||
<p>instead.</p></li>
|
||||
<pre><code> -e "/^# [0-9]/ d"</code></pre>
|
||||
<p>instead.</p>
|
||||
<ul>
|
||||
<li><p>First, I had <code>-ansi -pedantic</code> turned on, but on some systems,
|
||||
the <code>stdio.h</code> is not compatible to that, so I turned it back off.</p></li>
|
||||
<li><p>The build script probably needs a bash to run in. So perhaps you
|
||||
|
||||
@@ -117,14 +117,6 @@ the game entertaining, see if you can find
|
||||
in the source code.)
|
||||
|
||||
|
||||
### NOTICE to those who wish for a greater challenge:
|
||||
|
||||
**If you want a greater challenge, don't read any further**:
|
||||
just try to understand the program via the source.
|
||||
|
||||
If you get stuck, come back and read below for additional hints and information.
|
||||
|
||||
|
||||
### GAME STRATEGY
|
||||
|
||||
The trick, of course, is to drop items in empty rooms to mark them. That way
|
||||
|
||||
@@ -487,10 +487,6 @@ the game entertaining, see if you can find</p>
|
||||
<pre><code> the fish scales Q)++j<
|
||||
the shooting star -~- ~ -~i +</code></pre>
|
||||
<p>in the source code.)</p>
|
||||
<h3 id="notice-to-those-who-wish-for-a-greater-challenge">NOTICE to those who wish for a greater challenge:</h3>
|
||||
<p><strong>If you want a greater challenge, don’t read any further</strong>:
|
||||
just try to understand the program via the source.</p>
|
||||
<p>If you get stuck, come back and read below for additional hints and information.</p>
|
||||
<h3 id="game-strategy">GAME STRATEGY</h3>
|
||||
<p>The trick, of course, is to drop items in empty rooms to mark them. That way
|
||||
you usually know if you’re in a room you’ve seen before. It greatly aids
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@
|
||||
```
|
||||
|
||||
There is another version which lets you use the arrow keys rather than the more
|
||||
awkward `,` and `.` keys. See [alternate code](#alternate-code) below.
|
||||
awkward `,` and `.` keys. See [Alternate code](#alternate-code) below.
|
||||
|
||||
|
||||
### Bugs and (Mis)features:
|
||||
@@ -25,7 +25,7 @@ For more detailed information see [2001/kev in bugs.html](../../bugs.html#2001_k
|
||||
./kev hostname # in another terminal
|
||||
```
|
||||
|
||||
NOTE: each player's paddle is at the bottom and the opponent at the top.
|
||||
**NOTE**: each player's paddle is at the bottom and the opponent at the top.
|
||||
|
||||
|
||||
## Try:
|
||||
|
||||
+2
-2
@@ -410,7 +410,7 @@ Location: <a href="../../location.html#AU">AU</a> - <em>Commonwealth of Australi
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<pre><code> make</code></pre>
|
||||
<p>There is another version which lets you use the arrow keys rather than the more
|
||||
awkward <code>,</code> and <code>.</code> keys. See <a href="#alternate-code">alternate code</a> below.</p>
|
||||
awkward <code>,</code> and <code>.</code> keys. See <a href="#alternate-code">Alternate code</a> below.</p>
|
||||
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
|
||||
<p>The current status of this entry is:</p>
|
||||
<blockquote>
|
||||
@@ -421,7 +421,7 @@ awkward <code>,</code> and <code>.</code> keys. See <a href="#alternate-code">al
|
||||
<pre><code> ./kev # in one terminal
|
||||
|
||||
./kev hostname # in another terminal</code></pre>
|
||||
<p>NOTE: each player’s paddle is at the bottom and the opponent at the top.</p>
|
||||
<p><strong>NOTE</strong>: each player’s paddle is at the bottom and the opponent at the top.</p>
|
||||
<h2 id="try">Try:</h2>
|
||||
<pre><code> ./kev # in one terminal
|
||||
|
||||
|
||||
+31
-31
@@ -64,36 +64,34 @@ Q: Are there types of entries that are submitted so frequently that the
|
||||
A: Yes, there are types of entries that show up over and over again.
|
||||
The guidelines say:
|
||||
|
||||
```
|
||||
We tend to dislike programs that:
|
||||
are similar to previous winning entries
|
||||
|
||||
We like variety. However too often we see (please look at the winning
|
||||
examples given to be aware of the level of the competition):
|
||||
|
||||
(snip)
|
||||
|
||||
generating small primes (below is the list of all prime related entries)
|
||||
|
||||
1985/august
|
||||
1988/applin
|
||||
1994/weisberg
|
||||
1995/makarios
|
||||
1996/dalbec
|
||||
2000/bellard
|
||||
|
||||
As you can see, just a list of primes (let alone small primes)
|
||||
does not cut it anymore.
|
||||
|
||||
(snip)
|
||||
|
||||
entries that use some complex state machine/table to print something
|
||||
|
||||
1988/isaak
|
||||
1988/phillipps
|
||||
|
||||
Unbeaten for 12 years and counting...
|
||||
```
|
||||
> We tend to dislike programs that:<br>
|
||||
> are similar to previous winning entries<br>
|
||||
>
|
||||
> We like variety. However too often we see (please look at the winning examples
|
||||
given to be aware of the level of the competition):
|
||||
>
|
||||
> (snip)<br>
|
||||
>
|
||||
> generating small primes (below is the list of all prime related entries)<br>
|
||||
>
|
||||
> 1985/august<br>
|
||||
> 1988/applin<br>
|
||||
> 1994/weisberg<br>
|
||||
> 1995/makarios<br>
|
||||
> 1996/dalbec<br>
|
||||
> 2000/bellard<br>
|
||||
>
|
||||
> As you can see, just a list of primes (let alone small primes) does not cut
|
||||
it anymore.
|
||||
>
|
||||
> (snip)<br>
|
||||
>
|
||||
> entries that use some complex state machine/table to print something
|
||||
>
|
||||
> 1988/isaak<br>
|
||||
> 1988/phillipps
|
||||
>
|
||||
> Unbeaten for 12 years and counting...
|
||||
|
||||
I think this is enough motivation for trying to submit a program which uses
|
||||
some complex state machine/table to generate small primes and print them.
|
||||
@@ -114,7 +112,9 @@ guarantee a constant time.
|
||||
|
||||
The main loop simply iterates this transition function on each cell.
|
||||
|
||||
"The rest is silence" (Hamlet, V.2)
|
||||
> "The rest is silence"<br>
|
||||
>
|
||||
> (Hamlet, V.2)
|
||||
|
||||
Enjoy!
|
||||
|
||||
|
||||
+25
-29
@@ -441,34 +441,27 @@ character printed on the screen.</p>
|
||||
judges get tired of them?</p>
|
||||
<p>A: Yes, there are types of entries that show up over and over again.
|
||||
The guidelines say:</p>
|
||||
<pre><code> We tend to dislike programs that:
|
||||
are similar to previous winning entries
|
||||
|
||||
We like variety. However too often we see (please look at the winning
|
||||
examples given to be aware of the level of the competition):
|
||||
|
||||
(snip)
|
||||
|
||||
generating small primes (below is the list of all prime related entries)
|
||||
|
||||
1985/august
|
||||
1988/applin
|
||||
1994/weisberg
|
||||
1995/makarios
|
||||
1996/dalbec
|
||||
2000/bellard
|
||||
|
||||
As you can see, just a list of primes (let alone small primes)
|
||||
does not cut it anymore.
|
||||
|
||||
(snip)
|
||||
|
||||
entries that use some complex state machine/table to print something
|
||||
|
||||
1988/isaak
|
||||
1988/phillipps
|
||||
|
||||
Unbeaten for 12 years and counting...</code></pre>
|
||||
<blockquote>
|
||||
<p>We tend to dislike programs that:<br>
|
||||
are similar to previous winning entries<br></p>
|
||||
<p>We like variety. However too often we see (please look at the winning examples
|
||||
given to be aware of the level of the competition):</p>
|
||||
<p>(snip)<br></p>
|
||||
<p>generating small primes (below is the list of all prime related entries)<br></p>
|
||||
<p>1985/august<br>
|
||||
1988/applin<br>
|
||||
1994/weisberg<br>
|
||||
1995/makarios<br>
|
||||
1996/dalbec<br>
|
||||
2000/bellard<br></p>
|
||||
<p>As you can see, just a list of primes (let alone small primes) does not cut
|
||||
it anymore.</p>
|
||||
<p>(snip)<br></p>
|
||||
<p>entries that use some complex state machine/table to print something</p>
|
||||
<p>1988/isaak<br>
|
||||
1988/phillipps</p>
|
||||
<p>Unbeaten for 12 years and counting…</p>
|
||||
</blockquote>
|
||||
<p>I think this is enough motivation for trying to submit a program which uses
|
||||
some complex state machine/table to generate small primes and print them.</p>
|
||||
<h3 id="the-way-it-works">The way it works</h3>
|
||||
@@ -482,7 +475,10 @@ by <a href="http://richardallenfischer.com">Fischer</a> in 1965.</p>
|
||||
is obfuscated to reduce its size, restrict it to characters 32 to 127 and
|
||||
guarantee a constant time.</p>
|
||||
<p>The main loop simply iterates this transition function on each cell.</p>
|
||||
<p>“The rest is silence” (Hamlet, V.2)</p>
|
||||
<blockquote>
|
||||
<p>“The rest is silence”<br></p>
|
||||
<p>(Hamlet, V.2)</p>
|
||||
</blockquote>
|
||||
<p>Enjoy!</p>
|
||||
<!--
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
make
|
||||
```
|
||||
|
||||
NOTE: this entry requires the `X11/Xlib.h` header file and the X11 library to
|
||||
**NOTE**: this entry requires the `X11/Xlib.h` header file and the X11 library to
|
||||
compile. For more information see the
|
||||
FAQ on "[X11](../../faq.html#X11)".
|
||||
|
||||
@@ -13,7 +13,8 @@ FAQ on "[X11](../../faq.html#X11)".
|
||||
|
||||
The current status of this entry is:
|
||||
|
||||
> **STATUS: missing files - please provide them**
|
||||
> **STATUS: INABIAF - please DO NOT fix**<br>
|
||||
> **STATUS: missing files - please provide them**<br>
|
||||
|
||||
For more detailed information see [2001/rosten in bugs.html](../../bugs.html#2001_rosten).
|
||||
|
||||
@@ -24,10 +25,10 @@ For more detailed information see [2001/rosten in bugs.html](../../bugs.html#200
|
||||
./rosten [number]
|
||||
```
|
||||
|
||||
WARNING: this will mess with your mouse and can make it hard to quit the
|
||||
**WARNING**: this will mess with your mouse and can make it hard to quit the
|
||||
program. Use at your own risk.
|
||||
|
||||
NOTE: number is floating point.
|
||||
**NOTE**: number is floating point.
|
||||
|
||||
|
||||
## Try:
|
||||
@@ -108,7 +109,9 @@ like this:
|
||||
greasymouse.c:58: This program is rubbish. I'm not going to link it.
|
||||
```
|
||||
|
||||
The code is best viewed with [tab stops](https://en.wikipedia.org/wiki/Tab_stop) every 8 spaces.
|
||||
The code is best viewed with [tab stops](https://en.wikipedia.org/wiki/Tab_stop)
|
||||
every 8 spaces. If you use `vi(m)` see the
|
||||
FAQ on "[tab stops](../../faq.html#tabstops)".
|
||||
|
||||
|
||||
### BUGS
|
||||
|
||||
@@ -409,20 +409,21 @@ Location: <a href="../../location.html#GB">GB</a> - <em>United Kingdom of Great
|
||||
<!-- BEFORE: 1st line of markdown file: 2001/rosten/README.md -->
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<pre><code> make</code></pre>
|
||||
<p>NOTE: this entry requires the <code>X11/Xlib.h</code> header file and the X11 library to
|
||||
<p><strong>NOTE</strong>: this entry requires the <code>X11/Xlib.h</code> header file and the X11 library to
|
||||
compile. For more information see the
|
||||
FAQ on “<a href="../../faq.html#X11">X11</a>”.</p>
|
||||
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
|
||||
<p>The current status of this entry is:</p>
|
||||
<blockquote>
|
||||
<p><strong>STATUS: missing files - please provide them</strong></p>
|
||||
<p><strong>STATUS: INABIAF - please DO NOT fix</strong><br>
|
||||
<strong>STATUS: missing files - please provide them</strong><br></p>
|
||||
</blockquote>
|
||||
<p>For more detailed information see <a href="../../bugs.html#2001_rosten">2001/rosten in bugs.html</a>.</p>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<pre><code> ./rosten [number]</code></pre>
|
||||
<p>WARNING: this will mess with your mouse and can make it hard to quit the
|
||||
<p><strong>WARNING</strong>: this will mess with your mouse and can make it hard to quit the
|
||||
program. Use at your own risk.</p>
|
||||
<p>NOTE: number is floating point.</p>
|
||||
<p><strong>NOTE</strong>: number is floating point.</p>
|
||||
<h2 id="try">Try:</h2>
|
||||
<pre><code> ./rosten 1.03
|
||||
./rosten 1.00</code></pre>
|
||||
@@ -464,7 +465,9 @@ like this:</p>
|
||||
greasymouse.c:55: So is that
|
||||
...
|
||||
greasymouse.c:58: This program is rubbish. I'm not going to link it.</code></pre>
|
||||
<p>The code is best viewed with <a href="https://en.wikipedia.org/wiki/Tab_stop">tab stops</a> every 8 spaces.</p>
|
||||
<p>The code is best viewed with <a href="https://en.wikipedia.org/wiki/Tab_stop">tab stops</a>
|
||||
every 8 spaces. If you use <code>vi(m)</code> see the
|
||||
FAQ on “<a href="../../faq.html#tabstops">tab stops</a>”.</p>
|
||||
<h3 id="bugs">BUGS</h3>
|
||||
<p>The mouse gets stuck completely if you give it an option of less
|
||||
than 1 and leave it for too long. This is quite annoying if it
|
||||
|
||||
@@ -28,13 +28,6 @@ comments for details and a workaround.
|
||||
|
||||
There's also no way to escape meta characters.
|
||||
|
||||
This is supposed to happen. As is written in the
|
||||
[The Jargon File](http://catb.org/jargon/html/F/feature.html):
|
||||
|
||||
```
|
||||
That's not a bug, that's a feature.
|
||||
```
|
||||
|
||||
|
||||
## Try:
|
||||
|
||||
|
||||
@@ -422,9 +422,6 @@ two args.</p>
|
||||
<p>Note also that the glob pattern must match the whole string. See the author’s
|
||||
comments for details and a workaround.</p>
|
||||
<p>There’s also no way to escape meta characters.</p>
|
||||
<p>This is supposed to happen. As is written in the
|
||||
<a href="http://catb.org/jargon/html/F/feature.html">The Jargon File</a>:</p>
|
||||
<pre><code> That's not a bug, that's a feature.</code></pre>
|
||||
<h2 id="try">Try:</h2>
|
||||
<pre><code> ./try.sh</code></pre>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
|
||||
@@ -101,7 +101,7 @@ versions of the program, all valid C!
|
||||
## Author's remarks:
|
||||
|
||||
[Punch cards](https://en.wikipedia.org/wiki/Punched_card), or Hollerith cards,
|
||||
were becoming obsolete just as C was becoming more popular\*; this is rather
|
||||
were becoming obsolete just as C was becoming more popular[^1]; this is rather
|
||||
unfortunate, because C has an advantage over many other languages when it comes
|
||||
to punch cards - C programs can be written to be "drop proof".
|
||||
|
||||
@@ -117,7 +117,7 @@ Consider the following C program:
|
||||
This program will compile and run no matter what order the
|
||||
lines are in. If you punch it on cards (one line of code per
|
||||
card, naturally) and drop them, you don't need to put them in
|
||||
any particular order\*\*; it will always produce `ABC` as output.
|
||||
any particular order[^2]; it will always produce `ABC` as output.
|
||||
|
||||
You can also use global variables:
|
||||
|
||||
@@ -224,11 +224,9 @@ comment), there are technically `28!` different programs, or
|
||||
`304,888,344,611,713,860,501,504,000,000` different versions,
|
||||
all legal C.
|
||||
|
||||
```
|
||||
* except in Florida voting machines
|
||||
[^1]: except in Florida voting machines
|
||||
|
||||
** all cards must be face down, nine-edge first, of course.
|
||||
```
|
||||
[^2]: all cards must be face down, nine-edge first, of course.
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
+10
-5
@@ -461,7 +461,7 @@ blank lines) there are <code>28!</code> or <code>304,888,344,611,713,860,501,504
|
||||
versions of the program, all valid C!</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<p><a href="https://en.wikipedia.org/wiki/Punched_card">Punch cards</a>, or Hollerith cards,
|
||||
were becoming obsolete just as C was becoming more popular*; this is rather
|
||||
were becoming obsolete just as C was becoming more popular<a href="#fn1" class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a>; this is rather
|
||||
unfortunate, because C has an advantage over many other languages when it comes
|
||||
to punch cards - C programs can be written to be “drop proof”.</p>
|
||||
<p>Consider the following C program:</p>
|
||||
@@ -472,7 +472,7 @@ to punch cards - C programs can be written to be “drop proof”.</p>
|
||||
<p>This program will compile and run no matter what order the
|
||||
lines are in. If you punch it on cards (one line of code per
|
||||
card, naturally) and drop them, you don’t need to put them in
|
||||
any particular order**; it will always produce <code>ABC</code> as output.</p>
|
||||
any particular order<a href="#fn2" class="footnote-ref" id="fnref2" role="doc-noteref"><sup>2</sup></a>; it will always produce <code>ABC</code> as output.</p>
|
||||
<p>You can also use global variables:</p>
|
||||
<pre><code> char *greet = "Hello, world!";
|
||||
char *greet; main(){puts(greet);}</code></pre>
|
||||
@@ -553,9 +553,6 @@ actually shorter than the trigraph version of <code>a??(b??)</code>.</p>
|
||||
comment), there are technically <code>28!</code> different programs, or
|
||||
<code>304,888,344,611,713,860,501,504,000,000</code> different versions,
|
||||
all legal C.</p>
|
||||
<pre><code> * except in Florida voting machines
|
||||
|
||||
** all cards must be face down, nine-edge first, of course.</code></pre>
|
||||
<!--
|
||||
|
||||
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
|
||||
@@ -570,6 +567,14 @@ all legal C.</p>
|
||||
|
||||
-->
|
||||
<!-- AFTER: last line of markdown file: 2001/westley/README.md -->
|
||||
<hr style="width:10%;text-align:left;margin-left:0">
|
||||
<section id="footnotes" class="footnotes footnotes-end-of-document" role="doc-endnotes">
|
||||
<h5>Footnotes</h5>
|
||||
<ol>
|
||||
<li id="fn1"><p>except in Florida voting machines<a href="#fnref1" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
|
||||
<li id="fn2"><p>all cards must be face down, nine-edge first, of course.<a href="#fnref2" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
<!-- START: this line starts content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
make
|
||||
```
|
||||
|
||||
NOTE: this entry requires the `X11/Xlib.h` header file and the X11 library to
|
||||
**NOTE**: this entry requires the `X11/Xlib.h` header file and the X11 library to
|
||||
compile. For more information see the
|
||||
FAQ on "[X11](../../faq.html#X11)".
|
||||
|
||||
|
||||
@@ -409,7 +409,7 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
|
||||
<!-- BEFORE: 1st line of markdown file: 2001/williams/README.md -->
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<pre><code> make</code></pre>
|
||||
<p>NOTE: this entry requires the <code>X11/Xlib.h</code> header file and the X11 library to
|
||||
<p><strong>NOTE</strong>: this entry requires the <code>X11/Xlib.h</code> header file and the X11 library to
|
||||
compile. For more information see the
|
||||
FAQ on “<a href="../../faq.html#X11">X11</a>”.</p>
|
||||
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
|
||||
|
||||
Reference in new issue
Block a user