fix more broken markdown links
We fix more markdown links in markdown files that refer to files internally to the web site. Added tmp tools to find and print various markdown links: * `tmp/md-links.sh` - print all markdown links * `tmp/md-token-links.sh` - print all markdown links that start with a **%%TOKEN%%** * `tmp/md-local-links.sh` - print all markdown links to a local file * `tmp/md-link-paths.sh` - print local file paths referenced in markdown links Fixed a number of markdown formatting problems with `thanks-for-help.md`. Fixed markdown links to files in `thanks-for-help.md`. Improved heading levels in `thanks-for-help.md`, and made entry sections consistent. Changed all markdown links that end in "))" to end in a better way. Explained in `markdown.md` why we are avoiding markdown links that end in "))". Ran `make www` to perform the above. TODO: Fix stuff we broke by mistake doing the above. TODO: Fix more broken markdown links.
This commit is contained in:
1 parent
60960e1650
commit
4f95e3f3d6
174 files changed
+4008
-2029
No files matched your search
+14
-14
@@ -93,7 +93,7 @@ the rules were changed, requesting non-machine specific code.
|
|||||||
|
|
||||||
This program was selected for the 1987 t-shirt collection.
|
This program was selected for the 1987 t-shirt collection.
|
||||||
|
|
||||||
The C startup routine (via [crt0.o](https://en.wikipedia.org/wiki/Crt0))
|
The C startup routine, via [crt0.o](https://en.wikipedia.org/wiki/Crt0),
|
||||||
transfers control to a location named `main`. In this case, `main` just happens
|
transfers control to a location named `main`. In this case, `main` just happens
|
||||||
to be in the data area. The array of `short`s, which has been further
|
to be in the data area. The array of `short`s, which has been further
|
||||||
obfuscated by use of different data types, just happens to form a meaningful set
|
obfuscated by use of different data types, just happens to form a meaningful set
|
||||||
@@ -188,10 +188,10 @@ since there was no CS curriculum when we started). We had an assignment to
|
|||||||
create a pair of programs for the computer networks course. The programs were
|
create a pair of programs for the computer networks course. The programs were
|
||||||
supposed to send data reliably from one program to the other over an unreliable
|
supposed to send data reliably from one program to the other over an unreliable
|
||||||
channel. This channel was simulated with a pair of
|
channel. This channel was simulated with a pair of
|
||||||
[pipes](https://en.wikipedia.org/wiki/Pipeline_(software)).
|
[pipes](https://en.wikipedia.org/wiki/Pipeline_(software)).
|
||||||
|
|
||||||
We decided for fun to create an
|
We decided for fun to create an
|
||||||
[obfuscated](https://en.wikipedia.org/wiki/Obfuscation_(software)) set of
|
[obfuscated](https://en.wikipedia.org/wiki/Obfuscation_(software)) set of
|
||||||
programs, only for the
|
programs, only for the
|
||||||
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor), to do this, but
|
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor), to do this, but
|
||||||
circumventing the channel (i.e. cheating, hence the needed obfuscation). Our
|
circumventing the channel (i.e. cheating, hence the needed obfuscation). Our
|
||||||
@@ -207,12 +207,12 @@ there](https://groups.google.com/g/net.lang.c/c/lx-TAuEyeRI/m/HdOOnNx6LC0J) and
|
|||||||
it.
|
it.
|
||||||
|
|
||||||
Since we had just recently created these [obfuscated
|
Since we had just recently created these [obfuscated
|
||||||
programs](https://en.wikipedia.org/wiki/Obfuscation_(software)) we decided we could
|
programs](https://en.wikipedia.org/wiki/Obfuscation_(software)) we decided we could
|
||||||
use the same technique for an obfuscated C program. We upped the ante a bit by
|
use the same technique for an obfuscated C program. We upped the ante a bit by
|
||||||
making it "portable".
|
making it "portable".
|
||||||
|
|
||||||
To add to the
|
To add to the
|
||||||
[obfuscation](https://en.wikipedia.org/wiki/Obfuscation_(software)), we used
|
[obfuscation](https://en.wikipedia.org/wiki/Obfuscation_(software)), we used
|
||||||
different formats for the integers in the array: some in decimal, some in octal,
|
different formats for the integers in the array: some in decimal, some in octal,
|
||||||
some in hexadecimal, and when the value would fit, some as an ASCII character.
|
some in hexadecimal, and when the value would fit, some as an ASCII character.
|
||||||
|
|
||||||
@@ -230,7 +230,7 @@ Our program is idempotent under `cb`.
|
|||||||
|
|
||||||
When this program is compiled, the compiler places the array somewhere in
|
When this program is compiled, the compiler places the array somewhere in
|
||||||
memory, just like it places any compiled code somewhere in memory. Usually, the
|
memory, just like it places any compiled code somewhere in memory. Usually, the
|
||||||
C startup code ([crt0.o](https://en.wikipedia.org/wiki/Crt0)) calls a routine
|
C startup code, [crt0.o](https://en.wikipedia.org/wiki/Crt0), calls a routine
|
||||||
named `main()`. The loader fills in the address in the startup code, but at
|
named `main()`. The loader fills in the address in the startup code, but at
|
||||||
least on the old systems where this program ran, it doesn't know that the
|
least on the old systems where this program ran, it doesn't know that the
|
||||||
`main()` in this program isn't code but data!
|
`main()` in this program isn't code but data!
|
||||||
@@ -242,13 +242,13 @@ both a [PDP-11](https://en.wikipedia.org/wiki/PDP-11) and a
|
|||||||
|
|
||||||
On the [VAX](https://en.wikipedia.org/wiki/VAX), the routine `main()` is called
|
On the [VAX](https://en.wikipedia.org/wiki/VAX), the routine `main()` is called
|
||||||
with the `calls` instruction. This instruction uses the first (2-byte)
|
with the `calls` instruction. This instruction uses the first (2-byte)
|
||||||
[word](https://en.wikipedia.org/wiki/Word_(computer_architecture)) of the called
|
[word](https://en.wikipedia.org/wiki/Word_(computer_architecture)) of the called
|
||||||
routine as a mask of
|
routine as a mask of
|
||||||
[registers](https://en.wikipedia.org/wiki/Processor_register) that are to be
|
[registers](https://en.wikipedia.org/wiki/Processor_register) that are to be
|
||||||
saved on the [stack](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)).
|
saved on the [stack](https://en.wikipedia.org/wiki/Stack(abstract_data_type)).
|
||||||
In other words, on the VAX the first word can be anything. On the
|
In other words, on the VAX the first word can be anything. On the
|
||||||
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor), the first word
|
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor), the first word
|
||||||
is a [branch](https://en.wikipedia.org/wiki/Branch_(computer_science))
|
is a [branch](https://en.wikipedia.org/wiki/Branch_(computer_science))
|
||||||
[instruction](https://en.wikipedia.org/wiki/Instruction_set_architecture#Instructions)
|
[instruction](https://en.wikipedia.org/wiki/Instruction_set_architecture#Instructions)
|
||||||
that branches over the VAX code. The PDP and VAX codes are thus completely
|
that branches over the VAX code. The PDP and VAX codes are thus completely
|
||||||
separate.
|
separate.
|
||||||
@@ -356,7 +356,7 @@ program that we came up with is as follows:
|
|||||||
|
|
||||||
The first word (after the label `vax`) is the
|
The first word (after the label `vax`) is the
|
||||||
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) [branch
|
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) [branch
|
||||||
instruction](https://en.wikipedia.org/wiki/Branch_(computer_science)).
|
instruction](https://en.wikipedia.org/wiki/Branch_(computer_science)).
|
||||||
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) branch
|
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) branch
|
||||||
instructions are octal `400` + the distance divided by `2`. The string that both
|
instructions are octal `400` + the distance divided by `2`. The string that both
|
||||||
the [PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) and
|
the [PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) and
|
||||||
@@ -366,10 +366,10 @@ programs use is after the `str` label, and the
|
|||||||
`pdp` label.
|
`pdp` label.
|
||||||
|
|
||||||
On the [VAX](https://en.wikipedia.org/wiki/VAX), the program
|
On the [VAX](https://en.wikipedia.org/wiki/VAX), the program
|
||||||
[pushes](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)) 9 (the length
|
[pushes](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)) 9 (the length
|
||||||
of the string), the address of the string and 1 (the [file
|
of the string), the address of the string and 1, the [file
|
||||||
descriptor](https://en.wikipedia.org/wiki/File_descriptor) on the
|
descriptor](https://en.wikipedia.org/wiki/File_descriptor) on the
|
||||||
[stack](https://en.wikipedia.org/wiki/Stack_(abstract_data_type))) and calls
|
[stack](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)), and calls
|
||||||
`write(2)`. Since we didn't know the exact calling sequence for [system
|
`write(2)`. Since we didn't know the exact calling sequence for [system
|
||||||
calls](https://en.wikipedia.org/wiki/System_call), we just copied the source for
|
calls](https://en.wikipedia.org/wiki/System_call), we just copied the source for
|
||||||
the `write(2)` system call stub into our program. After `write(2)` finishes, the
|
the `write(2)` system call stub into our program. After `write(2)` finishes, the
|
||||||
@@ -455,7 +455,7 @@ The only problem we had was that the program had chosen an
|
|||||||
Since everybody knows what a [PDP-11](https://en.wikipedia.org/wiki/PDP-11)
|
Since everybody knows what a [PDP-11](https://en.wikipedia.org/wiki/PDP-11)
|
||||||
branch instruction looks like (everyone knows that the traditional magic word
|
branch instruction looks like (everyone knows that the traditional magic word
|
||||||
for an executable, `0407`, is a [PDP-11](https://en.wikipedia.org/wiki/PDP-11)
|
for an executable, `0407`, is a [PDP-11](https://en.wikipedia.org/wiki/PDP-11)
|
||||||
[branch](https://en.wikipedia.org/wiki/Branch_(computer_science))), we changed
|
[branch](https://en.wikipedia.org/wiki/Branch_(computer_science)), we changed
|
||||||
that to [decimal](https://en.wikipedia.org/wiki/Decimal). After checking the
|
that to [decimal](https://en.wikipedia.org/wiki/Decimal). After checking the
|
||||||
size of the resulting program we saw that it was one byte too long. The limit
|
size of the resulting program we saw that it was one byte too long. The limit
|
||||||
was 512 bytes, and our program was 513 bytes. So we changed the word `and` in
|
was 512 bytes, and our program was 513 bytes. So we changed the word `and` in
|
||||||
|
|||||||
@@ -452,7 +452,7 @@ that has ever been received! Like all great contest entries, it resulted in a
|
|||||||
change of rules for the following year. To prevent a flood of similar programs,
|
change of rules for the following year. To prevent a flood of similar programs,
|
||||||
the rules were changed, requesting non-machine specific code.</p>
|
the rules were changed, requesting non-machine specific code.</p>
|
||||||
<p>This program was selected for the 1987 t-shirt collection.</p>
|
<p>This program was selected for the 1987 t-shirt collection.</p>
|
||||||
<p>The C startup routine (via <a href="https://en.wikipedia.org/wiki/Crt0">crt0.o</a>)
|
<p>The C startup routine, via <a href="https://en.wikipedia.org/wiki/Crt0">crt0.o</a>,
|
||||||
transfers control to a location named <code>main</code>. In this case, <code>main</code> just happens
|
transfers control to a location named <code>main</code>. In this case, <code>main</code> just happens
|
||||||
to be in the data area. The array of <code>short</code>s, which has been further
|
to be in the data area. The array of <code>short</code>s, which has been further
|
||||||
obfuscated by use of different data types, just happens to form a meaningful set
|
obfuscated by use of different data types, just happens to form a meaningful set
|
||||||
@@ -549,7 +549,7 @@ Our program is idempotent under <code>cb</code>.</p>
|
|||||||
<h3 id="more-detailed-analysis">More detailed analysis</h3>
|
<h3 id="more-detailed-analysis">More detailed analysis</h3>
|
||||||
<p>When this program is compiled, the compiler places the array somewhere in
|
<p>When this program is compiled, the compiler places the array somewhere in
|
||||||
memory, just like it places any compiled code somewhere in memory. Usually, the
|
memory, just like it places any compiled code somewhere in memory. Usually, the
|
||||||
C startup code (<a href="https://en.wikipedia.org/wiki/Crt0">crt0.o</a>) calls a routine
|
C startup code, <a href="https://en.wikipedia.org/wiki/Crt0">crt0.o</a>, calls a routine
|
||||||
named <code>main()</code>. The loader fills in the address in the startup code, but at
|
named <code>main()</code>. The loader fills in the address in the startup code, but at
|
||||||
least on the old systems where this program ran, it doesn’t know that the
|
least on the old systems where this program ran, it doesn’t know that the
|
||||||
<code>main()</code> in this program isn’t code but data!</p>
|
<code>main()</code> in this program isn’t code but data!</p>
|
||||||
@@ -562,7 +562,7 @@ with the <code>calls</code> instruction. This instruction uses the first (2-byte
|
|||||||
<a href="https://en.wikipedia.org/wiki/Word_(computer_architecture)">word</a> of the called
|
<a href="https://en.wikipedia.org/wiki/Word_(computer_architecture)">word</a> of the called
|
||||||
routine as a mask of
|
routine as a mask of
|
||||||
<a href="https://en.wikipedia.org/wiki/Processor_register">registers</a> that are to be
|
<a href="https://en.wikipedia.org/wiki/Processor_register">registers</a> that are to be
|
||||||
saved on the <a href="https://en.wikipedia.org/wiki/Stack_(abstract_data_type)">stack</a>.
|
saved on the <a href="https://en.wikipedia.org/wiki/Stack(abstract_data_type)">stack</a>.
|
||||||
In other words, on the VAX the first word can be anything. On the
|
In other words, on the VAX the first word can be anything. On the
|
||||||
<a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a>, the first word
|
<a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a>, the first word
|
||||||
is a <a href="https://en.wikipedia.org/wiki/Branch_(computer_science)">branch</a>
|
is a <a href="https://en.wikipedia.org/wiki/Branch_(computer_science)">branch</a>
|
||||||
@@ -664,9 +664,9 @@ programs use is after the <code>str</code> label, and the
|
|||||||
<code>pdp</code> label.</p>
|
<code>pdp</code> label.</p>
|
||||||
<p>On the <a href="https://en.wikipedia.org/wiki/VAX">VAX</a>, the program
|
<p>On the <a href="https://en.wikipedia.org/wiki/VAX">VAX</a>, the program
|
||||||
<a href="https://en.wikipedia.org/wiki/Stack_(abstract_data_type)">pushes</a> 9 (the length
|
<a href="https://en.wikipedia.org/wiki/Stack_(abstract_data_type)">pushes</a> 9 (the length
|
||||||
of the string), the address of the string and 1 (the <a href="https://en.wikipedia.org/wiki/File_descriptor">file
|
of the string), the address of the string and 1, the <a href="https://en.wikipedia.org/wiki/File_descriptor">file
|
||||||
descriptor</a> on the
|
descriptor</a> on the
|
||||||
<a href="https://en.wikipedia.org/wiki/Stack_(abstract_data_type)">stack</a>) and calls
|
<a href="https://en.wikipedia.org/wiki/Stack_(abstract_data_type)">stack</a>, and calls
|
||||||
<code>write(2)</code>. Since we didn’t know the exact calling sequence for <a href="https://en.wikipedia.org/wiki/System_call">system
|
<code>write(2)</code>. Since we didn’t know the exact calling sequence for <a href="https://en.wikipedia.org/wiki/System_call">system
|
||||||
calls</a>, we just copied the source for
|
calls</a>, we just copied the source for
|
||||||
the <code>write(2)</code> system call stub into our program. After <code>write(2)</code> finishes, the
|
the <code>write(2)</code> system call stub into our program. After <code>write(2)</code> finishes, the
|
||||||
@@ -745,7 +745,7 @@ The only problem we had was that the program had chosen an
|
|||||||
Since everybody knows what a <a href="https://en.wikipedia.org/wiki/PDP-11">PDP-11</a>
|
Since everybody knows what a <a href="https://en.wikipedia.org/wiki/PDP-11">PDP-11</a>
|
||||||
branch instruction looks like (everyone knows that the traditional magic word
|
branch instruction looks like (everyone knows that the traditional magic word
|
||||||
for an executable, <code>0407</code>, is a <a href="https://en.wikipedia.org/wiki/PDP-11">PDP-11</a>
|
for an executable, <code>0407</code>, is a <a href="https://en.wikipedia.org/wiki/PDP-11">PDP-11</a>
|
||||||
<a href="https://en.wikipedia.org/wiki/Branch_(computer_science)">branch</a>), we changed
|
<a href="https://en.wikipedia.org/wiki/Branch_(computer_science)">branch</a>, we changed
|
||||||
that to <a href="https://en.wikipedia.org/wiki/Decimal">decimal</a>. After checking the
|
that to <a href="https://en.wikipedia.org/wiki/Decimal">decimal</a>. After checking the
|
||||||
size of the resulting program we saw that it was one byte too long. The limit
|
size of the resulting program we saw that it was one byte too long. The limit
|
||||||
was 512 bytes, and our program was 513 bytes. So we changed the word <code>and</code> in
|
was 512 bytes, and our program was 513 bytes. So we changed the word <code>and</code> in
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@ and try to figure how it does what it does! You may then wish to look at the
|
|||||||
Author's remarks for even more details.
|
Author's remarks for even more details.
|
||||||
|
|
||||||
Hints against machine dependent code were added to the [rules](rules.txt) to
|
Hints against machine dependent code were added to the [rules](rules.txt) to
|
||||||
avoid another 1984 style entry ([1984/mullender](../1984/mullender/index.html)).
|
avoid another 1984 style [1984/mullender](../1984/mullender/index.html) entry.
|
||||||
[Rules](rules.txt) and [results](../years.html#1985) were posted to _net.lang.c_
|
[Rules](rules.txt) and [results](../years.html#1985) were posted to _net.lang.c_
|
||||||
and _net.unix-wizards_. Larry Bassel was invited to help in the judging.
|
and _net.unix-wizards_. Larry Bassel was invited to help in the judging.
|
||||||
Awards were given to 5 classes of programs since we were unable to select only
|
Awards were given to 5 classes of programs since we were unable to select only
|
||||||
|
|||||||
@@ -18,8 +18,8 @@
|
|||||||
./try.sh
|
./try.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
If you have the `primes(6)` tool (sometimes part of [BSD
|
If you have the `primes(6)` tool (sometimes part of
|
||||||
Games](https://github.com/vattam/BSDGames)) you can see
|
([BSD](https://github.com/vattam/BSDGames) Games) you can see
|
||||||
what of the output in the first `N` (say `15` or `25`) lines are primes:
|
what of the output in the first `N` (say `15` or `25`) lines are primes:
|
||||||
|
|
||||||
``` <!---sh-->
|
``` <!---sh-->
|
||||||
|
|||||||
@@ -403,8 +403,8 @@ Location: <a href="../../location.html#SE">SE</a> - <em>Kingdom of Sweden</em> (
|
|||||||
<pre><code> ./august</code></pre>
|
<pre><code> ./august</code></pre>
|
||||||
<h2 id="try">Try:</h2>
|
<h2 id="try">Try:</h2>
|
||||||
<pre><code> ./try.sh</code></pre>
|
<pre><code> ./try.sh</code></pre>
|
||||||
<p>If you have the <code>primes(6)</code> tool (sometimes part of <a href="https://github.com/vattam/BSDGames">BSD
|
<p>If you have the <code>primes(6)</code> tool (sometimes part of
|
||||||
Games</a>) you can see
|
(<a href="https://github.com/vattam/BSDGames">BSD</a> Games) you can see
|
||||||
what of the output in the first <code>N</code> (say <code>15</code> or <code>25</code>) lines are primes:</p>
|
what of the output in the first <code>N</code> (say <code>15</code> or <code>25</code>) lines are primes:</p>
|
||||||
<pre><code> ./primes.sh # 15
|
<pre><code> ./primes.sh # 15
|
||||||
./primes.sh 25</code></pre>
|
./primes.sh 25</code></pre>
|
||||||
|
|||||||
+1
-1
@@ -388,7 +388,7 @@ to compile it and how to run the winning program. Look at the winning source
|
|||||||
and try to figure how it does what it does! You may then wish to look at the
|
and try to figure how it does what it does! You may then wish to look at the
|
||||||
Author’s remarks for even more details.</p>
|
Author’s remarks for even more details.</p>
|
||||||
<p>Hints against machine dependent code were added to the <a href="rules.txt">rules</a> to
|
<p>Hints against machine dependent code were added to the <a href="rules.txt">rules</a> to
|
||||||
avoid another 1984 style entry (<a href="../1984/mullender/index.html">1984/mullender</a>).
|
avoid another 1984 style <a href="../1984/mullender/index.html">1984/mullender</a> entry.
|
||||||
<a href="rules.txt">Rules</a> and <a href="../years.html#1985">results</a> were posted to <em>net.lang.c</em>
|
<a href="rules.txt">Rules</a> and <a href="../years.html#1985">results</a> were posted to <em>net.lang.c</em>
|
||||||
and <em>net.unix-wizards</em>. Larry Bassel was invited to help in the judging.
|
and <em>net.unix-wizards</em>. Larry Bassel was invited to help in the judging.
|
||||||
Awards were given to 5 classes of programs since we were unable to select only
|
Awards were given to 5 classes of programs since we were unable to select only
|
||||||
|
|||||||
+1
-1
@@ -13,7 +13,7 @@ A poll was taken for the worst code for
|
|||||||
[BSD](https://en.wikipedia.org/wiki/Berkeley_Software_Distribution) and [System
|
[BSD](https://en.wikipedia.org/wiki/Berkeley_Software_Distribution) and [System
|
||||||
V](https://en.wikipedia.org/wiki/UNIX_System_V) program. The [Bourne
|
V](https://en.wikipedia.org/wiki/UNIX_System_V) program. The [Bourne
|
||||||
Shell](https://en.wikipedia.org/wiki/Bourne_shell) (`/bin/sh`) won for both
|
Shell](https://en.wikipedia.org/wiki/Bourne_shell) (`/bin/sh`) won for both
|
||||||
systems. The BSD [finger](https://en.wikipedia.org/wiki/Finger_(protocol))
|
systems. The BSD [finger](https://en.wikipedia.org/wiki/Finger_(protocol))
|
||||||
program took third place.
|
program took third place.
|
||||||
|
|
||||||
[Rules](rules.txt) and [results](../years.html#1986) were posted to _net.lang.c_
|
[Rules](rules.txt) and [results](../years.html#1986) were posted to _net.lang.c_
|
||||||
|
|||||||
+2
-2
@@ -19,8 +19,8 @@ This caused a number of System V C pre-preprocessors to gripe about a
|
|||||||
syntax error.
|
syntax error.
|
||||||
|
|
||||||
This program is a masterpiece of obfuscation and humor. Larry Wall (the hacker
|
This program is a masterpiece of obfuscation and humor. Larry Wall (the hacker
|
||||||
who gave us [rn](https://en.wikipedia.org/wiki/Rn_(newsreader)) and
|
who gave us [rn](https://en.wikipedia.org/wiki/Rn_(newsreader)) and
|
||||||
[patch](https://en.wikipedia.org/wiki/Patch_(Unix))) asks you to compile and
|
[patch](https://en.wikipedia.org/wiki/Patch_(Unix)), etc.) asks you to compile and
|
||||||
consider the warning message generated by the C compiler. Then execute the
|
consider the warning message generated by the C compiler. Then execute the
|
||||||
program and type characters into its standard input. You will see why the
|
program and type characters into its standard input. You will see why the
|
||||||
compiler documents the program.
|
compiler documents the program.
|
||||||
|
|||||||
@@ -407,7 +407,7 @@ This caused a number of System V C pre-preprocessors to gripe about a
|
|||||||
syntax error.</p>
|
syntax error.</p>
|
||||||
<p>This program is a masterpiece of obfuscation and humor. Larry Wall (the hacker
|
<p>This program is a masterpiece of obfuscation and humor. Larry Wall (the hacker
|
||||||
who gave us <a href="https://en.wikipedia.org/wiki/Rn_(newsreader)">rn</a> and
|
who gave us <a href="https://en.wikipedia.org/wiki/Rn_(newsreader)">rn</a> and
|
||||||
<a href="https://en.wikipedia.org/wiki/Patch_(Unix)">patch</a>) asks you to compile and
|
<a href="https://en.wikipedia.org/wiki/Patch_(Unix)">patch</a>, etc.) asks you to compile and
|
||||||
consider the warning message generated by the C compiler. Then execute the
|
consider the warning message generated by the C compiler. Then execute the
|
||||||
program and type characters into its standard input. You will see why the
|
program and type characters into its standard input. You will see why the
|
||||||
compiler documents the program.</p>
|
compiler documents the program.</p>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ We believe that you too will be amazed at just how much power Mr. Lievaart
|
|||||||
packed into 1024 bytes!
|
packed into 1024 bytes!
|
||||||
|
|
||||||
This Plays the game of [Reversi
|
This Plays the game of [Reversi
|
||||||
(Othello)](https://en.wikipedia.org/wiki/Reversi)! Compile and run. It then
|
[Othello](https://en.wikipedia.org/wiki/Reversi)! Compile and run. It then
|
||||||
asks for a playing level. Enter 0-10 (easy-hard). It then asks for
|
asks for a playing level. Enter 0-10 (easy-hard). It then asks for
|
||||||
your move. A move is a number within 11-88, or 99 to pass. Illegal
|
your move. A move is a number within 11-88, or 99 to pass. Illegal
|
||||||
moves (except for an illegal pass) are rejected. Then the computer
|
moves (except for an illegal pass) are rejected. Then the computer
|
||||||
|
|||||||
@@ -409,8 +409,8 @@ Location: <a href="../../location.html#NL">NL</a> - <em>Kingdom of the Netherlan
|
|||||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||||
<p>We believe that you too will be amazed at just how much power Mr. Lievaart
|
<p>We believe that you too will be amazed at just how much power Mr. Lievaart
|
||||||
packed into 1024 bytes!</p>
|
packed into 1024 bytes!</p>
|
||||||
<p>This Plays the game of <a href="https://en.wikipedia.org/wiki/Reversi">Reversi
|
<p>This Plays the game of [Reversi
|
||||||
(Othello)</a>! Compile and run. It then
|
<a href="https://en.wikipedia.org/wiki/Reversi">Othello</a>! Compile and run. It then
|
||||||
asks for a playing level. Enter 0-10 (easy-hard). It then asks for
|
asks for a playing level. Enter 0-10 (easy-hard). It then asks for
|
||||||
your move. A move is a number within 11-88, or 99 to pass. Illegal
|
your move. A move is a number within 11-88, or 99 to pass. Illegal
|
||||||
moves (except for an illegal pass) are rejected. Then the computer
|
moves (except for an illegal pass) are rejected. Then the computer
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ For an interesting document on APL, see
|
|||||||
|
|
||||||
This program is a handy picoAPL interpreter written in `C--`. It
|
This program is a handy picoAPL interpreter written in `C--`. It
|
||||||
outputs the evaluation of an
|
outputs the evaluation of an
|
||||||
[APL](https://en.wikipedia.org/wiki/APL_(programming_language)) expression from standard
|
[APL](https://en.wikipedia.org/wiki/APL_(programming_language)) expression from standard
|
||||||
input. Functions are limited to dyadic `+`,`-`,`x`, and unary `-`;
|
input. Functions are limited to dyadic `+`,`-`,`x`, and unary `-`;
|
||||||
numerals must be binary. Parentheses may be used for
|
numerals must be binary. Parentheses may be used for
|
||||||
grouping. For example:
|
grouping. For example:
|
||||||
|
|||||||
+1
-1
@@ -80,7 +80,7 @@ by the receiver. Command shell archives alleviate this problem somewhat, but
|
|||||||
still require standardization for the function of data compression and
|
still require standardization for the function of data compression and
|
||||||
mail-transparency encoding. On Unix, these coding format quandaries are overcome
|
mail-transparency encoding. On Unix, these coding format quandaries are overcome
|
||||||
by planting a novel [Trojan
|
by planting a novel [Trojan
|
||||||
Horse](https://en.wikipedia.org/wiki/Trojan_horse_(computing)) in the archive
|
Horse](https://en.wikipedia.org/wiki/Trojan_horse_(computing)) in the archive
|
||||||
header to perform negotiation-less decoding.
|
header to perform negotiation-less decoding.
|
||||||
|
|
||||||
Specifically, we outline the development of an extraordinarily compact portable
|
Specifically, we outline the development of an extraordinarily compact portable
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ Why is the following label necessary?
|
|||||||
```
|
```
|
||||||
|
|
||||||
Notice that if you C beautify (cb) or pre-process this program, it
|
Notice that if you C beautify (cb) or pre-process this program, it
|
||||||
will no longer work correctly, if at all. (go ahead, try it... :-))
|
will no longer work correctly, if at all. Go ahead, try it... :-)
|
||||||
|
|
||||||
NOTE: One should remove the final trailing newline to obtain the
|
NOTE: One should remove the final trailing newline to obtain the
|
||||||
original source file. This step is not needed to compile
|
original source file. This step is not needed to compile
|
||||||
|
|||||||
@@ -405,7 +405,7 @@ Location: <a href="../../location.html#FR">FR</a> - <em>French Republic</em> (<e
|
|||||||
<p>Why is the following label necessary?</p>
|
<p>Why is the following label necessary?</p>
|
||||||
<pre><code> sorryfor_this_unused_but_very_needed_label:</code></pre>
|
<pre><code> sorryfor_this_unused_but_very_needed_label:</code></pre>
|
||||||
<p>Notice that if you C beautify (cb) or pre-process this program, it
|
<p>Notice that if you C beautify (cb) or pre-process this program, it
|
||||||
will no longer work correctly, if at all. (go ahead, try it… :-))</p>
|
will no longer work correctly, if at all. Go ahead, try it… :-)</p>
|
||||||
<p>NOTE: One should remove the final trailing newline to obtain the
|
<p>NOTE: One should remove the final trailing newline to obtain the
|
||||||
original source file. This step is not needed to compile
|
original source file. This step is not needed to compile
|
||||||
this entry.</p>
|
this entry.</p>
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ rotated from `the rug gary lent`!
|
|||||||
## Judges' remarks:
|
## Judges' remarks:
|
||||||
|
|
||||||
This filter, 80 chars plus a newline, fits into a single line on most
|
This filter, 80 chars plus a newline, fits into a single line on most
|
||||||
terminals (unless your terminal has a line wrap mis-feature :-)).
|
terminals, unless your terminal has a line wrap mis-feature :-).
|
||||||
|
|
||||||
Note in 2023: fixing this entry to work with modern systems increased the size,
|
Note in 2023: fixing this entry to work with modern systems increased the size,
|
||||||
originally to 106 characters but it was dropped back down to 80 with clever use
|
originally to 106 characters but it was dropped back down to 80 with clever use
|
||||||
|
|||||||
@@ -412,7 +412,7 @@ those who have a harder time reading backwards it says: <code>Gary lent the rug<
|
|||||||
rotated from <code>the rug gary lent</code>!</p>
|
rotated from <code>the rug gary lent</code>!</p>
|
||||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||||
<p>This filter, 80 chars plus a newline, fits into a single line on most
|
<p>This filter, 80 chars plus a newline, fits into a single line on most
|
||||||
terminals (unless your terminal has a line wrap mis-feature :-)).</p>
|
terminals, unless your terminal has a line wrap mis-feature :-).</p>
|
||||||
<p>Note in 2023: fixing this entry to work with modern systems increased the size,
|
<p>Note in 2023: fixing this entry to work with modern systems increased the size,
|
||||||
originally to 106 characters but it was dropped back down to 80 with clever use
|
originally to 106 characters but it was dropped back down to 80 with clever use
|
||||||
of the Makefile.</p>
|
of the Makefile.</p>
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ part.
|
|||||||
|
|
||||||
For more information on what you can do once you've piped [third](%%REPO_URL%%/1992/buzzard.2/third) into
|
For more information on what you can do once you've piped [third](%%REPO_URL%%/1992/buzzard.2/third) into
|
||||||
first, type `help` and consult
|
first, type `help` and consult
|
||||||
[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)) manuals for
|
[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)) manuals for
|
||||||
further reference. Six sample THIRD programs are included in the files
|
further reference. Six sample THIRD programs are included in the files
|
||||||
`demo1.th` through `demo6.th`. See [buzzard.2.README.html](buzzard.2.README.html)
|
`demo1.th` through `demo6.th`. See [buzzard.2.README.html](buzzard.2.README.html)
|
||||||
for more information.
|
for more information.
|
||||||
@@ -190,7 +190,7 @@ answer the question "what will this do when I run it". A reader who has
|
|||||||
deciphered `first` to this point may think they know the answer to this
|
deciphered `first` to this point may think they know the answer to this
|
||||||
question, but they may not know the answer to the more important question, "what
|
question, but they may not know the answer to the more important question, "what
|
||||||
will this program do when given the right input?"
|
will this program do when given the right input?"
|
||||||
[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)) aficionados,
|
[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)) aficionados,
|
||||||
and especially FORTH implementers, may recognize the similarity of the internal
|
and especially FORTH implementers, may recognize the similarity of the internal
|
||||||
compiler format to many FORTH internal representations, and, being aware that
|
compiler format to many FORTH internal representations, and, being aware that
|
||||||
FORTH interpreters can often be self-compiling, may be suspicious that this
|
FORTH interpreters can often be self-compiling, may be suspicious that this
|
||||||
|
|||||||
+2
-2
@@ -147,8 +147,8 @@ by comparing the function pointer with the function itself).
|
|||||||
Fourth, there are no independent routines for generating potential moves.
|
Fourth, there are no independent routines for generating potential moves.
|
||||||
Instead, the program generates its moves by brute force: for every piece it
|
Instead, the program generates its moves by brute force: for every piece it
|
||||||
controls on the board, it attempts to move it to every square on the board.
|
controls on the board, it attempts to move it to every square on the board.
|
||||||
Those moves that are legal it then explores to see their effects (using
|
Those moves that are legal it then explores to see their effects, using
|
||||||
[alpha-beta search](https://en.wikipedia.org/wiki/Alpha-beta_pruning)). This
|
[alpha-beta search](https://en.wikipedia.org/wiki/Alpha-beta_pruning). This
|
||||||
tactic somewhat obfuscates the algorithm used by the program.
|
tactic somewhat obfuscates the algorithm used by the program.
|
||||||
|
|
||||||
Finally, there are three key constants that occur throughout the program: `64`,
|
Finally, there are three key constants that occur throughout the program: `64`,
|
||||||
|
|||||||
@@ -499,8 +499,8 @@ by comparing the function pointer with the function itself).</p>
|
|||||||
<p>Fourth, there are no independent routines for generating potential moves.
|
<p>Fourth, there are no independent routines for generating potential moves.
|
||||||
Instead, the program generates its moves by brute force: for every piece it
|
Instead, the program generates its moves by brute force: for every piece it
|
||||||
controls on the board, it attempts to move it to every square on the board.
|
controls on the board, it attempts to move it to every square on the board.
|
||||||
Those moves that are legal it then explores to see their effects (using
|
Those moves that are legal it then explores to see their effects, using
|
||||||
<a href="https://en.wikipedia.org/wiki/Alpha-beta_pruning">alpha-beta search</a>). This
|
<a href="https://en.wikipedia.org/wiki/Alpha-beta_pruning">alpha-beta search</a>. This
|
||||||
tactic somewhat obfuscates the algorithm used by the program.</p>
|
tactic somewhat obfuscates the algorithm used by the program.</p>
|
||||||
<p>Finally, there are three key constants that occur throughout the program: <code>64</code>,
|
<p>Finally, there are three key constants that occur throughout the program: <code>64</code>,
|
||||||
<code>8</code>, and <code>3</code> (<code>lg 8</code>). Rather than making these available at compile-time,
|
<code>8</code>, and <code>3</code> (<code>lg 8</code>). Rather than making these available at compile-time,
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
where:
|
where:
|
||||||
|
|
||||||
`datafile` is the initial pattern (default: [dgibson.data1](%%REPO_URL%%/1993/dgibson/dgibson.data1))
|
`datafile` is the initial pattern (default is the [dgibson.data1](%%REPO_URL%%/1993/dgibson/dgibson.data1) file)
|
||||||
|
|
||||||
|
|
||||||
## Try:
|
## Try:
|
||||||
|
|||||||
@@ -402,7 +402,7 @@ Location: <a href="../../location.html#ZZ">ZZ</a> - <em>Unknown location</em></l
|
|||||||
<h2 id="to-use">To use:</h2>
|
<h2 id="to-use">To use:</h2>
|
||||||
<pre><code> ./dgibson.sh [datafile]</code></pre>
|
<pre><code> ./dgibson.sh [datafile]</code></pre>
|
||||||
<p>where:</p>
|
<p>where:</p>
|
||||||
<p><code>datafile</code> is the initial pattern (default: <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1993/dgibson/dgibson.data1">dgibson.data1</a>)</p>
|
<p><code>datafile</code> is the initial pattern (default is the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1993/dgibson/dgibson.data1">dgibson.data1</a> file)</p>
|
||||||
<h2 id="try">Try:</h2>
|
<h2 id="try">Try:</h2>
|
||||||
<pre><code> ./try.sh</code></pre>
|
<pre><code> ./try.sh</code></pre>
|
||||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||||
|
|||||||
+1
-1
@@ -25,7 +25,7 @@ errors.
|
|||||||
|
|
||||||
Rule abuse was encouraged this year - two of this year's winning entries found
|
Rule abuse was encouraged this year - two of this year's winning entries found
|
||||||
new and interesting abuses of the rules. Next year's rules will change
|
new and interesting abuses of the rules. Next year's rules will change
|
||||||
due to these ([smr](smr/index.html) and [dodsond2](dodsond2/index.html)) entries'
|
due to these [smr](smr/index.html) and [dodsond2](dodsond2/index.html) entries'
|
||||||
forms of abuse.
|
forms of abuse.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -403,7 +403,7 @@ unable to find an ANSI C compiler that flagged such expressions as
|
|||||||
errors.</p>
|
errors.</p>
|
||||||
<p>Rule abuse was encouraged this year - two of this year’s winning entries found
|
<p>Rule abuse was encouraged this year - two of this year’s winning entries found
|
||||||
new and interesting abuses of the rules. Next year’s rules will change
|
new and interesting abuses of the rules. Next year’s rules will change
|
||||||
due to these (<a href="smr/index.html">smr</a> and <a href="dodsond2/index.html">dodsond2</a>) entries’
|
due to these <a href="smr/index.html">smr</a> and <a href="dodsond2/index.html">dodsond2</a> entries’
|
||||||
forms of abuse.</p>
|
forms of abuse.</p>
|
||||||
<h2 id="want-to-be-an-ioccc-judge">Want to be an IOCCC Judge?</h2>
|
<h2 id="want-to-be-an-ioccc-judge">Want to be an IOCCC Judge?</h2>
|
||||||
<p>We are thinking about adding a 3rd judge to our team. A 3rd judge
|
<p>We are thinking about adding a 3rd judge to our team. A 3rd judge
|
||||||
|
|||||||
@@ -67,18 +67,18 @@ The basic theme (pun) of this program is:
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
My entry ([shapiro.c](%%REPO_URL%%/1994/shapiro/shapiro.c)) is mostly comments, formatted in the shape of a
|
My entry, [shapiro.c](%%REPO_URL%%/1994/shapiro/shapiro.c), is mostly comments, formatted in the shape of a
|
||||||
clock. If you strip out the comments and look at the code you will
|
clock. If you strip out the comments and look at the code you will
|
||||||
quickly realize that the comments were the important part and that
|
quickly realize that the comments were the important part and that
|
||||||
the code does very little (see pun above). It writes (to `stdout`)
|
the code does very little (see pun above). It writes (to `stdout`)
|
||||||
another C program ([shapiro_t2.c](%%REPO_URL%%/1994/shapiro/shapiro_t2.c)). This is the first level of
|
another C program ([shapiro_t2.c](%%REPO_URL%%/1994/shapiro/shapiro_t2.c). This is the first level of
|
||||||
obfuscation.
|
obfuscation.
|
||||||
|
|
||||||
The second program ([shapiro_t2.c](%%REPO_URL%%/1994/shapiro/shapiro_t2.c) (use `make everything` first)
|
The second program ([shapiro_t2.c](%%REPO_URL%%/1994/shapiro/shapiro_t2.c) (use `make everything` first)
|
||||||
prints a clock in the upper right hand corner of your VTxxx/ANSI display.
|
prints a clock in the upper right hand corner of your VTxxx/ANSI display.
|
||||||
|
|
||||||
Most of the surface obfuscation in the second program
|
Most of the surface obfuscation in the second program,
|
||||||
([shapiro_t2.c](%%REPO_URL%%/1994/shapiro/shapiro_t2.c)) was an attempt to make it as small as possible.
|
[shapiro_t2.c](%%REPO_URL%%/1994/shapiro/shapiro_t2.c), was an attempt to make it as small as possible.
|
||||||
You should be able to see around this with `cb(1)` and some more intelligent
|
You should be able to see around this with `cb(1)` and some more intelligent
|
||||||
variable names. Once you get past this you will realize that the third level of
|
variable names. Once you get past this you will realize that the third level of
|
||||||
obfuscation is a six member client/server hierarchy. (See the
|
obfuscation is a six member client/server hierarchy. (See the
|
||||||
|
|||||||
@@ -430,16 +430,16 @@ this program. Note that this alt file is currently missing. See
|
|||||||
<p>The basic theme (pun) of this program is:</p>
|
<p>The basic theme (pun) of this program is:</p>
|
||||||
<pre><code> "This time (everything) is not where it should be."
|
<pre><code> "This time (everything) is not where it should be."
|
||||||
~~~~</code></pre>
|
~~~~</code></pre>
|
||||||
<p>My entry (<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/shapiro.c">shapiro.c</a>) is mostly comments, formatted in the shape of a
|
<p>My entry, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/shapiro.c">shapiro.c</a>, is mostly comments, formatted in the shape of a
|
||||||
clock. If you strip out the comments and look at the code you will
|
clock. If you strip out the comments and look at the code you will
|
||||||
quickly realize that the comments were the important part and that
|
quickly realize that the comments were the important part and that
|
||||||
the code does very little (see pun above). It writes (to <code>stdout</code>)
|
the code does very little (see pun above). It writes (to <code>stdout</code>)
|
||||||
another C program (<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/shapiro_t2.c">shapiro_t2.c</a>). This is the first level of
|
another C program (<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/shapiro_t2.c">shapiro_t2.c</a>. This is the first level of
|
||||||
obfuscation.</p>
|
obfuscation.</p>
|
||||||
<p>The second program (<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/shapiro_t2.c">shapiro_t2.c</a> (use <code>make everything</code> first)
|
<p>The second program (<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/shapiro_t2.c">shapiro_t2.c</a> (use <code>make everything</code> first)
|
||||||
prints a clock in the upper right hand corner of your VTxxx/ANSI display.</p>
|
prints a clock in the upper right hand corner of your VTxxx/ANSI display.</p>
|
||||||
<p>Most of the surface obfuscation in the second program
|
<p>Most of the surface obfuscation in the second program,
|
||||||
(<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/shapiro_t2.c">shapiro_t2.c</a>) was an attempt to make it as small as possible.
|
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/shapiro_t2.c">shapiro_t2.c</a>, was an attempt to make it as small as possible.
|
||||||
You should be able to see around this with <code>cb(1)</code> and some more intelligent
|
You should be able to see around this with <code>cb(1)</code> and some more intelligent
|
||||||
variable names. Once you get past this you will realize that the third level of
|
variable names. Once you get past this you will realize that the third level of
|
||||||
obfuscation is a six member client/server hierarchy. (See the
|
obfuscation is a six member client/server hierarchy. (See the
|
||||||
|
|||||||
@@ -380,7 +380,7 @@
|
|||||||
|
|
||||||
<!-- BEFORE: 1st line of markdown file: 1994/shapiro/shapiro.md -->
|
<!-- BEFORE: 1st line of markdown file: 1994/shapiro/shapiro.md -->
|
||||||
<h1 id="hints">HINTS</h1>
|
<h1 id="hints">HINTS</h1>
|
||||||
<p>For the first program (<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/shapiro.c">shapiro.c</a>):</p>
|
<p>For the first program, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/shapiro/shapiro.c">shapiro.c</a>:</p>
|
||||||
<p>This is a very simple program:</p>
|
<p>This is a very simple program:</p>
|
||||||
<pre><code> 1. #include <stdio.h>
|
<pre><code> 1. #include <stdio.h>
|
||||||
2. main()
|
2. main()
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# HINTS
|
# HINTS
|
||||||
|
|
||||||
For the first program ([shapiro.c](%%REPO_URL%%/1994/shapiro/shapiro.c)):
|
For the first program, [shapiro.c](%%REPO_URL%%/1994/shapiro/shapiro.c):
|
||||||
|
|
||||||
|
|
||||||
This is a very simple program:
|
This is a very simple program:
|
||||||
|
|||||||
+3
-3
@@ -86,9 +86,9 @@ fix it without breaking something else?
|
|||||||
|
|
||||||
This program contains four pairs of fractals/effects and three methods of
|
This program contains four pairs of fractals/effects and three methods of
|
||||||
animating them. There are two windows for a pair of fractals, one of which
|
animating them. There are two windows for a pair of fractals, one of which
|
||||||
contains static fractal (e.g. [Mandelbrot
|
contains static fractal (e.g., [Mandelbrot](https://en.wikipedia.org/wiki/Mandelbrot_set) set)
|
||||||
set](https://en.wikipedia.org/wiki/Mandelbrot_set)) and the other an animating
|
and the other an animating
|
||||||
one (e.g. [Julia set](https://en.wikipedia.org/wiki/Julia_set)) which is derived
|
one (e.g., [Julia](https://en.wikipedia.org/wiki/Julia_set) set) which is derived
|
||||||
from the same formula as the static one. Only one pair of fractals can be
|
from the same formula as the static one. Only one pair of fractals can be
|
||||||
displayed in one process.
|
displayed in one process.
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -434,9 +434,9 @@ fix it without breaking something else?</p>
|
|||||||
<h3 id="interactive-fractals-for-x-window-system">Interactive Fractals for X Window System</h3>
|
<h3 id="interactive-fractals-for-x-window-system">Interactive Fractals for X Window System</h3>
|
||||||
<p>This program contains four pairs of fractals/effects and three methods of
|
<p>This program contains four pairs of fractals/effects and three methods of
|
||||||
animating them. There are two windows for a pair of fractals, one of which
|
animating them. There are two windows for a pair of fractals, one of which
|
||||||
contains static fractal (e.g. <a href="https://en.wikipedia.org/wiki/Mandelbrot_set">Mandelbrot
|
contains static fractal (e.g., <a href="https://en.wikipedia.org/wiki/Mandelbrot_set">Mandelbrot</a> set)
|
||||||
set</a>) and the other an animating
|
and the other an animating
|
||||||
one (e.g. <a href="https://en.wikipedia.org/wiki/Julia_set">Julia set</a>) which is derived
|
one (e.g., <a href="https://en.wikipedia.org/wiki/Julia_set">Julia</a> set) which is derived
|
||||||
from the same formula as the static one. Only one pair of fractals can be
|
from the same formula as the static one. Only one pair of fractals can be
|
||||||
displayed in one process.</p>
|
displayed in one process.</p>
|
||||||
<p>To animate the fractal, you must move your mouse on the static
|
<p>To animate the fractal, you must move your mouse on the static
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ event of a system shutdown or reboot.
|
|||||||
|
|
||||||
### Bugs
|
### Bugs
|
||||||
|
|
||||||
The alternative version ([weisberg.alt.c](%%REPO_URL%%/1994/weisberg/weisberg.alt.c)) has never actually run
|
The alternative version ([weisberg.alt.c](%%REPO_URL%%/1994/weisberg/weisberg.alt.c) source) has never actually run
|
||||||
to completion. After running for close to a week it had reached somewhere around
|
to completion. After running for close to a week it had reached somewhere around
|
||||||
250e6, when it became necessary to test the reboot feature (which worked
|
250e6, when it became necessary to test the reboot feature (which worked
|
||||||
remarkably well). As there are quite a lot of primes to be found before reaching
|
remarkably well). As there are quite a lot of primes to be found before reaching
|
||||||
|
|||||||
@@ -433,7 +433,7 @@ run to completion, so as an added feature, it will cease execution upon
|
|||||||
reception of a signal (any will do equally well), as well as in the
|
reception of a signal (any will do equally well), as well as in the
|
||||||
event of a system shutdown or reboot.</p>
|
event of a system shutdown or reboot.</p>
|
||||||
<h3 id="bugs">Bugs</h3>
|
<h3 id="bugs">Bugs</h3>
|
||||||
<p>The alternative version (<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/weisberg/weisberg.alt.c">weisberg.alt.c</a>) has never actually run
|
<p>The alternative version (<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1994/weisberg/weisberg.alt.c">weisberg.alt.c</a> source) has never actually run
|
||||||
to completion. After running for close to a week it had reached somewhere around
|
to completion. After running for close to a week it had reached somewhere around
|
||||||
250e6, when it became necessary to test the reboot feature (which worked
|
250e6, when it became necessary to test the reboot feature (which worked
|
||||||
remarkably well). As there are quite a lot of primes to be found before reaching
|
remarkably well). As there are quite a lot of primes to be found before reaching
|
||||||
|
|||||||
+2
-2
@@ -39,8 +39,8 @@ commands including a way to do the above command but with more steps.
|
|||||||
|
|
||||||
Except for some silly requirements regarding input validation, CRC checking, and
|
Except for some silly requirements regarding input validation, CRC checking, and
|
||||||
similar unimportant fluff, this program is a fully compliant
|
similar unimportant fluff, this program is a fully compliant
|
||||||
[RFC1951](https://www.ietf.org/rfc/rfc1951.txt)/[RFC1952](https://www.ietf.org/rfc/rfc1952.txt)
|
[RFC1951](https://www.ietf.org/rfc/rfc1951.txt)/[RFC1952](https://www.ietf.org/rfc/rfc1952.txt),
|
||||||
([GNU Gzip](https://www.gnu.org/software/gzip/)) file uncompressor. Feed it a
|
[GNU Gzip](https://www.gnu.org/software/gzip/), file uncompressor. Feed it a
|
||||||
`gzip` compressed file on standard input, and it will write the fully
|
`gzip` compressed file on standard input, and it will write the fully
|
||||||
uncompressed original file to standard output.
|
uncompressed original file to standard output.
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -413,8 +413,8 @@ commands including a way to do the above command but with more steps.</p>
|
|||||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||||
<p>Except for some silly requirements regarding input validation, CRC checking, and
|
<p>Except for some silly requirements regarding input validation, CRC checking, and
|
||||||
similar unimportant fluff, this program is a fully compliant
|
similar unimportant fluff, this program is a fully compliant
|
||||||
<a href="https://www.ietf.org/rfc/rfc1951.txt">RFC1951</a>/<a href="https://www.ietf.org/rfc/rfc1952.txt">RFC1952</a>
|
<a href="https://www.ietf.org/rfc/rfc1951.txt">RFC1951</a>/<a href="https://www.ietf.org/rfc/rfc1952.txt">RFC1952</a>,
|
||||||
(<a href="https://www.gnu.org/software/gzip/">GNU Gzip</a>) file uncompressor. Feed it a
|
<a href="https://www.gnu.org/software/gzip/">GNU Gzip</a>, file uncompressor. Feed it a
|
||||||
<code>gzip</code> compressed file on standard input, and it will write the fully
|
<code>gzip</code> compressed file on standard input, and it will write the fully
|
||||||
uncompressed original file to standard output.</p>
|
uncompressed original file to standard output.</p>
|
||||||
<h3 id="objustifications-for-this-entry">ObJustifications for this entry:</h3>
|
<h3 id="objustifications-for-this-entry">ObJustifications for this entry:</h3>
|
||||||
|
|||||||
@@ -60,8 +60,9 @@ This 1-line program allows various analog ASCII clocks to print out the time;
|
|||||||
the ASCII clock is built from the command line arguments, so many different
|
the ASCII clock is built from the command line arguments, so many different
|
||||||
types of clocks can be generated. Three different scripts are supplied to print
|
types of clocks can be generated. Three different scripts are supplied to print
|
||||||
out a grandfather clock, a mantle clock that runs backwards, and a linear-style
|
out a grandfather clock, a mantle clock that runs backwards, and a linear-style
|
||||||
clock. (they are [clock1.sh](%%REPO_URL%%/1996/westley/clock1.sh), [clock2.sh](%%REPO_URL%%/1996/westley/clock2.sh), and
|
clock. (they are [clock1.sh](%%REPO_URL%%/1996/westley/clock1.sh),
|
||||||
[clock3.sh](%%REPO_URL%%/1996/westley/clock3.sh))
|
[clock2.sh](%%REPO_URL%%/1996/westley/clock2.sh), and
|
||||||
|
[clock3.sh](%%REPO_URL%%/1996/westley/clock3.sh).
|
||||||
|
|
||||||
The program makes the following (possibly non-portable) assumptions:
|
The program makes the following (possibly non-portable) assumptions:
|
||||||
|
|
||||||
|
|||||||
@@ -426,8 +426,9 @@ understand it.</p>
|
|||||||
the ASCII clock is built from the command line arguments, so many different
|
the ASCII clock is built from the command line arguments, so many different
|
||||||
types of clocks can be generated. Three different scripts are supplied to print
|
types of clocks can be generated. Three different scripts are supplied to print
|
||||||
out a grandfather clock, a mantle clock that runs backwards, and a linear-style
|
out a grandfather clock, a mantle clock that runs backwards, and a linear-style
|
||||||
clock. (they are <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1996/westley/clock1.sh">clock1.sh</a>, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1996/westley/clock2.sh">clock2.sh</a>, and
|
clock. (they are <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1996/westley/clock1.sh">clock1.sh</a>,
|
||||||
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1996/westley/clock3.sh">clock3.sh</a>)</p>
|
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1996/westley/clock2.sh">clock2.sh</a>, and
|
||||||
|
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1996/westley/clock3.sh">clock3.sh</a>.</p>
|
||||||
<p>The program makes the following (possibly non-portable) assumptions:</p>
|
<p>The program makes the following (possibly non-portable) assumptions:</p>
|
||||||
<ol type="1">
|
<ol type="1">
|
||||||
<li><p>Command line strings can be written to.</p></li>
|
<li><p>Command line strings can be written to.</p></li>
|
||||||
|
|||||||
@@ -77,8 +77,8 @@ the letter `e`.
|
|||||||
|
|
||||||
The IOCCC has been no stranger to this concept. Several winning entries from
|
The IOCCC has been no stranger to this concept. Several winning entries from
|
||||||
years past have accomplished interesting feats while completely avoiding the use
|
years past have accomplished interesting feats while completely avoiding the use
|
||||||
of certain C constructs thought to be essential (e.g.
|
of certain C constructs thought to be essential (e.g.,
|
||||||
[1988/robison.c](%%REPO_URL%%/1988/robison/robison.c)). If you have to ask why they would
|
[1988/robison.c](%%REPO_URL%%/1988/robison/robison.c) file). If you have to ask why they would
|
||||||
do it this way, then this contest just isn't for you.
|
do it this way, then this contest just isn't for you.
|
||||||
|
|
||||||
In continuing with this fine tradition, this program suggests to the ANSI
|
In continuing with this fine tradition, this program suggests to the ANSI
|
||||||
|
|||||||
@@ -441,8 +441,8 @@ entire novel (E. V. Wright’s “Gadsby”) in which no word contains
|
|||||||
the letter <code>e</code>.</p>
|
the letter <code>e</code>.</p>
|
||||||
<p>The IOCCC has been no stranger to this concept. Several winning entries from
|
<p>The IOCCC has been no stranger to this concept. Several winning entries from
|
||||||
years past have accomplished interesting feats while completely avoiding the use
|
years past have accomplished interesting feats while completely avoiding the use
|
||||||
of certain C constructs thought to be essential (e.g.
|
of certain C constructs thought to be essential (e.g.,
|
||||||
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1988/robison/robison.c">1988/robison.c</a>). If you have to ask why they would
|
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1988/robison/robison.c">1988/robison.c</a> file). If you have to ask why they would
|
||||||
do it this way, then this contest just isn’t for you.</p>
|
do it this way, then this contest just isn’t for you.</p>
|
||||||
<p>In continuing with this fine tradition, this program suggests to the ANSI
|
<p>In continuing with this fine tradition, this program suggests to the ANSI
|
||||||
committee some new practical simplifications for the C language. For instance,
|
committee some new practical simplifications for the C language. For instance,
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ The build script should give an example command to compile the program.
|
|||||||
### Features
|
### Features
|
||||||
|
|
||||||
[Basic Block](https://en.wikipedia.org/wiki/Basic_block)
|
[Basic Block](https://en.wikipedia.org/wiki/Basic_block)
|
||||||
[Cache](https://en.wikipedia.org/wiki/Cache_(computing)): Rather than
|
[Cache](https://en.wikipedia.org/wiki/Cache_(computing)): Rather than
|
||||||
translating each instruction individually the dynamic binary translator
|
translating each instruction individually the dynamic binary translator
|
||||||
generates a translation for an entire basic block of subject code. Having
|
generates a translation for an entire basic block of subject code. Having
|
||||||
translated a block once, the target code generated will be stored for the
|
translated a block once, the target code generated will be stored for the
|
||||||
@@ -138,7 +138,7 @@ The program runs [dynamically
|
|||||||
linked](https://en.wikipedia.org/wiki/Dynamic_linker) [ELF
|
linked](https://en.wikipedia.org/wiki/Dynamic_linker) [ELF
|
||||||
binaries](https://en.wikipedia.org/wiki/Executable_and_Linkable_Format), and
|
binaries](https://en.wikipedia.org/wiki/Executable_and_Linkable_Format), and
|
||||||
when the subject program attempts to make a call to a standard
|
when the subject program attempts to make a call to a standard
|
||||||
[library](https://en.wikipedia.org/wiki/Library_(computing)), the translator
|
[library](https://en.wikipedia.org/wiki/Library_(computing)), the translator
|
||||||
attempts to make an appropriate call to the native system libraries on the
|
attempts to make an appropriate call to the native system libraries on the
|
||||||
target machine. This involves mangling between different calling conventions,
|
target machine. This involves mangling between different calling conventions,
|
||||||
etc.
|
etc.
|
||||||
@@ -209,9 +209,9 @@ on to the next line of code.
|
|||||||
Due to space limitations only a handful of instructions are supported; these
|
Due to space limitations only a handful of instructions are supported; these
|
||||||
instructions which are supported are supported in somewhat non-conventional
|
instructions which are supported are supported in somewhat non-conventional
|
||||||
ways: chunks of the architecture (e.g. flags) are just ignored, the ELF
|
ways: chunks of the architecture (e.g. flags) are just ignored, the ELF
|
||||||
[loader](https://en.wikipedia.org/wiki/Loader_(computing)) does not really load
|
[loader](https://en.wikipedia.org/wiki/Loader_(computing)) does not really load
|
||||||
the [ELF binary](https://en.wikipedia.org/wiki/Executable_and_Linkable_Format),
|
the [ELF binary](https://en.wikipedia.org/wiki/Executable_and_Linkable_Format),
|
||||||
the target [library linking](https://en.wikipedia.org/wiki/Linker_(computing))
|
the target [library linking](https://en.wikipedia.org/wiki/Linker_(computing))
|
||||||
can only pass up to 3 parameters to the target library function, etc.
|
can only pass up to 3 parameters to the target library function, etc.
|
||||||
|
|
||||||
In short, please consider this a full disclaimer for any bug that may
|
In short, please consider this a full disclaimer for any bug that may
|
||||||
|
|||||||
@@ -53,8 +53,8 @@ You can use it by typing:
|
|||||||
|
|
||||||
or by giving the C source to its standard input.
|
or by giving the C source to its standard input.
|
||||||
|
|
||||||
`args` are given to the `main()` function of `bellard.c` (`argv[0]` is
|
`args` are given to the `main()` function of `bellard.c`, `argv[0]` is
|
||||||
[bellard.c](%%REPO_URL%%/2001/bellard/bellard.c)).
|
[bellard.c](%%REPO_URL%%/2001/bellard/bellard.c).
|
||||||
|
|
||||||
|
|
||||||
### Examples:
|
### Examples:
|
||||||
|
|||||||
@@ -420,8 +420,8 @@ program.</p>
|
|||||||
<p>You can use it by typing:</p>
|
<p>You can use it by typing:</p>
|
||||||
<pre><code> ./bellard bellard.c [args]...</code></pre>
|
<pre><code> ./bellard bellard.c [args]...</code></pre>
|
||||||
<p>or by giving the C source to its standard input.</p>
|
<p>or by giving the C source to its standard input.</p>
|
||||||
<p><code>args</code> are given to the <code>main()</code> function of <code>bellard.c</code> (<code>argv[0]</code> is
|
<p><code>args</code> are given to the <code>main()</code> function of <code>bellard.c</code>, <code>argv[0]</code> is
|
||||||
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/bellard/bellard.c">bellard.c</a>).</p>
|
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/bellard/bellard.c">bellard.c</a>.</p>
|
||||||
<h3 id="examples">Examples:</h3>
|
<h3 id="examples">Examples:</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Sample compilation and execution:</li>
|
<li>Sample compilation and execution:</li>
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ program would probably be rated somewhere around 1700-1900. It is better
|
|||||||
than most players, but will get destroyed by experienced human opponents.
|
than most players, but will get destroyed by experienced human opponents.
|
||||||
|
|
||||||
This program searches to a fixed depth of 3
|
This program searches to a fixed depth of 3
|
||||||
[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)). Because it does not
|
[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)). Because it does not
|
||||||
search very deep, it performs very poorly in quiet strategic positions.
|
search very deep, it performs very poorly in quiet strategic positions.
|
||||||
In such positions, it will often just shuffle pieces around aimlessly
|
In such positions, it will often just shuffle pieces around aimlessly
|
||||||
until a tactical exchange presents itself.
|
until a tactical exchange presents itself.
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
```
|
```
|
||||||
|
|
||||||
If you use vi(m) you can see a pattern in [herrmann2.cup](%%REPO_URL%%/2001/herrmann2/herrmann2.cup) and
|
If you use vi(m) you can see a pattern in [herrmann2.cup](%%REPO_URL%%/2001/herrmann2/herrmann2.cup) and
|
||||||
[herrmann2.ioccc][(%%REPO_URL%%/2001/herrmann2/herrmann2.ioccc]) by say:
|
[herrmann2.ioccc][(%%REPO_URL%%/2001/herrmann2/herrmann2.ioccc] by say:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -404,7 +404,7 @@ Location: <a href="../../location.html#DE">DE</a> - <em>Federal Republic of Germ
|
|||||||
<h2 id="try">Try:</h2>
|
<h2 id="try">Try:</h2>
|
||||||
<pre><code> ./try.sh</code></pre>
|
<pre><code> ./try.sh</code></pre>
|
||||||
<p>If you use vi(m) you can see a pattern in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.cup">herrmann2.cup</a> and
|
<p>If you use vi(m) you can see a pattern in <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.cup">herrmann2.cup</a> and
|
||||||
[herrmann2.ioccc][(https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.ioccc]) by say:</p>
|
[herrmann2.ioccc][(https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.ioccc] by say:</p>
|
||||||
<pre><code> /[pon]\</code></pre>
|
<pre><code> /[pon]\</code></pre>
|
||||||
<p>and</p>
|
<p>and</p>
|
||||||
<pre><code> /l</code></pre>
|
<pre><code> /l</code></pre>
|
||||||
|
|||||||
@@ -93,8 +93,8 @@ transcription to standard output as a [portable
|
|||||||
graymap](https://en.wikipedia.org/wiki/Netpbm#PGM_example) (PGM) file.
|
graymap](https://en.wikipedia.org/wiki/Netpbm#PGM_example) (PGM) file.
|
||||||
|
|
||||||
The specific transcription mode is the [Black
|
The specific transcription mode is the [Black
|
||||||
Speech](https://www.glyphweb.com/arda/b/blackspeech.html) ([Tengwar
|
Speech](https://www.glyphweb.com/arda/b/blackspeech.html)
|
||||||
mode](https://www.glyphweb.com/arda/t/tengwar.html)), as
|
([Tengwar](https://www.glyphweb.com/arda/t/tengwar.html) mode), as
|
||||||
used in the inscription on the [One
|
used in the inscription on the [One
|
||||||
Ring](https://www.glyphweb.com/arda/o/onering.html). The program handles the
|
Ring](https://www.glyphweb.com/arda/o/onering.html). The program handles the
|
||||||
following digraphs:
|
following digraphs:
|
||||||
|
|||||||
@@ -454,8 +454,8 @@ argument text into Tolkien’s Elvish letters, and writes the
|
|||||||
transcription to standard output as a <a href="https://en.wikipedia.org/wiki/Netpbm#PGM_example">portable
|
transcription to standard output as a <a href="https://en.wikipedia.org/wiki/Netpbm#PGM_example">portable
|
||||||
graymap</a> (PGM) file.</p>
|
graymap</a> (PGM) file.</p>
|
||||||
<p>The specific transcription mode is the <a href="https://www.glyphweb.com/arda/b/blackspeech.html">Black
|
<p>The specific transcription mode is the <a href="https://www.glyphweb.com/arda/b/blackspeech.html">Black
|
||||||
Speech</a> (<a href="https://www.glyphweb.com/arda/t/tengwar.html">Tengwar
|
Speech</a>
|
||||||
mode</a>), as
|
(<a href="https://www.glyphweb.com/arda/t/tengwar.html">Tengwar</a> mode), as
|
||||||
used in the inscription on the <a href="https://www.glyphweb.com/arda/o/onering.html">One
|
used in the inscription on the <a href="https://www.glyphweb.com/arda/o/onering.html">One
|
||||||
Ring</a>. The program handles the
|
Ring</a>. The program handles the
|
||||||
following digraphs:</p>
|
following digraphs:</p>
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ although the compiler gives it special meaning) and no preprocessor
|
|||||||
directives.
|
directives.
|
||||||
|
|
||||||
This program is a small
|
This program is a small
|
||||||
[ray-tracer](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)). The first
|
[ray-tracer](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)). The first
|
||||||
line of the source code may be modified if you want the resulting image to be of
|
line of the source code may be modified if you want the resulting image to be of
|
||||||
some other resolution than the predefined. The `A` value is an anti-alias
|
some other resolution than the predefined. The `A` value is an anti-alias
|
||||||
factor. Setting it to `1` disables the anti-aliasing feature which makes the
|
factor. Setting it to `1` disables the anti-aliasing feature which makes the
|
||||||
|
|||||||
@@ -102,8 +102,8 @@ well as the judges' remarks below plus [gavin.html](gavin.html).
|
|||||||
## Judges' remarks:
|
## Judges' remarks:
|
||||||
|
|
||||||
Over the years, we've seen a program that immediately dumps core if executed on
|
Over the years, we've seen a program that immediately dumps core if executed on
|
||||||
the "wrong" architectures (e.g., [1984/mullender](../../1984/mullender/index.html)) and a
|
the "wrong" architectures (e.g., [1984/mullender](../../1984/mullender/index.html) entry) and a
|
||||||
program that dumps core after a while (e.g., [2001/bellard](../../2001/bellard/index.html)).
|
program that dumps core after a while (e.g., [2001/bellard](../../2001/bellard/index.html) entry).
|
||||||
This entry will happily compile and execute on most any architecture - the trick
|
This entry will happily compile and execute on most any architecture - the trick
|
||||||
is that the result, to be useful, must be produced (and can only be enjoyed) on
|
is that the result, to be useful, must be produced (and can only be enjoyed) on
|
||||||
a particular architecture. We have not decided yet whether to disallow this for
|
a particular architecture. We have not decided yet whether to disallow this for
|
||||||
|
|||||||
@@ -441,8 +441,8 @@ generated are the same names. See <a href="#to-use">to use</a> and <a href="#try
|
|||||||
well as the judges’ remarks below plus <a href="gavin.html">gavin.html</a>.</p>
|
well as the judges’ remarks below plus <a href="gavin.html">gavin.html</a>.</p>
|
||||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||||
<p>Over the years, we’ve seen a program that immediately dumps core if executed on
|
<p>Over the years, we’ve seen a program that immediately dumps core if executed on
|
||||||
the “wrong” architectures (e.g., <a href="../../1984/mullender/index.html">1984/mullender</a>) and a
|
the “wrong” architectures (e.g., <a href="../../1984/mullender/index.html">1984/mullender</a> entry) and a
|
||||||
program that dumps core after a while (e.g., <a href="../../2001/bellard/index.html">2001/bellard</a>).
|
program that dumps core after a while (e.g., <a href="../../2001/bellard/index.html">2001/bellard</a> entry).
|
||||||
This entry will happily compile and execute on most any architecture - the trick
|
This entry will happily compile and execute on most any architecture - the trick
|
||||||
is that the result, to be useful, must be produced (and can only be enjoyed) on
|
is that the result, to be useful, must be produced (and can only be enjoyed) on
|
||||||
a particular architecture. We have not decided yet whether to disallow this for
|
a particular architecture. We have not decided yet whether to disallow this for
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ which line it is on.
|
|||||||
make alt
|
make alt
|
||||||
```
|
```
|
||||||
|
|
||||||
The macro `Ag` ([silver](https://en.wikipedia.org/wiki/Silver)) controls how
|
The macro [Ag](https://en.wikipedia.org/wiki/Silver) controls how
|
||||||
many number of lines to print on a line. Set at default to 11 protons, salt, if
|
many number of lines to print on a line. Set at default to 11 protons, salt, if
|
||||||
you wish to make it silver, 47 (a prime) protons, do:
|
you wish to make it silver, 47 (a prime) protons, do:
|
||||||
|
|
||||||
|
|||||||
@@ -416,7 +416,7 @@ that don’t end up having too many line breaks it also makes it easier to see
|
|||||||
which line it is on.</p>
|
which line it is on.</p>
|
||||||
<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>
|
||||||
<p>The macro <code>Ag</code> (<a href="https://en.wikipedia.org/wiki/Silver">silver</a>) controls how
|
<p>The macro <a href="https://en.wikipedia.org/wiki/Silver">Ag</a> controls how
|
||||||
many number of lines to print on a line. Set at default to 11 protons, salt, if
|
many number of lines to print on a line. Set at default to 11 protons, salt, if
|
||||||
you wish to make it silver, 47 (a prime) protons, do:</p>
|
you wish to make it silver, 47 (a prime) protons, do:</p>
|
||||||
<pre><code> make clobber Ag=47 alt</code></pre>
|
<pre><code> make clobber Ag=47 alt</code></pre>
|
||||||
|
|||||||
+1
-1
@@ -157,7 +157,7 @@ Then run the program to reveal all prime numbers up to 32 (if you used
|
|||||||
|
|
||||||
I wasn't able to compile the full program which calculates [prime
|
I wasn't able to compile the full program which calculates [prime
|
||||||
numbers](https://en.wikipedia.org/wiki/Prime_number) up to 1024 using GNU `cpp`
|
numbers](https://en.wikipedia.org/wiki/Prime_number) up to 1024 using GNU `cpp`
|
||||||
(or any other [pre-processor](https://en.wikipedia.org/wiki/C_preprocessor)) so
|
(or any other [pre-processor](https://en.wikipedia.org/wiki/C_preprocessor) tool) so
|
||||||
I had to write my own. Knowing how the program works it was quite easy to reduce
|
I had to write my own. Knowing how the program works it was quite easy to reduce
|
||||||
the compilation time from several hours to about one second. I also added some
|
the compilation time from several hours to about one second. I also added some
|
||||||
statistics to my home made pre-processor and I found that calculating prime
|
statistics to my home made pre-processor and I found that calculating prime
|
||||||
|
|||||||
@@ -504,7 +504,7 @@ work. This will take some time….</p>
|
|||||||
<h3 id="verification">Verification</h3>
|
<h3 id="verification">Verification</h3>
|
||||||
<p>I wasn’t able to compile the full program which calculates <a href="https://en.wikipedia.org/wiki/Prime_number">prime
|
<p>I wasn’t able to compile the full program which calculates <a href="https://en.wikipedia.org/wiki/Prime_number">prime
|
||||||
numbers</a> up to 1024 using GNU <code>cpp</code>
|
numbers</a> up to 1024 using GNU <code>cpp</code>
|
||||||
(or any other <a href="https://en.wikipedia.org/wiki/C_preprocessor">pre-processor</a>) so
|
(or any other <a href="https://en.wikipedia.org/wiki/C_preprocessor">pre-processor</a> tool) so
|
||||||
I had to write my own. Knowing how the program works it was quite easy to reduce
|
I had to write my own. Knowing how the program works it was quite easy to reduce
|
||||||
the compilation time from several hours to about one second. I also added some
|
the compilation time from several hours to about one second. I also added some
|
||||||
statistics to my home made pre-processor and I found that calculating prime
|
statistics to my home made pre-processor and I found that calculating prime
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ it as you wish, though please give me credit.
|
|||||||
### What is a sudoku?
|
### What is a sudoku?
|
||||||
|
|
||||||
(If you know, feel free to skip this section. Get more details from [the
|
(If you know, feel free to skip this section. Get more details from [the
|
||||||
wikipedia entry](http://en.wikipedia.org/wiki/Sudoku))
|
wikipedia entry](http://en.wikipedia.org/wiki/Sudoku).
|
||||||
|
|
||||||
A sudoku is a type of logic puzzle. You are given a grid of 9x9 boxes, some
|
A sudoku is a type of logic puzzle. You are given a grid of 9x9 boxes, some
|
||||||
of which contain digits. This is divided into a 3x3 set up, e.g. (from the
|
of which contain digits. This is divided into a 3x3 set up, e.g. (from the
|
||||||
@@ -177,7 +177,7 @@ program generated):
|
|||||||
```
|
```
|
||||||
|
|
||||||
Be warned - it's evil! (I certainly haven't been able to solve it by hand. The
|
Be warned - it's evil! (I certainly haven't been able to solve it by hand. The
|
||||||
brute-force program given above, `sudoku-bfi.c` ([aidan.alt.c](%%REPO_URL%%/2005/aidan/aidan.alt.c)),
|
brute-force program given above, `sudoku-bfi.c`, [aidan.alt.c](%%REPO_URL%%/2005/aidan/aidan.alt.c),
|
||||||
also has trouble - it took 66 seconds to solve it - but probably for different
|
also has trouble - it took 66 seconds to solve it - but probably for different
|
||||||
reasons. That's the worst performance I've had from brute-force so far!)
|
reasons. That's the worst performance I've had from brute-force so far!)
|
||||||
|
|
||||||
|
|||||||
@@ -457,7 +457,7 @@ Go find some unpopular multinational to sue instead.</p>
|
|||||||
it as you wish, though please give me credit.</p>
|
it as you wish, though please give me credit.</p>
|
||||||
<h3 id="what-is-a-sudoku">What is a sudoku?</h3>
|
<h3 id="what-is-a-sudoku">What is a sudoku?</h3>
|
||||||
<p>(If you know, feel free to skip this section. Get more details from <a href="http://en.wikipedia.org/wiki/Sudoku">the
|
<p>(If you know, feel free to skip this section. Get more details from <a href="http://en.wikipedia.org/wiki/Sudoku">the
|
||||||
wikipedia entry</a>)</p>
|
wikipedia entry</a>.</p>
|
||||||
<p>A sudoku is a type of logic puzzle. You are given a grid of 9x9 boxes, some
|
<p>A sudoku is a type of logic puzzle. You are given a grid of 9x9 boxes, some
|
||||||
of which contain digits. This is divided into a 3x3 set up, e.g. (from the
|
of which contain digits. This is divided into a 3x3 set up, e.g. (from the
|
||||||
Wikipedia article - fairly easy):</p>
|
Wikipedia article - fairly easy):</p>
|
||||||
@@ -507,7 +507,7 @@ program generated):</p>
|
|||||||
3 . . | . . . | . . .
|
3 . . | . . . | . . .
|
||||||
. . . | . . . | . 6 1</code></pre>
|
. . . | . . . | . 6 1</code></pre>
|
||||||
<p>Be warned - it’s evil! (I certainly haven’t been able to solve it by hand. The
|
<p>Be warned - it’s evil! (I certainly haven’t been able to solve it by hand. The
|
||||||
brute-force program given above, <code>sudoku-bfi.c</code> (<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/aidan/aidan.alt.c">aidan.alt.c</a>),
|
brute-force program given above, <code>sudoku-bfi.c</code>, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2005/aidan/aidan.alt.c">aidan.alt.c</a>,
|
||||||
also has trouble - it took 66 seconds to solve it - but probably for different
|
also has trouble - it took 66 seconds to solve it - but probably for different
|
||||||
reasons. That’s the worst performance I’ve had from brute-force so far!)</p>
|
reasons. That’s the worst performance I’ve had from brute-force so far!)</p>
|
||||||
<h3 id="usage">Usage</h3>
|
<h3 id="usage">Usage</h3>
|
||||||
|
|||||||
+1
-1
@@ -222,7 +222,7 @@ isolated `||` on line 68?
|
|||||||
|
|
||||||
But wait... why aren't any statements terminated by semicolons? Why is there
|
But wait... why aren't any statements terminated by semicolons? Why is there
|
||||||
only ONE semicolon in the entire program?! Why is the author opening nested
|
only ONE semicolon in the entire program?! Why is the author opening nested
|
||||||
blocks by such strange things as `||` and `(`, and closing them by `||` and `))`? The
|
blocks by such strange things as `||` and `(`, and closing them by `||` and `)`? The
|
||||||
`for` loop isn't a `for` loop! The `do` loop isn't a `do` loop! Or... are they? Well,
|
`for` loop isn't a `for` loop! The `do` loop isn't a `do` loop! Or... are they? Well,
|
||||||
the `for` loop is defined in terms of a `while` loop. But wait, the `while` loop is
|
the `for` loop is defined in terms of a `while` loop. But wait, the `while` loop is
|
||||||
defined in terms of the `do` loop. And the `do` loop is defined in terms of ...
|
defined in terms of the `do` loop. And the `do` loop is defined in terms of ...
|
||||||
|
|||||||
@@ -525,7 +525,7 @@ are there such strange statements, like that empty string on line 65, or that
|
|||||||
isolated <code>||</code> on line 68?</p>
|
isolated <code>||</code> on line 68?</p>
|
||||||
<p>But wait… why aren’t any statements terminated by semicolons? Why is there
|
<p>But wait… why aren’t any statements terminated by semicolons? Why is there
|
||||||
only ONE semicolon in the entire program?! Why is the author opening nested
|
only ONE semicolon in the entire program?! Why is the author opening nested
|
||||||
blocks by such strange things as <code>||</code> and <code>(</code>, and closing them by <code>||</code> and <code>))</code>? The
|
blocks by such strange things as <code>||</code> and <code>(</code>, and closing them by <code>||</code> and <code>)</code>? The
|
||||||
<code>for</code> loop isn’t a <code>for</code> loop! The <code>do</code> loop isn’t a <code>do</code> loop! Or… are they? Well,
|
<code>for</code> loop isn’t a <code>for</code> loop! The <code>do</code> loop isn’t a <code>do</code> loop! Or… are they? Well,
|
||||||
the <code>for</code> loop is defined in terms of a <code>while</code> loop. But wait, the <code>while</code> loop is
|
the <code>for</code> loop is defined in terms of a <code>while</code> loop. But wait, the <code>while</code> loop is
|
||||||
defined in terms of the <code>do</code> loop. And the <code>do</code> loop is defined in terms of …
|
defined in terms of the <code>do</code> loop. And the <code>do</code> loop is defined in terms of …
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ diagrams](https://en.wikipedia.org/wiki/Voronoi_diagram), see
|
|||||||
[Qhull](http://www.qhull.org/), [CGAL](https://www.cgal.org) and the like but
|
[Qhull](http://www.qhull.org/), [CGAL](https://www.cgal.org) and the like but
|
||||||
you may still encounter large output volumes (and have to handle some sort of
|
you may still encounter large output volumes (and have to handle some sort of
|
||||||
clipping in order to represent properly infinite regions of the diagram in
|
clipping in order to represent properly infinite regions of the diagram in
|
||||||
[SVG](https://www.w3.org/TR/SVG11/expanded-toc.html)).
|
[SVG](https://www.w3.org/TR/SVG11/expanded-toc.html).
|
||||||
|
|
||||||
Beware, compilation may report warnings about precision loss, linting may be a
|
Beware, compilation may report warnings about precision loss, linting may be a
|
||||||
disaster, but the code should remain portable, and the output accurate enough
|
disaster, but the code should remain portable, and the output accurate enough
|
||||||
|
|||||||
@@ -468,7 +468,7 @@ diagrams</a>, see
|
|||||||
<a href="http://www.qhull.org/">Qhull</a>, <a href="https://www.cgal.org">CGAL</a> and the like but
|
<a href="http://www.qhull.org/">Qhull</a>, <a href="https://www.cgal.org">CGAL</a> and the like but
|
||||||
you may still encounter large output volumes (and have to handle some sort of
|
you may still encounter large output volumes (and have to handle some sort of
|
||||||
clipping in order to represent properly infinite regions of the diagram in
|
clipping in order to represent properly infinite regions of the diagram in
|
||||||
<a href="https://www.w3.org/TR/SVG11/expanded-toc.html">SVG</a>).</p>
|
<a href="https://www.w3.org/TR/SVG11/expanded-toc.html">SVG</a>.</p>
|
||||||
<p>Beware, compilation may report warnings about precision loss, linting may be a
|
<p>Beware, compilation may report warnings about precision loss, linting may be a
|
||||||
disaster, but the code should remain portable, and the output accurate enough
|
disaster, but the code should remain portable, and the output accurate enough
|
||||||
for most devices (including many inkjet printers). If you ever miss precision
|
for most devices (including many inkjet printers). If you ever miss precision
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ simple 3-character fix will make it slightly less so.
|
|||||||
|
|
||||||
Quite a few BF programs found on the Net expect byte-based memory, quite a few
|
Quite a few BF programs found on the Net expect byte-based memory, quite a few
|
||||||
exceed the capacity of this interpreter, but there are many that work. Some
|
exceed the capacity of this interpreter, but there are many that work. Some
|
||||||
small [quines](https://en.wikipedia.org/wiki/Quine_(computing)) work, some don't.
|
small [quines](https://en.wikipedia.org/wiki/Quine_(computing)) work, some don't.
|
||||||
|
|
||||||
Why?
|
Why?
|
||||||
|
|
||||||
|
|||||||
@@ -68,14 +68,14 @@ get the first mode, run the program without arguments:
|
|||||||
```
|
```
|
||||||
|
|
||||||
The other mode is accessible running the program with one argument
|
The other mode is accessible running the program with one argument
|
||||||
(5-[ply](https://en.wikipedia.org/wiki/Ply_(game_theory))
|
(5-[ply](https://en.wikipedia.org/wiki/Ply_(game_theory))
|
||||||
analysis):
|
analysis):
|
||||||
|
|
||||||
``` <!---sh-->
|
``` <!---sh-->
|
||||||
./toledo a
|
./toledo a
|
||||||
```
|
```
|
||||||
|
|
||||||
Two arguments for 6-[ply](https://en.wikipedia.org/wiki/Ply_(game_theory))
|
Two arguments for 6-[ply](https://en.wikipedia.org/wiki/Ply_(game_theory))
|
||||||
analysis:
|
analysis:
|
||||||
|
|
||||||
``` <!---sh-->
|
``` <!---sh-->
|
||||||
@@ -83,7 +83,7 @@ analysis:
|
|||||||
```
|
```
|
||||||
|
|
||||||
And each successive argument will analyze one
|
And each successive argument will analyze one
|
||||||
[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)) more. There is no ply
|
[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)) more. There is no ply
|
||||||
limit, but beyond 7 ply is very slow, try it at your own risk and computing
|
limit, but beyond 7 ply is very slow, try it at your own risk and computing
|
||||||
time.
|
time.
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ algorithms.
|
|||||||
|
|
||||||
The interface accounts for only a fraction of the code, the core does multiples
|
The interface accounts for only a fraction of the code, the core does multiples
|
||||||
functions: it is called recursively to analyze and evaluate each
|
functions: it is called recursively to analyze and evaluate each
|
||||||
[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)), does [alpha-beta
|
[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)), does [alpha-beta
|
||||||
pruning](https://en.wikipedia.org/wiki/Alpha-beta_pruning), move generation,
|
pruning](https://en.wikipedia.org/wiki/Alpha-beta_pruning), move generation,
|
||||||
machine playing, check detection, illegal move verification and does moves after
|
machine playing, check detection, illegal move verification and does moves after
|
||||||
they are verified.
|
they are verified.
|
||||||
@@ -142,7 +142,7 @@ Other features are:
|
|||||||
* [Checkmate](https://en.wikipedia.org/wiki/Checkmate) detection.
|
* [Checkmate](https://en.wikipedia.org/wiki/Checkmate) detection.
|
||||||
* Stalemate detection.
|
* Stalemate detection.
|
||||||
* Computer is tough (check
|
* Computer is tough (check
|
||||||
7-[ply](https://en.wikipedia.org/wiki/Ply_(game_theory))) and even in 5 ply can give a surprise to
|
7-[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)) and even in 5 ply can give a surprise to
|
||||||
amateur players.
|
amateur players.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -475,7 +475,7 @@ computer can do all legal chess moves.</p>
|
|||||||
<li><a href="https://en.wikipedia.org/wiki/Checkmate">Checkmate</a> detection.</li>
|
<li><a href="https://en.wikipedia.org/wiki/Checkmate">Checkmate</a> detection.</li>
|
||||||
<li>Stalemate detection.</li>
|
<li>Stalemate detection.</li>
|
||||||
<li>Computer is tough (check
|
<li>Computer is tough (check
|
||||||
7-<a href="https://en.wikipedia.org/wiki/Ply_(game_theory)">ply</a>) and even in 5 ply can give a surprise to
|
7-<a href="https://en.wikipedia.org/wiki/Ply_(game_theory)">ply</a> and even in 5 ply can give a surprise to
|
||||||
amateur players.</li>
|
amateur players.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h3 id="obfuscation-tricks">Obfuscation tricks</h3>
|
<h3 id="obfuscation-tricks">Obfuscation tricks</h3>
|
||||||
|
|||||||
+1
-1
@@ -29,7 +29,7 @@ sure to pay attention to commas! :-)
|
|||||||
## Author's remarks:
|
## Author's remarks:
|
||||||
|
|
||||||
This entry is a [Wolfenstein](https://en.wikipedia.org/wiki/Wolfenstein) style
|
This entry is a [Wolfenstein](https://en.wikipedia.org/wiki/Wolfenstein) style
|
||||||
[graphics engine](https://en.wikipedia.org/wiki/Rendering_(computer_graphics))
|
[graphics engine](https://en.wikipedia.org/wiki/Rendering_(computer_graphics))
|
||||||
where a user can navigate in a
|
where a user can navigate in a
|
||||||
[3D](https://en.wikipedia.org/wiki/3D_computer_graphics) world. The
|
[3D](https://en.wikipedia.org/wiki/3D_computer_graphics) world. The
|
||||||
[maze](https://en.wikipedia.org/wiki/Maze) has walls with [bitmap
|
[maze](https://en.wikipedia.org/wiki/Maze) has walls with [bitmap
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ A: Electronic Design Automation - Mechanical Abstract Machine Emulator
|
|||||||
What is TOFU? It's not a veggie friendly food, nor it is
|
What is TOFU? It's not a veggie friendly food, nor it is
|
||||||
[Verilog](https://en.wikipedia.org/wiki/Verilog) or
|
[Verilog](https://en.wikipedia.org/wiki/Verilog) or
|
||||||
[VHDL](https://en.wikipedia.org/wiki/VHDL) It is not even
|
[VHDL](https://en.wikipedia.org/wiki/VHDL) It is not even
|
||||||
[Pascal](https://en.wikipedia.org/wiki/Pascal_(programming_language))!
|
[Pascal](https://en.wikipedia.org/wiki/Pascal_(programming_language))!
|
||||||
|
|
||||||
NOTE: On some systems, `file(1)` claims one of the `.tofu` files is Pascal
|
NOTE: On some systems, `file(1)` claims one of the `.tofu` files is Pascal
|
||||||
source. :-)
|
source. :-)
|
||||||
@@ -66,7 +66,7 @@ circuits)? This program is my tribute to the early computer pioneers like
|
|||||||
tool designed to introduce students to digital circuit theory using technology
|
tool designed to introduce students to digital circuit theory using technology
|
||||||
that was considered state of the art in the 1940s! To enable you to fully
|
that was considered state of the art in the 1940s! To enable you to fully
|
||||||
understand the capabilities of this circuit simulator, I have included a 55 page
|
understand the capabilities of this circuit simulator, I have included a 55 page
|
||||||
manual ([info.pdf](info.pdf)) in the info portion of the entry submission.
|
manual, [info.pdf](info.pdf), in the info portion of the entry submission.
|
||||||
|
|
||||||
The primary obfuscation is the data structure chosen for parsing the
|
The primary obfuscation is the data structure chosen for parsing the
|
||||||
input file and for executing the simulation. Oh man... coding that
|
input file and for executing the simulation. Oh man... coding that
|
||||||
|
|||||||
@@ -432,7 +432,7 @@ circuits)? This program is my tribute to the early computer pioneers like
|
|||||||
tool designed to introduce students to digital circuit theory using technology
|
tool designed to introduce students to digital circuit theory using technology
|
||||||
that was considered state of the art in the 1940s! To enable you to fully
|
that was considered state of the art in the 1940s! To enable you to fully
|
||||||
understand the capabilities of this circuit simulator, I have included a 55 page
|
understand the capabilities of this circuit simulator, I have included a 55 page
|
||||||
manual (<a href="info.pdf">info.pdf</a>) in the info portion of the entry submission.</p>
|
manual, <a href="info.pdf">info.pdf</a>, in the info portion of the entry submission.</p>
|
||||||
<p>The primary obfuscation is the data structure chosen for parsing the
|
<p>The primary obfuscation is the data structure chosen for parsing the
|
||||||
input file and for executing the simulation. Oh man… coding that
|
input file and for executing the simulation. Oh man… coding that
|
||||||
data structure gave me such a bad headache. But, I figure, who needs
|
data structure gave me such a bad headache. But, I figure, who needs
|
||||||
|
|||||||
@@ -89,10 +89,10 @@ include:
|
|||||||
- constructors (invoked by the new operator).
|
- constructors (invoked by the new operator).
|
||||||
- new operators (every class gets its own new operator at compile time).
|
- new operators (every class gets its own new operator at compile time).
|
||||||
- virtual method tables (all the virtual method tables have been combined to a
|
- virtual method tables (all the virtual method tables have been combined to a
|
||||||
single [vtable](https://en.wikipedia.org/wiki/Virtual_method_table)).
|
single [vtable](https://en.wikipedia.org/wiki/Virtual_method_table) table).
|
||||||
- runtime method binding.
|
- runtime method binding.
|
||||||
- [inheritance](https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming))
|
- [inheritance](https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming))
|
||||||
and [polymorphism](https://en.wikipedia.org/wiki/Polymorphism_(computer_science)).
|
and [polymorphism](https://en.wikipedia.org/wiki/Polymorphism_(computer_science)).
|
||||||
|
|
||||||
It is left as an exercise to the reader to find a corresponding
|
It is left as an exercise to the reader to find a corresponding
|
||||||
implementation in a popular object-oriented programming language.
|
implementation in a popular object-oriented programming language.
|
||||||
|
|||||||
@@ -450,7 +450,7 @@ include:</p>
|
|||||||
<li>constructors (invoked by the new operator).</li>
|
<li>constructors (invoked by the new operator).</li>
|
||||||
<li>new operators (every class gets its own new operator at compile time).</li>
|
<li>new operators (every class gets its own new operator at compile time).</li>
|
||||||
<li>virtual method tables (all the virtual method tables have been combined to a
|
<li>virtual method tables (all the virtual method tables have been combined to a
|
||||||
single <a href="https://en.wikipedia.org/wiki/Virtual_method_table">vtable</a>).</li>
|
single <a href="https://en.wikipedia.org/wiki/Virtual_method_table">vtable</a> table).</li>
|
||||||
<li>runtime method binding.</li>
|
<li>runtime method binding.</li>
|
||||||
<li><a href="https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming)">inheritance</a>
|
<li><a href="https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming)">inheritance</a>
|
||||||
and <a href="https://en.wikipedia.org/wiki/Polymorphism_(computer_science)">polymorphism</a>.</li>
|
and <a href="https://en.wikipedia.org/wiki/Polymorphism_(computer_science)">polymorphism</a>.</li>
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ separated list of assignments to do once per pixel, and the second a semicolon
|
|||||||
separated list of assignments and conditions that will be executed (and
|
separated list of assignments and conditions that will be executed (and
|
||||||
conditions checked) for each iteration (up to the maximum). Using the left and
|
conditions checked) for each iteration (up to the maximum). Using the left and
|
||||||
right mouse buttons you will be able to zoom in and out (a la
|
right mouse buttons you will be able to zoom in and out (a la
|
||||||
[XaoS](https://github.com/xaos-project/XaoS)), the zooming algorithm is a bit
|
[XaoS](https://github.com/xaos-project/XaoS) project), the zooming algorithm is a bit
|
||||||
slower than `XaoS`'s but it should give slightly better results.
|
slower than `XaoS`'s but it should give slightly better results.
|
||||||
|
|
||||||
Formulas can use all `a-z` (lowercase) variables, and the special
|
Formulas can use all `a-z` (lowercase) variables, and the special
|
||||||
|
|||||||
@@ -468,7 +468,7 @@ separated list of assignments to do once per pixel, and the second a semicolon
|
|||||||
separated list of assignments and conditions that will be executed (and
|
separated list of assignments and conditions that will be executed (and
|
||||||
conditions checked) for each iteration (up to the maximum). Using the left and
|
conditions checked) for each iteration (up to the maximum). Using the left and
|
||||||
right mouse buttons you will be able to zoom in and out (a la
|
right mouse buttons you will be able to zoom in and out (a la
|
||||||
<a href="https://github.com/xaos-project/XaoS">XaoS</a>), the zooming algorithm is a bit
|
<a href="https://github.com/xaos-project/XaoS">XaoS</a> project), the zooming algorithm is a bit
|
||||||
slower than <code>XaoS</code>’s but it should give slightly better results.</p>
|
slower than <code>XaoS</code>’s but it should give slightly better results.</p>
|
||||||
<p>Formulas can use all <code>a-z</code> (lowercase) variables, and the special
|
<p>Formulas can use all <code>a-z</code> (lowercase) variables, and the special
|
||||||
variables <code>c</code> and <code>i</code> are respectively set by default to the
|
variables <code>c</code> and <code>i</code> are respectively set by default to the
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ and a disk controller, just like at the start of the personal computers
|
|||||||
revolution (circa 1975).
|
revolution (circa 1975).
|
||||||
|
|
||||||
It needs an initial memory image to do something usable, so along with it you
|
It needs an initial memory image to do something usable, so along with it you
|
||||||
will find two files: ([C.BASIC](%%REPO_URL%%/2006/toledo2/C.BASIC) and [C.BIOS](%%REPO_URL%%/2006/toledo2/C.BIOS)). Rename
|
will find two files: [C.BASIC](%%REPO_URL%%/2006/toledo2/C.BASIC) and [C.BIOS](%%REPO_URL%%/2006/toledo2/C.BIOS). Rename
|
||||||
[C.BASIC](%%REPO_URL%%/2006/toledo2/C.BASIC) to `C` (NOTE from the judges: running `make` will do this for
|
[C.BASIC](%%REPO_URL%%/2006/toledo2/C.BASIC) to `C` (NOTE from the judges: running `make` will do this for
|
||||||
you), run the emulator, and et voila! you have the public domain Palo Alto [Tiny
|
you), run the emulator, and et voila! you have the public domain Palo Alto [Tiny
|
||||||
BASIC](https://en.wikipedia.org/wiki/Tiny_BASIC) (by Li-Chen Wang), published in
|
BASIC](https://en.wikipedia.org/wiki/Tiny_BASIC) (by Li-Chen Wang), published in
|
||||||
|
|||||||
@@ -452,7 +452,7 @@ removes those files extracted from the <code>KAYPROII.ZIP</code>.</p>
|
|||||||
and a disk controller, just like at the start of the personal computers
|
and a disk controller, just like at the start of the personal computers
|
||||||
revolution (circa 1975).</p>
|
revolution (circa 1975).</p>
|
||||||
<p>It needs an initial memory image to do something usable, so along with it you
|
<p>It needs an initial memory image to do something usable, so along with it you
|
||||||
will find two files: (<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2006/toledo2/C.BASIC">C.BASIC</a> and <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2006/toledo2/C.BIOS">C.BIOS</a>). Rename
|
will find two files: <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2006/toledo2/C.BASIC">C.BASIC</a> and <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2006/toledo2/C.BIOS">C.BIOS</a>. Rename
|
||||||
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2006/toledo2/C.BASIC">C.BASIC</a> to <code>C</code> (NOTE from the judges: running <code>make</code> will do this for
|
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2006/toledo2/C.BASIC">C.BASIC</a> to <code>C</code> (NOTE from the judges: running <code>make</code> will do this for
|
||||||
you), run the emulator, and et voila! you have the public domain Palo Alto <a href="https://en.wikipedia.org/wiki/Tiny_BASIC">Tiny
|
you), run the emulator, and et voila! you have the public domain Palo Alto <a href="https://en.wikipedia.org/wiki/Tiny_BASIC">Tiny
|
||||||
BASIC</a> (by Li-Chen Wang), published in
|
BASIC</a> (by Li-Chen Wang), published in
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ a mistake and the computer surpasses you. ;)
|
|||||||
### WHAT ABOUT THE ENGINE
|
### WHAT ABOUT THE ENGINE
|
||||||
|
|
||||||
Uses an [alpha-beta](https://en.wikipedia.org/wiki/Alpha_Beta) search up to a
|
Uses an [alpha-beta](https://en.wikipedia.org/wiki/Alpha_Beta) search up to a
|
||||||
depth of 3+level [ply](https://en.wikipedia.org/wiki/Ply_(game_theory)),
|
depth of 3+level [ply](https://en.wikipedia.org/wiki/Ply_(game_theory)),
|
||||||
extended with quiescence search, that helps playing strength, something around
|
extended with quiescence search, that helps playing strength, something around
|
||||||
1500 ELO (level 1) to 1700 ELO (level 3).
|
1500 ELO (level 1) to 1700 ELO (level 3).
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ threshold.
|
|||||||
## Judges' remarks:
|
## Judges' remarks:
|
||||||
|
|
||||||
This program plays [Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life)
|
This program plays [Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life)
|
||||||
(see also [here](https://conwaylife.com)), computes Pi to 16 digits
|
(see [here](https://conwaylife.com) also), computes Pi to 16 digits
|
||||||
if given its own source as input, and allows to check if your garden
|
if given its own source as input, and allows to check if your garden
|
||||||
is a [Garden of Eden](http://en.wikipedia.org/wiki/Garden_of_Eden_%28cellular_automaton%29), all in one source.
|
is a [Garden of Eden](http://en.wikipedia.org/wiki/Garden_of_Eden_%28cellular_automaton%29), all in one source.
|
||||||
|
|
||||||
|
|||||||
@@ -410,7 +410,7 @@ Location: <a href="../../location.html#GB">GB</a> - <em>United Kingdom of Great
|
|||||||
threshold.</p>
|
threshold.</p>
|
||||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||||
<p>This program plays <a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Life</a>
|
<p>This program plays <a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Life</a>
|
||||||
(see also <a href="https://conwaylife.com">here</a>), computes Pi to 16 digits
|
(see <a href="https://conwaylife.com">here</a> also), computes Pi to 16 digits
|
||||||
if given its own source as input, and allows to check if your garden
|
if given its own source as input, and allows to check if your garden
|
||||||
is a <a href="http://en.wikipedia.org/wiki/Garden_of_Eden_%28cellular_automaton%29">Garden of Eden</a>, all in one source.</p>
|
is a <a href="http://en.wikipedia.org/wiki/Garden_of_Eden_%28cellular_automaton%29">Garden of Eden</a>, all in one source.</p>
|
||||||
<p>If you have enough time to spare, put the plan of your garden in a text file,
|
<p>If you have enough time to spare, put the plan of your garden in a text file,
|
||||||
|
|||||||
@@ -175,9 +175,9 @@ to help the IOCCC judges. Here's to shorter, more frequent contests!
|
|||||||
|
|
||||||
### Description
|
### Description
|
||||||
|
|
||||||
This is a multilayer [perceptron](https://en.wikipedia.org/wiki/Perceptron) (a
|
This is a multilayer [perceptron](https://en.wikipedia.org/wiki/Perceptron), a
|
||||||
[feedforward artificial neural
|
[feedforward artificial neural
|
||||||
network](https://en.wikipedia.org/wiki/Feedforward_neural_network))
|
network](https://en.wikipedia.org/wiki/Feedforward_neural_network),
|
||||||
which can be trained, using on-line
|
which can be trained, using on-line
|
||||||
[backpropagation](https://en.wikipedia.org/wiki/Backpropagation), to classify input files.
|
[backpropagation](https://en.wikipedia.org/wiki/Backpropagation), to classify input files.
|
||||||
|
|
||||||
|
|||||||
@@ -490,9 +490,9 @@ Data that XORs to 1</p></li>
|
|||||||
intelligent</a> judging tool
|
intelligent</a> judging tool
|
||||||
to help the IOCCC judges. Here’s to shorter, more frequent contests!</p>
|
to help the IOCCC judges. Here’s to shorter, more frequent contests!</p>
|
||||||
<h3 id="description">Description</h3>
|
<h3 id="description">Description</h3>
|
||||||
<p>This is a multilayer <a href="https://en.wikipedia.org/wiki/Perceptron">perceptron</a> (a
|
<p>This is a multilayer <a href="https://en.wikipedia.org/wiki/Perceptron">perceptron</a>, a
|
||||||
<a href="https://en.wikipedia.org/wiki/Feedforward_neural_network">feedforward artificial neural
|
<a href="https://en.wikipedia.org/wiki/Feedforward_neural_network">feedforward artificial neural
|
||||||
network</a>)
|
network</a>,
|
||||||
which can be trained, using on-line
|
which can be trained, using on-line
|
||||||
<a href="https://en.wikipedia.org/wiki/Backpropagation">backpropagation</a>, to classify input files.</p>
|
<a href="https://en.wikipedia.org/wiki/Backpropagation">backpropagation</a>, to classify input files.</p>
|
||||||
<p>It has a fixed topology of <code>2^16</code> input neurons, 6 hidden neurons and 1 output
|
<p>It has a fixed topology of <code>2^16</code> input neurons, 6 hidden neurons and 1 output
|
||||||
|
|||||||
@@ -75,8 +75,8 @@ This version of `grep` recognizes two more options, not present in normal
|
|||||||
`grep` implementations:
|
`grep` implementations:
|
||||||
|
|
||||||
* `-kN` Permit `N` insertions, deletions or mismatches of characters in the
|
* `-kN` Permit `N` insertions, deletions or mismatches of characters in the
|
||||||
matches (aka
|
matches, aka
|
||||||
[edit-distance](https://en.wikipedia.org/wiki/Edit_distance)). E.g.
|
[edit-distance](https://en.wikipedia.org/wiki/Edit_distance). E.g.,
|
||||||
"`obfuscated`" matches "`obfuscation`"
|
"`obfuscated`" matches "`obfuscation`"
|
||||||
with one deletion and two mismatches. Likewise, "`obfuscate`" and
|
with one deletion and two mismatches. Likewise, "`obfuscate`" and
|
||||||
"`oversimplify`" match with 7
|
"`oversimplify`" match with 7
|
||||||
@@ -119,7 +119,7 @@ expressions by putting `]` as the first character, and putting `-` last.
|
|||||||
|
|
||||||
### Other uses
|
### Other uses
|
||||||
|
|
||||||
* You can use this in place of [cat](https://en.wikipedia.org/wiki/Cat_(Unix)).
|
* You can use this in place of [cat](https://en.wikipedia.org/wiki/Cat_(Unix)).
|
||||||
Just say
|
Just say
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -436,8 +436,8 @@ The options <code>-i</code>, <code>-c</code>, <code>-v</code> and <code>-n</code
|
|||||||
<code>grep</code> implementations:</p>
|
<code>grep</code> implementations:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><p><code>-kN</code> Permit <code>N</code> insertions, deletions or mismatches of characters in the
|
<li><p><code>-kN</code> Permit <code>N</code> insertions, deletions or mismatches of characters in the
|
||||||
matches (aka
|
matches, aka
|
||||||
<a href="https://en.wikipedia.org/wiki/Edit_distance">edit-distance</a>). E.g.
|
<a href="https://en.wikipedia.org/wiki/Edit_distance">edit-distance</a>. E.g.,
|
||||||
“<code>obfuscated</code>” matches “<code>obfuscation</code>”
|
“<code>obfuscated</code>” matches “<code>obfuscation</code>”
|
||||||
with one deletion and two mismatches. Likewise, “<code>obfuscate</code>” and
|
with one deletion and two mismatches. Likewise, “<code>obfuscate</code>” and
|
||||||
“<code>oversimplify</code>” match with 7
|
“<code>oversimplify</code>” match with 7
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ For more detailed information see [2011 richards bugs](../../bugs.html#2011_rich
|
|||||||
## Judges' remarks:
|
## Judges' remarks:
|
||||||
|
|
||||||
Oh no, yet another
|
Oh no, yet another
|
||||||
[dc](https://en.wikipedia.org/wiki/Dc_(computer_program))-style calculator? (see
|
[dc](https://en.wikipedia.org/wiki/Dc_(computer_program))-style calculator? (see
|
||||||
[2000/dlowe](../../2000/dlowe/index.html) using an embedded Perl interpreter and deemed `Worst
|
[2000/dlowe](../../2000/dlowe/index.html) using an embedded Perl interpreter and deemed `Worst
|
||||||
Abuse of the Rules`). Well, this one does it (expression calculation, that is,
|
Abuse of the Rules`). Well, this one does it (expression calculation, that is,
|
||||||
not the rule abuse) in a different way. The author claims that his calculator
|
not the rule abuse) in a different way. The author claims that his calculator
|
||||||
@@ -44,7 +44,7 @@ without attempting to unravel the source?
|
|||||||
## Author's remarks:
|
## Author's remarks:
|
||||||
|
|
||||||
This is an implementation of the classic UNIX
|
This is an implementation of the classic UNIX
|
||||||
[dc](https://en.wikipedia.org/wiki/Dc_(computer_program)) command, the
|
[dc](https://en.wikipedia.org/wiki/Dc_(computer_program)) command, the
|
||||||
[reverse Polish](https://en.wikipedia.org/wiki/Reverse_Polish_notation)
|
[reverse Polish](https://en.wikipedia.org/wiki/Reverse_Polish_notation)
|
||||||
calculator. Actually it's a pretty bad implementation, since it only implements
|
calculator. Actually it's a pretty bad implementation, since it only implements
|
||||||
32-bit integers (well, `sizeof(int)`-sized integers). It only implements the
|
32-bit integers (well, `sizeof(int)`-sized integers). It only implements the
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ Windows](%%REPO_URL%%/2011/toledo/toledo.alt2.c). See [Alternate code](#alternat
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Alternate code:
|
## Alternate code
|
||||||
|
|
||||||
The first alt version, [toledo.alt.c](%%REPO_URL%%/2011/toledo/toledo.alt.c), allows you to reconfigure
|
The first alt version, [toledo.alt.c](%%REPO_URL%%/2011/toledo/toledo.alt.c), allows you to reconfigure
|
||||||
the controls and the dimensions more easily.
|
the controls and the dimensions more easily.
|
||||||
@@ -191,7 +191,7 @@ Not really, just kidding :D
|
|||||||
* It is written in the only true C: K&R, and no, that doesn't mean
|
* It is written in the only true C: K&R, and no, that doesn't mean
|
||||||
Katherine & Rose.
|
Katherine & Rose.
|
||||||
* Vectorial scalable graphics: do you want a bigger viewport? Change variables
|
* Vectorial scalable graphics: do you want a bigger viewport? Change variables
|
||||||
`M` and `N` (see the [alternate code](#alternate-code)).
|
`M` and `N` (see the [alternate](#alternate-code) code).
|
||||||
* Half of the program is formatted as 3D cube. View with tabs at 8 columns and a
|
* Half of the program is formatted as 3D cube. View with tabs at 8 columns and a
|
||||||
square font.
|
square font.
|
||||||
* The other half of the program is unprintable source code, so no typing from
|
* The other half of the program is unprintable source code, so no typing from
|
||||||
|
|||||||
@@ -405,7 +405,7 @@ controls and size</a> and <a href="https://github.com/ioccc-src/temp-test-ioccc/
|
|||||||
Windows</a>. See <a href="#alternate-code">Alternate code</a> below.</p>
|
Windows</a>. See <a href="#alternate-code">Alternate code</a> below.</p>
|
||||||
<h2 id="to-use">To use:</h2>
|
<h2 id="to-use">To use:</h2>
|
||||||
<pre><code> ./toledo</code></pre>
|
<pre><code> ./toledo</code></pre>
|
||||||
<h2 id="alternate-code">Alternate code:</h2>
|
<h2 id="alternate-code">Alternate code</h2>
|
||||||
<p>The first alt version, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2011/toledo/toledo.alt.c">toledo.alt.c</a>, allows you to reconfigure
|
<p>The first alt version, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2011/toledo/toledo.alt.c">toledo.alt.c</a>, allows you to reconfigure
|
||||||
the controls and the dimensions more easily.</p>
|
the controls and the dimensions more easily.</p>
|
||||||
<p>The second version, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2011/toledo/toledo.alt2.c">toledo.alt2.c</a>, should work for Windows but
|
<p>The second version, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2011/toledo/toledo.alt2.c">toledo.alt2.c</a>, should work for Windows but
|
||||||
@@ -527,7 +527,7 @@ x86-64 512 MB).</li>
|
|||||||
<li>It is written in the only true C: K&R, and no, that doesn’t mean
|
<li>It is written in the only true C: K&R, and no, that doesn’t mean
|
||||||
Katherine & Rose.</li>
|
Katherine & Rose.</li>
|
||||||
<li>Vectorial scalable graphics: do you want a bigger viewport? Change variables
|
<li>Vectorial scalable graphics: do you want a bigger viewport? Change variables
|
||||||
<code>M</code> and <code>N</code> (see the <a href="#alternate-code">alternate code</a>).</li>
|
<code>M</code> and <code>N</code> (see the <a href="#alternate-code">alternate</a> code).</li>
|
||||||
<li>Half of the program is formatted as 3D cube. View with tabs at 8 columns and a
|
<li>Half of the program is formatted as 3D cube. View with tabs at 8 columns and a
|
||||||
square font.</li>
|
square font.</li>
|
||||||
<li>The other half of the program is unprintable source code, so no typing from
|
<li>The other half of the program is unprintable source code, so no typing from
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ direction and surface normal.
|
|||||||
#### Further details (contains spoilers):
|
#### Further details (contains spoilers):
|
||||||
|
|
||||||
The program is not quite a traditional [ray
|
The program is not quite a traditional [ray
|
||||||
tracer](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)), but a "[sphere
|
tracer](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)), but a "[sphere
|
||||||
tracer](sphere-tracing.pdf)" which uses distance fields to encode proximity to
|
tracer](sphere-tracing.pdf)" which uses distance fields to encode proximity to
|
||||||
objects in the scene. Using sphere tracing to compute visibility instead of
|
objects in the scene. Using sphere tracing to compute visibility instead of
|
||||||
analytic ray tracing provides two advantages: first, it greatly eases the
|
analytic ray tracing provides two advantages: first, it greatly eases the
|
||||||
|
|||||||
+1
-1
@@ -56,7 +56,7 @@ But don't ignore the other winning entries! There are games, utilities,
|
|||||||
eye candy, calculators and graphical tools to explore.
|
eye candy, calculators and graphical tools to explore.
|
||||||
|
|
||||||
This year, Yusuke Endoh won with two entries, one of which
|
This year, Yusuke Endoh won with two entries, one of which
|
||||||
([endoh1](endoh1/index.html)) won the special Honorable mention award. Eight of
|
([endoh1](endoh1/index.html) entry) won the special Honorable mention award. Eight of
|
||||||
the winning entries were from people who won in previous years.
|
the winning entries were from people who won in previous years.
|
||||||
|
|
||||||
This year we had a number of authors from Asia. We saw our second
|
This year we had a number of authors from Asia. We saw our second
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ For more detailed information see [2012 blakely bugs](../../bugs.html#2012_blake
|
|||||||
Several IOCCC themes ([RPN
|
Several IOCCC themes ([RPN
|
||||||
calculator](https://en.wikipedia.org/wiki/Reverse_Polish_notation), animated
|
calculator](https://en.wikipedia.org/wiki/Reverse_Polish_notation), animated
|
||||||
[GIF](https://en.wikipedia.org/wiki/GIF) generator, [ray
|
[GIF](https://en.wikipedia.org/wiki/GIF) generator, [ray
|
||||||
tracing](https://en.wikipedia.org/wiki/Ray_tracing_(graphics))) in one package!
|
tracing](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)) graphics) in one package!
|
||||||
Very impressive!
|
Very impressive!
|
||||||
|
|
||||||
The checkerboard pattern in the output can be broken. Could you figure out how?
|
The checkerboard pattern in the output can be broken. Could you figure out how?
|
||||||
@@ -49,7 +49,7 @@ Larger GIF files confuse some image viewers.
|
|||||||
|
|
||||||
This program renders a generic
|
This program renders a generic
|
||||||
[RPN](https://en.wikipedia.org/wiki/Reverse_Polish_notation) expression in
|
[RPN](https://en.wikipedia.org/wiki/Reverse_Polish_notation) expression in
|
||||||
[ray-traced](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)) animated
|
[ray-traced](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)) animated
|
||||||
[GIF](https://en.wikipedia.org/wiki/GIF) form. The expression in spatial
|
[GIF](https://en.wikipedia.org/wiki/GIF) form. The expression in spatial
|
||||||
variables `x` and `y` is specified on the command-line with the required
|
variables `x` and `y` is specified on the command-line with the required
|
||||||
resolution, and an animated GIF showing a fly-around of the resulting surface is
|
resolution, and an animated GIF showing a fly-around of the resulting surface is
|
||||||
|
|||||||
@@ -411,7 +411,7 @@ Location: <a href="../../location.html#GB">GB</a> - <em>United Kingdom of Great
|
|||||||
<p>Several IOCCC themes (<a href="https://en.wikipedia.org/wiki/Reverse_Polish_notation">RPN
|
<p>Several IOCCC themes (<a href="https://en.wikipedia.org/wiki/Reverse_Polish_notation">RPN
|
||||||
calculator</a>, animated
|
calculator</a>, animated
|
||||||
<a href="https://en.wikipedia.org/wiki/GIF">GIF</a> generator, <a href="https://en.wikipedia.org/wiki/Ray_tracing_(graphics)">ray
|
<a href="https://en.wikipedia.org/wiki/GIF">GIF</a> generator, <a href="https://en.wikipedia.org/wiki/Ray_tracing_(graphics)">ray
|
||||||
tracing</a>) in one package!
|
tracing</a> graphics) in one package!
|
||||||
Very impressive!</p>
|
Very impressive!</p>
|
||||||
<p>The checkerboard pattern in the output can be broken. Could you figure out how?</p>
|
<p>The checkerboard pattern in the output can be broken. Could you figure out how?</p>
|
||||||
<p>Larger GIF files confuse some image viewers.</p>
|
<p>Larger GIF files confuse some image viewers.</p>
|
||||||
|
|||||||
@@ -108,8 +108,8 @@ be `"`` ` ``cat deckmyn.c`` ` ``"`.
|
|||||||
The second command line argument is the music itself. This is, again, a string,
|
The second command line argument is the music itself. This is, again, a string,
|
||||||
not a file name. All music signs are entered as tokens of exactly 3 characters.
|
not a file name. All music signs are entered as tokens of exactly 3 characters.
|
||||||
The code is very sensitive to bad spacing! So for instance, if you use a file to
|
The code is very sensitive to bad spacing! So for instance, if you use a file to
|
||||||
write the music (e.g. [example\_greensleeves](%%REPO_URL%%/2012/deckmyn/example_greensleeves)), you should
|
write the music (e.g., [example\_greensleeves](%%REPO_URL%%/2012/deckmyn/example_greensleeves) file),
|
||||||
keep in mind that newline is also a character!
|
you should keep in mind that newline is also a character!
|
||||||
|
|
||||||
|
|
||||||
### Internals
|
### Internals
|
||||||
|
|||||||
@@ -452,8 +452,8 @@ be <code>"``</code> <code>cat deckmyn.c</code> <code>``"</code>.</p>
|
|||||||
<p>The second command line argument is the music itself. This is, again, a string,
|
<p>The second command line argument is the music itself. This is, again, a string,
|
||||||
not a file name. All music signs are entered as tokens of exactly 3 characters.
|
not a file name. All music signs are entered as tokens of exactly 3 characters.
|
||||||
The code is very sensitive to bad spacing! So for instance, if you use a file to
|
The code is very sensitive to bad spacing! So for instance, if you use a file to
|
||||||
write the music (e.g. <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/deckmyn/example_greensleeves">example_greensleeves</a>), you should
|
write the music (e.g., <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/deckmyn/example_greensleeves">example_greensleeves</a> file),
|
||||||
keep in mind that newline is also a character!</p>
|
you should keep in mind that newline is also a character!</p>
|
||||||
<h3 id="internals">Internals</h3>
|
<h3 id="internals">Internals</h3>
|
||||||
<p>To minimise the memory footprint, this program has <em>no variable declarations at
|
<p>To minimise the memory footprint, this program has <em>no variable declarations at
|
||||||
all</em>, except for the arguments to <code>main()</code>. The only available memory space is
|
all</em>, except for the arguments to <code>main()</code>. The only available memory space is
|
||||||
|
|||||||
@@ -291,8 +291,8 @@ casting) it to an integer-type variable.
|
|||||||
|
|
||||||
[pour-out.txt](%%REPO_URL%%/2012/endoh1/pour-out.txt) pours you a cup of tea.
|
[pour-out.txt](%%REPO_URL%%/2012/endoh1/pour-out.txt) pours you a cup of tea.
|
||||||
|
|
||||||
[tanada.txt](%%REPO_URL%%/2012/endoh1/tanada.txt) simulates "Terrace farming". ("Tanada" means a "[terraced rice
|
[tanada.txt](%%REPO_URL%%/2012/endoh1/tanada.txt) simulates "Terrace farming". ("Tanada" means a
|
||||||
fields](https://en.wikipedia.org/wiki/Terrace_(earthworks))" in Japanese.)
|
"[terraced rice](https://en.wikipedia.org/wiki/Terrace_(earthworks) fields)" in Japanese.)
|
||||||
|
|
||||||
[clock.txt](%%REPO_URL%%/2012/endoh1/clock.txt) is a "water" clock created by HAMANO Tsukasa.
|
[clock.txt](%%REPO_URL%%/2012/endoh1/clock.txt) is a "water" clock created by HAMANO Tsukasa.
|
||||||
|
|
||||||
|
|||||||
@@ -570,8 +570,8 @@ casting) it to an integer-type variable.</p>
|
|||||||
<p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/logo.txt">logo.txt</a> is a source of the logo in this remark file.</p>
|
<p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/logo.txt">logo.txt</a> is a source of the logo in this remark file.</p>
|
||||||
<p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/column.txt">column.txt</a> is a water column collapse, which is a popular demo of SPH.</p>
|
<p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/column.txt">column.txt</a> is a water column collapse, which is a popular demo of SPH.</p>
|
||||||
<p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/pour-out.txt">pour-out.txt</a> pours you a cup of tea.</p>
|
<p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/pour-out.txt">pour-out.txt</a> pours you a cup of tea.</p>
|
||||||
<p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/tanada.txt">tanada.txt</a> simulates “Terrace farming”. (“Tanada” means a “<a href="https://en.wikipedia.org/wiki/Terrace_(earthworks)">terraced rice
|
<p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/tanada.txt">tanada.txt</a> simulates “Terrace farming”. (“Tanada” means a
|
||||||
fields</a>” in Japanese.)</p>
|
“<a href="https://en.wikipedia.org/wiki/Terrace_(earthworks)%20fields">terraced rice</a>” in Japanese.)</p>
|
||||||
<p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/clock.txt">clock.txt</a> is a “water” clock created by HAMANO Tsukasa.</p>
|
<p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/clock.txt">clock.txt</a> is a “water” clock created by HAMANO Tsukasa.</p>
|
||||||
<p>Other <code>*.txt</code> files are from the judges.</p>
|
<p>Other <code>*.txt</code> files are from the judges.</p>
|
||||||
<p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/endoh1_color.c">endoh1_color.c</a> is a variant that shows the density by using terminal 256
|
<p><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/endoh1/endoh1_color.c">endoh1_color.c</a> is a variant that shows the density by using terminal 256
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ and:
|
|||||||
## Judges' remarks:
|
## Judges' remarks:
|
||||||
|
|
||||||
A
|
A
|
||||||
[pi](https://en.wikipedia.org/wiki/Pi)/[e](https://en.wikipedia.org/wiki/E_(mathematical_constant))
|
[pi](https://en.wikipedia.org/wiki/Pi)/[e](https://en.wikipedia.org/wiki/E_(mathematical_constant))
|
||||||
printing quasi-[quine](https://en.wikipedia.org/wiki/Quine_(computing) in [ASCII
|
printing quasi-[quine](https://en.wikipedia.org/wiki/Quine_(computing) in [ASCII
|
||||||
art](https://en.wikipedia.org/wiki/ASCII_art) with a compressed font in it; what
|
art](https://en.wikipedia.org/wiki/ASCII_art) with a compressed font in it; what
|
||||||
else to wish for in this program? [Virtual
|
else to wish for in this program? [Virtual
|
||||||
@@ -47,7 +47,7 @@ Yeah, "Again". Sorry. But I don't feel guilty or uncomfortable.
|
|||||||
|
|
||||||
This entry is based on 'over-used themes' such as self reproducing
|
This entry is based on 'over-used themes' such as self reproducing
|
||||||
program and [pi](https://en.wikipedia.org/wiki/Pi) or
|
program and [pi](https://en.wikipedia.org/wiki/Pi) or
|
||||||
[e](https://en.wikipedia.org/wiki/E_(mathematical_constant))) computation. I
|
[e](https://en.wikipedia.org/wiki/E_(mathematical_constant() computation. I
|
||||||
know you're tired of them.
|
know you're tired of them.
|
||||||
|
|
||||||
But have you ever seen them **all-in-one**?
|
But have you ever seen them **all-in-one**?
|
||||||
@@ -65,18 +65,18 @@ This program generates a new program in the shape of the Greek letter
|
|||||||
|
|
||||||
One more thing... When you give a command line argument `e` to the
|
One more thing... When you give a command line argument `e` to the
|
||||||
first program, the generated one will compute [Napier's
|
first program, the generated one will compute [Napier's
|
||||||
constant](https://en.wikipedia.org/wiki/E_(mathematical_constant)))
|
constant](https://en.wikipedia.org/wiki/E_(mathematical_constant))
|
||||||
rather than pi.
|
rather than pi.
|
||||||
|
|
||||||
|
|
||||||
### Obfuscation
|
### Obfuscation
|
||||||
|
|
||||||
This program itself is in the shape of a
|
This program itself is in the shape of a
|
||||||
[spigot](https://en.wikipedia.org/wiki/Tap_(valve)). This is derived as an
|
[spigot](https://en.wikipedia.org/wiki/Tap_(valve)). This is derived as an
|
||||||
analogy with [spigot algorithm](https://en.wikipedia.org/wiki/Spigot_algorithm)
|
analogy with [spigot algorithm](https://en.wikipedia.org/wiki/Spigot_algorithm)
|
||||||
which infinitely computes the value of a mathematical constant such as
|
which infinitely computes the value of a mathematical constant such as
|
||||||
[pi](https://en.wikipedia.org/wiki/Pi) or
|
[pi](https://en.wikipedia.org/wiki/Pi) or
|
||||||
[e](https://en.wikipedia.org/wiki/E_(mathematical_constant)).
|
[e](https://en.wikipedia.org/wiki/E_(mathematical_constant)).
|
||||||
|
|
||||||
The two sets of programs, `314*.c` and `271*.c`, are almost the same
|
The two sets of programs, `314*.c` and `271*.c`, are almost the same
|
||||||
except their shape and constant computational part. I tailored the
|
except their shape and constant computational part. I tailored the
|
||||||
@@ -85,7 +85,7 @@ tweaking the computational order and adding meaningless code fragments.
|
|||||||
|
|
||||||
On the other hand, to make it fit inside one screen (80 x 25), my program is
|
On the other hand, to make it fit inside one screen (80 x 25), my program is
|
||||||
shortened properly, more than it looks. (As you may know,
|
shortened properly, more than it looks. (As you may know,
|
||||||
[quines](https://en.wikipedia.org/wiki/Quine_(computing)) need to make its
|
[quines](https://en.wikipedia.org/wiki/Quine_(computing)) need to make its
|
||||||
program size doubled.) For example, this program involves 3x5 bitmap font data
|
program size doubled.) For example, this program involves 3x5 bitmap font data
|
||||||
of ten characters (`0` -- `9`), as just 20 bytes: `G1%xJ{;Q7wunmuGuu%uu`. We
|
of ten characters (`0` -- `9`), as just 20 bytes: `G1%xJ{;Q7wunmuGuu%uu`. We
|
||||||
can decode character `n` as `275*s[n+10] - 8*s[n] - 8`. I solved the system of
|
can decode character `n` as `275*s[n+10] - 8*s[n] - 8`. I solved the system of
|
||||||
|
|||||||
@@ -421,7 +421,7 @@ machine</a> emulation?</p>
|
|||||||
<p>Yeah, “Again”. Sorry. But I don’t feel guilty or uncomfortable.</p>
|
<p>Yeah, “Again”. Sorry. But I don’t feel guilty or uncomfortable.</p>
|
||||||
<p>This entry is based on ‘over-used themes’ such as self reproducing
|
<p>This entry is based on ‘over-used themes’ such as self reproducing
|
||||||
program and <a href="https://en.wikipedia.org/wiki/Pi">pi</a> or
|
program and <a href="https://en.wikipedia.org/wiki/Pi">pi</a> or
|
||||||
<a href="https://en.wikipedia.org/wiki/E_(mathematical_constant)">e</a>) computation. I
|
<a href="https://en.wikipedia.org/wiki/E_(mathematical_constant(">e</a> computation. I
|
||||||
know you’re tired of them.</p>
|
know you’re tired of them.</p>
|
||||||
<p>But have you ever seen them <strong>all-in-one</strong>?</p>
|
<p>But have you ever seen them <strong>all-in-one</strong>?</p>
|
||||||
<h3 id="what-it-is">What it is</h3>
|
<h3 id="what-it-is">What it is</h3>
|
||||||
@@ -436,7 +436,7 @@ know you’re tired of them.</p>
|
|||||||
</ul>
|
</ul>
|
||||||
<p>One more thing… When you give a command line argument <code>e</code> to the
|
<p>One more thing… When you give a command line argument <code>e</code> to the
|
||||||
first program, the generated one will compute <a href="https://en.wikipedia.org/wiki/E_(mathematical_constant)">Napier’s
|
first program, the generated one will compute <a href="https://en.wikipedia.org/wiki/E_(mathematical_constant)">Napier’s
|
||||||
constant</a>)
|
constant</a>
|
||||||
rather than pi.</p>
|
rather than pi.</p>
|
||||||
<h3 id="obfuscation">Obfuscation</h3>
|
<h3 id="obfuscation">Obfuscation</h3>
|
||||||
<p>This program itself is in the shape of a
|
<p>This program itself is in the shape of a
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ confused.
|
|||||||
|
|
||||||
The results can be viewed with Acrobat Reader,
|
The results can be viewed with Acrobat Reader,
|
||||||
[evince](http://en.wikipedia.org/wiki/Evince) and Apple's
|
[evince](http://en.wikipedia.org/wiki/Evince) and Apple's
|
||||||
[Preview](https://en.wikipedia.org/wiki/Preview_(macOS)).
|
[Preview](https://en.wikipedia.org/wiki/Preview_(macOS)).
|
||||||
|
|
||||||
The updated version can also be viewed using Ghostscript.
|
The updated version can also be viewed using Ghostscript.
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -421,7 +421,7 @@ very likely say <a href="http://bit.ly/R6ALpK">wow</a> as we did!</p></li>
|
|||||||
<p>But don’t ignore the other winning entries! There are games, utilities,
|
<p>But don’t ignore the other winning entries! There are games, utilities,
|
||||||
eye candy, calculators and graphical tools to explore.</p>
|
eye candy, calculators and graphical tools to explore.</p>
|
||||||
<p>This year, Yusuke Endoh won with two entries, one of which
|
<p>This year, Yusuke Endoh won with two entries, one of which
|
||||||
(<a href="endoh1/index.html">endoh1</a>) won the special Honorable mention award. Eight of
|
(<a href="endoh1/index.html">endoh1</a> entry) won the special Honorable mention award. Eight of
|
||||||
the winning entries were from people who won in previous years.</p>
|
the winning entries were from people who won in previous years.</p>
|
||||||
<p>This year we had a number of authors from Asia. We saw our second
|
<p>This year we had a number of authors from Asia. We saw our second
|
||||||
authors from China and first from Korea. We are pleased to see
|
authors from China and first from Korea. We are pleased to see
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ Output code has these features:
|
|||||||
* Uses a fairly efficient encoding scheme, better than `uuencode` for
|
* Uses a fairly efficient encoding scheme, better than `uuencode` for
|
||||||
files larger than ~13K, and better than `base64` for files larger
|
files larger than ~13K, and better than `base64` for files larger
|
||||||
than 20K.
|
than 20K.
|
||||||
* Encryption with [ISAAC](https://en.wikipedia.org/wiki/ISAAC_(cipher)), a
|
* Encryption with [ISAAC](https://en.wikipedia.org/wiki/ISAAC_(cipher)), a
|
||||||
cryptographically secure pseudorandom number generator.
|
cryptographically secure pseudorandom number generator.
|
||||||
* Trivial 3 language polyglot.
|
* Trivial 3 language polyglot.
|
||||||
|
|
||||||
|
|||||||
@@ -71,8 +71,8 @@ representation in lambda calculus), and translates the evaluated result back
|
|||||||
into a stream of bits to be output.
|
into a stream of bits to be output.
|
||||||
|
|
||||||
Lambda is encoded as 00, application as 01, and the variable bound by the `n`th
|
Lambda is encoded as 00, application as 01, and the variable bound by the `n`th
|
||||||
enclosing lambda (denoted `n` in so-called [De Bruijn
|
enclosing lambda (denoted `n` in so-called [De Bruijn](https://en.wikipedia.org/wiki/De_Bruijn_notation)
|
||||||
notation](https://en.wikipedia.org/wiki/De_Bruijn_notation)) as `1^{n}0`.
|
notation) as `1^{n}0`.
|
||||||
That's all there is to
|
That's all there is to
|
||||||
[BLC](https://tromp.github.io/cl/Binary_lambda_calculus.html)!
|
[BLC](https://tromp.github.io/cl/Binary_lambda_calculus.html)!
|
||||||
|
|
||||||
@@ -110,8 +110,8 @@ The size of the term space is fixed at compile time with `-DA`.
|
|||||||
|
|
||||||
### A half byte `cat`
|
### A half byte `cat`
|
||||||
|
|
||||||
The shortest (closed) lambda calculus term is `\x x (\ 1` in [De Bruijn
|
The shortest (closed) lambda calculus term is `\x x (\ 1` in
|
||||||
notation](https://en.wikipedia.org/wiki/De_Bruijn_notation)) which is the
|
[De Bruijn](https://en.wikipedia.org/wiki/De_Bruijn_notation) notation which is the
|
||||||
identity function. When its encoding `0010` is fed into the universal machine,
|
identity function. When its encoding `0010` is fed into the universal machine,
|
||||||
it will simply copy the input to the output (well, not that simply, since each
|
it will simply copy the input to the output (well, not that simply, since each
|
||||||
byte is smashed to bits and rebuilt from scratch). Voila: a half byte cat:
|
byte is smashed to bits and rebuilt from scratch). Voila: a half byte cat:
|
||||||
|
|||||||
@@ -435,8 +435,8 @@ the remainder of input (translated to a lazy list of
|
|||||||
representation in lambda calculus), and translates the evaluated result back
|
representation in lambda calculus), and translates the evaluated result back
|
||||||
into a stream of bits to be output.</p>
|
into a stream of bits to be output.</p>
|
||||||
<p>Lambda is encoded as 00, application as 01, and the variable bound by the <code>n</code>th
|
<p>Lambda is encoded as 00, application as 01, and the variable bound by the <code>n</code>th
|
||||||
enclosing lambda (denoted <code>n</code> in so-called <a href="https://en.wikipedia.org/wiki/De_Bruijn_notation">De Bruijn
|
enclosing lambda (denoted <code>n</code> in so-called <a href="https://en.wikipedia.org/wiki/De_Bruijn_notation">De Bruijn</a>
|
||||||
notation</a>) as <code>1^{n}0</code>.
|
notation) as <code>1^{n}0</code>.
|
||||||
That’s all there is to
|
That’s all there is to
|
||||||
<a href="https://tromp.github.io/cl/Binary_lambda_calculus.html">BLC</a>!</p>
|
<a href="https://tromp.github.io/cl/Binary_lambda_calculus.html">BLC</a>!</p>
|
||||||
<p>For example the encoding of lambda term <code>S = \x \y \z (x z) (y z)</code>,
|
<p>For example the encoding of lambda term <code>S = \x \y \z (x z) (y z)</code>,
|
||||||
@@ -459,8 +459,8 @@ bit of input, and using characters <code>0</code> and <code>1</code> for output.
|
|||||||
1,2,3,4,8,9: result not in list form</code></pre>
|
1,2,3,4,8,9: result not in list form</code></pre>
|
||||||
<p>The size of the term space is fixed at compile time with <code>-DA</code>.</p>
|
<p>The size of the term space is fixed at compile time with <code>-DA</code>.</p>
|
||||||
<h3 id="a-half-byte-cat">A half byte <code>cat</code></h3>
|
<h3 id="a-half-byte-cat">A half byte <code>cat</code></h3>
|
||||||
<p>The shortest (closed) lambda calculus term is <code>\x x (\ 1</code> in <a href="https://en.wikipedia.org/wiki/De_Bruijn_notation">De Bruijn
|
<p>The shortest (closed) lambda calculus term is <code>\x x (\ 1</code> in
|
||||||
notation</a>) which is the
|
<a href="https://en.wikipedia.org/wiki/De_Bruijn_notation">De Bruijn</a> notation which is the
|
||||||
identity function. When its encoding <code>0010</code> is fed into the universal machine,
|
identity function. When its encoding <code>0010</code> is fed into the universal machine,
|
||||||
it will simply copy the input to the output (well, not that simply, since each
|
it will simply copy the input to the output (well, not that simply, since each
|
||||||
byte is smashed to bits and rebuilt from scratch). Voila: a half byte cat:</p>
|
byte is smashed to bits and rebuilt from scratch). Voila: a half byte cat:</p>
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ will not detect multiple issues.
|
|||||||
|
|
||||||
## Alternate code:
|
## Alternate code:
|
||||||
|
|
||||||
The alternate code, [zeitak.alt.c](z%%REPO_URL%%/2012/zeitak/eitak.alt.c), is a version that was slightly
|
The alternate code, [zeitak.alt.c](%%REPO_URL%%/2012/zeitak/zeitak.alt.c), is a version that was slightly
|
||||||
deobfuscated by the author. You may find reading it helpful in your attempt to
|
deobfuscated by the author. You may find reading it helpful in your attempt to
|
||||||
understand this extremely subtle entry.
|
understand this extremely subtle entry.
|
||||||
|
|
||||||
|
|||||||
@@ -411,7 +411,7 @@ text files that are not code.</p>
|
|||||||
<p>NOTE: the program prints an error and exits on the first nesting error so it
|
<p>NOTE: the program prints an error and exits on the first nesting error so it
|
||||||
will not detect multiple issues.</p>
|
will not detect multiple issues.</p>
|
||||||
<h2 id="alternate-code">Alternate code:</h2>
|
<h2 id="alternate-code">Alternate code:</h2>
|
||||||
<p>The alternate code, <a href="zhttps://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/zeitak/eitak.alt.c">zeitak.alt.c</a>, is a version that was slightly
|
<p>The alternate code, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/zeitak/zeitak.alt.c">zeitak.alt.c</a>, is a version that was slightly
|
||||||
deobfuscated by the author. You may find reading it helpful in your attempt to
|
deobfuscated by the author. You may find reading it helpful in your attempt to
|
||||||
understand this extremely subtle entry.</p>
|
understand this extremely subtle entry.</p>
|
||||||
<h3 id="alternate-build">Alternate build:</h3>
|
<h3 id="alternate-build">Alternate build:</h3>
|
||||||
|
|||||||
@@ -177,8 +177,8 @@ would not be necessary:
|
|||||||
|
|
||||||
For reference, the names of the 7
|
For reference, the names of the 7
|
||||||
[tetriminos](https://en.wikipedia.org/wiki/Tetromino) (the game pieces or
|
[tetriminos](https://en.wikipedia.org/wiki/Tetromino) (the game pieces or
|
||||||
actually a kind of geometric shape used in
|
actually a kind of geometric shape used in the
|
||||||
[Tetris](https://en.wikipedia.org/wiki/Tetris)) appear in the table below.
|
[Tetris](https://en.wikipedia.org/wiki/Tetris) game) appear in the table below.
|
||||||
|
|
||||||
<img src="names.png"
|
<img src="names.png"
|
||||||
alt="image of names of the 7 Tetris game pieces"
|
alt="image of names of the 7 Tetris game pieces"
|
||||||
@@ -333,7 +333,7 @@ rate in which the terminal application receives and displays the [ANSI
|
|||||||
escape](https://en.wikipedia.org/wiki/ANSI_escape_code) sequences.
|
escape](https://en.wikipedia.org/wiki/ANSI_escape_code) sequences.
|
||||||
|
|
||||||
To slow down the output programmatically, introduce a delay immediately after the
|
To slow down the output programmatically, introduce a delay immediately after the
|
||||||
call to `fflush(3)` (N.B: see [birken.alt.c](%%REPO_URL%%/2013/birken/birken.alt.c)).
|
call to `fflush(3)` (N.B: see [birken.alt.c](%%REPO_URL%%/2013/birken/birken.alt.c) source).
|
||||||
|
|
||||||
|
|
||||||
### IOCCC Size Tool Bug
|
### IOCCC Size Tool Bug
|
||||||
@@ -529,7 +529,7 @@ origin of each file is detailed below (character, game, company, year).
|
|||||||
|
|
||||||
* [belmont.txt](belmont.txt) - [Simon
|
* [belmont.txt](belmont.txt) - [Simon
|
||||||
Belmont](https://en.wikipedia.org/wiki/Simon_Belmont),
|
Belmont](https://en.wikipedia.org/wiki/Simon_Belmont),
|
||||||
[Castlevania](https://en.wikipedia.org/wiki/Castlevania_(1986_video_game)),
|
[Castlevania](https://en.wikipedia.org/wiki/Castlevania_(1986_video_game)),
|
||||||
[Konami](https://en.wikipedia.org/wiki/Konami), 1986.
|
[Konami](https://en.wikipedia.org/wiki/Konami), 1986.
|
||||||
|
|
||||||
* [bloober.txt](bloober.txt) - Bloober, [Super Mario
|
* [bloober.txt](bloober.txt) - Bloober, [Super Mario
|
||||||
@@ -573,7 +573,7 @@ Plant](https://www.mariowiki.com/Piranha_Plant), Super Mario Brothers, Nintendo,
|
|||||||
|
|
||||||
* [samus.txt](samus.txt) - [Samus
|
* [samus.txt](samus.txt) - [Samus
|
||||||
Aran](https://metroid.fandom.com/wiki/Samus_Aran),
|
Aran](https://metroid.fandom.com/wiki/Samus_Aran),
|
||||||
[Metroid](https://metroid.fandom.com/wiki/Metroid_(game)), Nintendo/[Intelligent
|
[Metroid](https://metroid.fandom.com/wiki/Metroid_(game)), Nintendo/[Intelligent
|
||||||
Systems](https://en.wikipedia.org/wiki/Intelligent_Systems), 1986.
|
Systems](https://en.wikipedia.org/wiki/Intelligent_Systems), 1986.
|
||||||
|
|
||||||
* [toad.txt](toad.txt) - [Toad](https://www.mariowiki.com/Toad), Super Mario
|
* [toad.txt](toad.txt) - [Toad](https://www.mariowiki.com/Toad), Super Mario
|
||||||
|
|||||||
@@ -501,8 +501,8 @@ would not be necessary:</p>
|
|||||||
<h3 id="single-square-emitters">Single Square Emitters</h3>
|
<h3 id="single-square-emitters">Single Square Emitters</h3>
|
||||||
<p>For reference, the names of the 7
|
<p>For reference, the names of the 7
|
||||||
<a href="https://en.wikipedia.org/wiki/Tetromino">tetriminos</a> (the game pieces or
|
<a href="https://en.wikipedia.org/wiki/Tetromino">tetriminos</a> (the game pieces or
|
||||||
actually a kind of geometric shape used in
|
actually a kind of geometric shape used in the
|
||||||
<a href="https://en.wikipedia.org/wiki/Tetris">Tetris</a>) appear in the table below.</p>
|
<a href="https://en.wikipedia.org/wiki/Tetris">Tetris</a> game) appear in the table below.</p>
|
||||||
<p><img src="names.png"
|
<p><img src="names.png"
|
||||||
alt="image of names of the 7 Tetris game pieces"
|
alt="image of names of the 7 Tetris game pieces"
|
||||||
width=696 height=144></p>
|
width=696 height=144></p>
|
||||||
@@ -620,7 +620,7 @@ represented using ANSI escape sequences.</p>
|
|||||||
rate in which the terminal application receives and displays the <a href="https://en.wikipedia.org/wiki/ANSI_escape_code">ANSI
|
rate in which the terminal application receives and displays the <a href="https://en.wikipedia.org/wiki/ANSI_escape_code">ANSI
|
||||||
escape</a> sequences.</p>
|
escape</a> sequences.</p>
|
||||||
<p>To slow down the output programmatically, introduce a delay immediately after the
|
<p>To slow down the output programmatically, introduce a delay immediately after the
|
||||||
call to <code>fflush(3)</code> (N.B: see <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/birken/birken.alt.c">birken.alt.c</a>).</p>
|
call to <code>fflush(3)</code> (N.B: see <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2013/birken/birken.alt.c">birken.alt.c</a> source).</p>
|
||||||
<h3 id="ioccc-size-tool-bug">IOCCC Size Tool Bug</h3>
|
<h3 id="ioccc-size-tool-bug">IOCCC Size Tool Bug</h3>
|
||||||
<p>This program demonstrates how to exploit a bug in IOCCC size tool version
|
<p>This program demonstrates how to exploit a bug in IOCCC size tool version
|
||||||
<code>2013-07-30-v17</code>. The first line of the program is reproduced below.</p>
|
<code>2013-07-30-v17</code>. The first line of the program is reproduced below.</p>
|
||||||
|
|||||||
Loaded 100 of 174 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user