Fixes in html files of 1989

This commit is contained in:
Cody Boone Ferguson committed 2024-06-21 09:12:51 -07:00
1 parent e8d868e0ed
commit 871e1114f7
13 files changed
+74 -71

No files matched your search

+3 -3
View File
@@ -8,15 +8,15 @@ You may then wish to look at the Author's remarks for even more details.
Instructions for use: Run `make` to compile entries (it is possible that on Instructions for use: Run `make` to compile entries (it is possible that on
System V or non-Unix systems the Makefile needs to be changed). System V or non-Unix systems the Makefile needs to be changed).
The Makefile for ["Best self modifying program"](fubar/index.html) always uses The Makefile for [Best self modifying program](fubar/index.html) always uses
the most portable version because there is no loss of functionality in the most portable version because there is no loss of functionality in
using it. In the case of the ["Best game"](tromp/index.html) entry, however, some using it. In the case of the [Best game](tromp/index.html) entry, however, some
functionality is lost in the portable version and so its Makefile uses functionality is lost in the portable version and so its Makefile uses
the original program. the original program.
This year, the [Best of Show](jar.2/index.html) was given to the most useful program. This year, the [Best of Show](jar.2/index.html) was given to the most useful program.
The ["Strangest abuse of the rules"](jar.1/index.html) award was given this year The [Strangest abuse of the rules](jar.1/index.html) award was given this year
to stress the fact that starting in 1990, compiling entries must result a to stress the fact that starting in 1990, compiling entries must result a
regular executable file. regular executable file.
+3 -3
View File
@@ -48,7 +48,7 @@ On many systems the compiler will not allow you to send the object file to
``` ```
As a last resort the `jar.1.sh` script provided simulates As a last resort the `jar.1.sh` script provided simulates
writing the raw binary of the .o file to the terminal. writing the raw binary of the `.o` object file to the terminal.
Abuse of the rules winning entry usually result in a change of the rules. Abuse of the rules winning entry usually result in a change of the rules.
Starting in 1990, compiling entries must result an regular file Starting in 1990, compiling entries must result an regular file
@@ -78,8 +78,8 @@ binary to the `/dev/tty` special file.
The use of piping raw binary thru stings makes the original 1989 output The use of piping raw binary thru stings makes the original 1989 output
more apparent, as was the case when using dumb CRT terminals (some more apparent, as was the case when using dumb CRT terminals (some
do dumb that they couldn't even process simple ANSI escape sequences) so dumb that they couldn't even process simple ANSI escape sequences)
were more common. was more common.
## Author's remarks: ## Author's remarks:
+3 -3
View File
@@ -420,7 +420,7 @@ See the <a href="#alternate-code">Alternate code</a> section below for more deta
<code>/dev/tty</code>. The author suggested:</p> <code>/dev/tty</code>. The author suggested:</p>
<pre><code> cc -c -o /dev/tty jar.1.c</code></pre> <pre><code> cc -c -o /dev/tty jar.1.c</code></pre>
<p>As a last resort the <code>jar.1.sh</code> script provided simulates <p>As a last resort the <code>jar.1.sh</code> script provided simulates
writing the raw binary of the .o file to the terminal.</p> writing the raw binary of the <code>.o</code> object file to the terminal.</p>
<p>Abuse of the rules winning entry usually result in a change of the rules. <p>Abuse of the rules winning entry usually result in a change of the rules.
Starting in 1990, compiling entries must result an regular file Starting in 1990, compiling entries must result an regular file
which can be executed.</p> which can be executed.</p>
@@ -446,8 +446,8 @@ to standard output, the original shell command that once wrote raw
binary to the <code>/dev/tty</code> special file.</p> binary to the <code>/dev/tty</code> special file.</p>
<p>The use of piping raw binary thru stings makes the original 1989 output <p>The use of piping raw binary thru stings makes the original 1989 output
more apparent, as was the case when using dumb CRT terminals (some more apparent, as was the case when using dumb CRT terminals (some
do dumb that they couldn’t even process simple ANSI escape sequences) so dumb that they couldn’t even process simple ANSI escape sequences)
were more common.</p> was more common.</p>
<h2 id="authors-remarks">Author’s remarks:</h2> <h2 id="authors-remarks">Author’s remarks:</h2>
<p>This program is (supposedly) the smallest C program able to print “Hello <p>This program is (supposedly) the smallest C program able to print “Hello
world.”. The compilation itself produces the desired printout and the program world.”. The compilation itself produces the desired printout and the program
+5 -5
View File
@@ -31,11 +31,11 @@ NOTE: this entry will likely segfault on invalid input.
## Judges' remarks: ## Judges' remarks:
This is the most useful program submitted this year. It is a This is the most useful program submitted this year. It is a
rather large subset of lisp. It has no error recovery, and rather large subset of
performs rather poorly in a number of cases. Even so, placing [lisp](https://en.wikipedia.org/wiki/Lisp_&#x28;programming_language&#x29;).
all this functionality in such a small, densely packed program, It has no error recovery, and performs rather poorly in a number of cases. Even
is impressive enough to win the Best of Show award. so, placing all this functionality in such a small, densely packed program, is
impressive enough to win the `Best of Show` award.
## Author's remarks: ## Author's remarks:
+5 -4
View File
@@ -425,10 +425,11 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
./try.sh try.lisp</code></pre> ./try.sh try.lisp</code></pre>
<h2 id="judges-remarks">Judges’ remarks:</h2> <h2 id="judges-remarks">Judges’ remarks:</h2>
<p>This is the most useful program submitted this year. It is a <p>This is the most useful program submitted this year. It is a
rather large subset of lisp. It has no error recovery, and rather large subset of
performs rather poorly in a number of cases. Even so, placing <a href="https://en.wikipedia.org/wiki/Lisp_(programming_language)">lisp</a>.
all this functionality in such a small, densely packed program, It has no error recovery, and performs rather poorly in a number of cases. Even
is impressive enough to win the Best of Show award.</p> so, placing all this functionality in such a small, densely packed program, is
impressive enough to win the <code>Best of Show</code> award.</p>
<h2 id="authors-remarks">Author’s remarks:</h2> <h2 id="authors-remarks">Author’s remarks:</h2>
<p>This program implements a Lisp interpreter in 1465 bytes of source. <p>This program implements a Lisp interpreter in 1465 bytes of source.
Some sophisticated features supported, e.g. functionals and recursion. Some sophisticated features supported, e.g. functionals and recursion.
+4 -3
View File
@@ -41,7 +41,8 @@ it's a `#define` it's easy to set up.
You do not have to define `P` but if you do you can replace the value with You do not have to define `P` but if you do you can replace the value with
whatever you wish, as long as it's a positive `int` (or evaluates to a positive whatever you wish, as long as it's a positive `int` (or evaluates to a positive
`int` like the default `(A<<AP)` does). Too high a value will likely cause the `int` like the default `(A<<AP)` does). Too high a value will likely cause the
program to fail and a negative value will cause a compilation error. program to fail and a negative value will cause a compilation error as will a
value that's not a number.
### Alternate use: ### Alternate use:
@@ -78,7 +79,7 @@ is read through stdin. The larger the template, the better the
result. A maximum of `2**12` chars are used. From the template, result. A maximum of `2**12` chars are used. From the template,
the program calculates the statistics of chars that immediately the program calculates the statistics of chars that immediately
follow a given string (correlator string) of a certain length follow a given string (correlator string) of a certain length
(currently 4 - can be varied by changing the definition for P (currently 4 - can be varied by changing the definition for `P`
accordingly). A character is randomly chosen, weighted by its accordingly). A character is randomly chosen, weighted by its
probability to occur after the correlator string. That probability to occur after the correlator string. That
character is printed to stdout and placed at the end of the character is printed to stdout and placed at the end of the
@@ -86,7 +87,7 @@ correlator string, whose first character is discarded.
Meaningful words are therefore usually preserved, the effect on Meaningful words are therefore usually preserved, the effect on
sentences can be dramatically random. sentences can be dramatically random.
You might want to vary the definition of P between 2 and 10 and You might want to vary the definition of `P` between 2 and 10 and
observe the result. observe the result.
+4 -3
View File
@@ -419,7 +419,8 @@ it’s a <code>#define</code> it’s easy to set up.</p>
<p>You do not have to define <code>P</code> but if you do you can replace the value with <p>You do not have to define <code>P</code> but if you do you can replace the value with
whatever you wish, as long as it’s a positive <code>int</code> (or evaluates to a positive whatever you wish, as long as it’s a positive <code>int</code> (or evaluates to a positive
<code>int</code> like the default <code>(A&lt;&lt;AP)</code> does). Too high a value will likely cause the <code>int</code> like the default <code>(A&lt;&lt;AP)</code> does). Too high a value will likely cause the
program to fail and a negative value will cause a compilation error.</p> program to fail and a negative value will cause a compilation error as will a
value that’s not a number.</p>
<h3 id="alternate-use">Alternate use:</h3> <h3 id="alternate-use">Alternate use:</h3>
<pre><code> ./ovdluhe.alt</code></pre> <pre><code> ./ovdluhe.alt</code></pre>
<h3 id="alternate-try">Alternate try:</h3> <h3 id="alternate-try">Alternate try:</h3>
@@ -439,14 +440,14 @@ is read through stdin. The larger the template, the better the
result. A maximum of <code>2**12</code> chars are used. From the template, result. A maximum of <code>2**12</code> chars are used. From the template,
the program calculates the statistics of chars that immediately the program calculates the statistics of chars that immediately
follow a given string (correlator string) of a certain length follow a given string (correlator string) of a certain length
(currently 4 - can be varied by changing the definition for P (currently 4 - can be varied by changing the definition for <code>P</code>
accordingly). A character is randomly chosen, weighted by its accordingly). A character is randomly chosen, weighted by its
probability to occur after the correlator string. That probability to occur after the correlator string. That
character is printed to stdout and placed at the end of the character is printed to stdout and placed at the end of the
correlator string, whose first character is discarded. correlator string, whose first character is discarded.
Meaningful words are therefore usually preserved, the effect on Meaningful words are therefore usually preserved, the effect on
sentences can be dramatically random.</p> sentences can be dramatically random.</p>
<p>You might want to vary the definition of P between 2 and 10 and <p>You might want to vary the definition of <code>P</code> between 2 and 10 and
observe the result.</p> observe the result.</p>
<!-- <!--
+10 -11
View File
@@ -19,11 +19,10 @@ out. See [alternate code](#alternate-code) below for more details.
This version was described by the author like: This version was described by the author like:
I could have squeezed the program under 1024 bytes without the > I could have squeezed the program under 1024 bytes without the trace
trace subroutine, but I felt it was important for understanding subroutine, but I felt it was important for understanding the program. Besides
the program. Besides it is fun to watch the tape zooming back it is fun to watch the tape zooming back and forth as the program runs. A much
and forth as the program runs. A much better debugger or trace better debugger or trace could easily be added.
could easily be added.
### Alternate build: ### Alternate build:
@@ -117,15 +116,15 @@ with step 1. A call to the trace routine is just before step
The previous and current Fibonacci numbers are kept in base The previous and current Fibonacci numbers are kept in base
1 form with the current on the right. The first three 1 form with the current on the right. The first three
steps set up the first two numbers, `1` and `1`. Then steps set up the first two numbers, `1` and `1`. Then,
[beginning with `@ (`] a marker of `III` is created and beginning with '`@ (`', a marker of '`III`' is created and
the current number is copied to the right of the the current number is copied to the right of the
marker. Then (beginning with `OV `) the number is marker. Then, beginning with '`OV `', the number is
converted to binary by repeatedly dividing by 2 leaving I converted to binary by repeatedly dividing by 2 leaving I
for remainder `1`, and II for remainder `0`. Next for remainder `1`, and II for remainder '`0`'. Next,
(beginning with `WV `) the binary representation is beginning with '`WV `', the binary representation is
printed and its symbols and the marker are erased. printed and its symbols and the marker are erased.
Finally (beginning with `EEn`) the two numbers are Finally, beginning with '`EEn`', the two numbers are
added and the current number copied to the left to added and the current number copied to the left to
become the previous. Then the cycle repeats. become the previous. Then the cycle repeats.
+12 -11
View File
@@ -409,11 +409,12 @@ out. See <a href="#alternate-code">alternate code</a> below for more details.</p
<pre><code> ./paul</code></pre> <pre><code> ./paul</code></pre>
<h2 id="alternate-code">Alternate code:</h2> <h2 id="alternate-code">Alternate code:</h2>
<p>This version was described by the author like:</p> <p>This version was described by the author like:</p>
<p>I could have squeezed the program under 1024 bytes without the <blockquote>
trace subroutine, but I felt it was important for understanding <p>I could have squeezed the program under 1024 bytes without the trace
the program. Besides it is fun to watch the tape zooming back subroutine, but I felt it was important for understanding the program. Besides
and forth as the program runs. A much better debugger or trace it is fun to watch the tape zooming back and forth as the program runs. A much
could easily be added.</p> better debugger or trace could easily be added.</p>
</blockquote>
<h3 id="alternate-build">Alternate build:</h3> <h3 id="alternate-build">Alternate build:</h3>
<pre><code> make alt</code></pre> <pre><code> make alt</code></pre>
<h3 id="alternate-use">Alternate use:</h3> <h3 id="alternate-use">Alternate use:</h3>
@@ -482,15 +483,15 @@ with step 1. A call to the trace routine is just before step
<h3 id="quick-outline-of-the-turing-program">Quick outline of the Turing program:</h3> <h3 id="quick-outline-of-the-turing-program">Quick outline of the Turing program:</h3>
<p>The previous and current Fibonacci numbers are kept in base <p>The previous and current Fibonacci numbers are kept in base
1 form with the current on the right. The first three 1 form with the current on the right. The first three
steps set up the first two numbers, <code>1</code> and <code>1</code>. Then steps set up the first two numbers, <code>1</code> and <code>1</code>. Then,
[beginning with <code>@ (</code>] a marker of <code>III</code> is created and beginning with ‘<code>@ (</code>’, a marker of ‘<code>III</code>’ is created and
the current number is copied to the right of the the current number is copied to the right of the
marker. Then (beginning with <code>OV</code>) the number is marker. Then, beginning with ‘<code>OV</code>’, the number is
converted to binary by repeatedly dividing by 2 leaving I converted to binary by repeatedly dividing by 2 leaving I
for remainder <code>1</code>, and II for remainder <code>0</code>. Next for remainder <code>1</code>, and II for remainder ‘<code>0</code>’. Next,
(beginning with <code>WV</code>) the binary representation is beginning with ‘<code>WV</code>’, the binary representation is
printed and its symbols and the marker are erased. printed and its symbols and the marker are erased.
Finally (beginning with <code>EEn</code>) the two numbers are Finally, beginning with ‘<code>EEn</code>’, the two numbers are
added and the current number copied to the left to added and the current number copied to the left to
become the previous. Then the cycle repeats.</p> become the previous. Then the cycle repeats.</p>
<h3 id="portability">Portability</h3> <h3 id="portability">Portability</h3>
+1 -1
View File
@@ -21,7 +21,7 @@ than meets the PI.
## Author's remarks: ## Author's remarks:
Passes lint, but not with the strictest options, for it contains some Passes lint, but not with the strictest options, for it contains some
"null-statements", as well two identifiers which are, if compilers only take 6 "null-statements", as well as two identifiers which are, if compilers only take 6
characters, the same. It also uses `write(2)`, so not totally system characters, the same. It also uses `write(2)`, so not totally system
independent. independent.
+1 -1
View File
@@ -410,7 +410,7 @@ Location: <a href="../../location.html#NL">NL</a> - <em>Kingdom of the Netherlan
than meets the PI.</p> than meets the PI.</p>
<h2 id="authors-remarks">Author’s remarks:</h2> <h2 id="authors-remarks">Author’s remarks:</h2>
<p>Passes lint, but not with the strictest options, for it contains some <p>Passes lint, but not with the strictest options, for it contains some
“null-statements”, as well two identifiers which are, if compilers only take 6 “null-statements”, as well as two identifiers which are, if compilers only take 6
characters, the same. It also uses <code>write(2)</code>, so not totally system characters, the same. It also uses <code>write(2)</code>, so not totally system
independent.</p> independent.</p>
<p>You are very much invited to pass this program through a C-beautifier (first <p>You are very much invited to pass this program through a C-beautifier (first
+11 -12
View File
@@ -125,18 +125,17 @@ system-wide high-score allowing a competition between users.
The author provided us with the following notes and new version of The author provided us with the following notes and new version of
the program: the program:
Here is a somewhat improved version of my tetris entry. All the > Here is a somewhat improved version of my tetris entry. All the changes are
changes are in the `popen()` at the end. Formerly a move was done in the `popen(3)` at the end. Formerly a move was done to the HI score file
to the HI score file which is not permitted for other users. Now which is not permitted for other users. Now other users can change the `HI`
other users can change the `HI` score file. The extra option `-m` is score file. The extra option `-m` is passed to sort, so that it knows that its
passed to sort, so that it knows that its input files are already input files are already sorted. The `-o` output option of sort is used instead
sorted. The `-o` output option of sort is used instead of a of a temporary file.
temporary file. >
> You may also want to consider giving just the raw option to `stty` at the
You may also want to consider giving just the raw option to `stty` start and `-raw` at the end. This further reduces the size of the program, but
at the start and `-raw` at the end. This further reduces the size of has the possible disadvantage that the program can only by stopped by 'q' or by
the program, but has the possible disadvantage that the program the `kill -9` command.
can only by stopped by 'q' or by the `kill -9' command.
``` <!---c--> ``` <!---c-->
long h[4];t(){h[3]-=h[3]/3000;setitimer(0,h,0);}c,d,l,v[]={(int)t,0,2},w,s,I,K long h[4];t(){h[3]-=h[3]/3000;setitimer(0,h,0);}c,d,l,v[]={(int)t,0,2},w,s,I,K
+12 -11
View File
@@ -481,17 +481,18 @@ system-wide high-score allowing a competition between users.</p>
<h3 id="additional-remarks-from-the-judges">Additional remarks from the judges:</h3> <h3 id="additional-remarks-from-the-judges">Additional remarks from the judges:</h3>
<p>The author provided us with the following notes and new version of <p>The author provided us with the following notes and new version of
the program:</p> the program:</p>
<p>Here is a somewhat improved version of my tetris entry. All the <blockquote>
changes are in the <code>popen()</code> at the end. Formerly a move was done <p>Here is a somewhat improved version of my tetris entry. All the changes are
to the HI score file which is not permitted for other users. Now in the <code>popen(3)</code> at the end. Formerly a move was done to the HI score file
other users can change the <code>HI</code> score file. The extra option <code>-m</code> is which is not permitted for other users. Now other users can change the <code>HI</code>
passed to sort, so that it knows that its input files are already score file. The extra option <code>-m</code> is passed to sort, so that it knows that its
sorted. The <code>-o</code> output option of sort is used instead of a input files are already sorted. The <code>-o</code> output option of sort is used instead
temporary file.</p> of a temporary file.</p>
<p>You may also want to consider giving just the raw option to <code>stty</code> <p>You may also want to consider giving just the raw option to <code>stty</code> at the
at the start and <code>-raw</code> at the end. This further reduces the size of start and <code>-raw</code> at the end. This further reduces the size of the program, but
the program, but has the possible disadvantage that the program has the possible disadvantage that the program can only by stopped by ‘q’ or by
can only by stopped by ‘q’ or by the `kill -9’ command.</p> the <code>kill -9</code> command.</p>
</blockquote>
<pre><code> long h[4];t(){h[3]-=h[3]/3000;setitimer(0,h,0);}c,d,l,v[]={(int)t,0,2},w,s,I,K <pre><code> long h[4];t(){h[3]-=h[3]/3000;setitimer(0,h,0);}c,d,l,v[]={(int)t,0,2},w,s,I,K
=0,i=276,j,k,q[276],Q[276],*n=q,*m,x=17,f[]={7,-13,-12,1,8,-11,-12,-1,9,-1,1, =0,i=276,j,k,q[276],Q[276],*n=q,*m,x=17,f[]={7,-13,-12,1,8,-11,-12,-1,9,-1,1,
12,3,-13,-12,-1,12,-1,11,1,15,-1,13,1,18,-1,1,2,0,-12,-1,11,1,-12,1,13,10,-12, 12,3,-13,-12,-1,12,-1,11,1,15,-1,13,1,18,-1,1,2,0,-12,-1,11,1,-12,1,13,10,-12,