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.
|
||||
|
||||
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
|
||||
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
|
||||
@@ -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
|
||||
supposed to send data reliably from one program to the other over an unreliable
|
||||
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
|
||||
[obfuscated](https://en.wikipedia.org/wiki/Obfuscation_(software)) set of
|
||||
[obfuscated](https://en.wikipedia.org/wiki/Obfuscation_(software)) set of
|
||||
programs, only for the
|
||||
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor), to do this, but
|
||||
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.
|
||||
|
||||
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
|
||||
making it "portable".
|
||||
|
||||
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,
|
||||
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
|
||||
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
|
||||
least on the old systems where this program ran, it doesn't know that the
|
||||
`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
|
||||
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
|
||||
[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
|
||||
[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)
|
||||
that branches over the VAX code. The PDP and VAX codes are thus completely
|
||||
separate.
|
||||
@@ -356,7 +356,7 @@ program that we came up with is as follows:
|
||||
|
||||
The first word (after the label `vax`) is the
|
||||
[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
|
||||
instructions are octal `400` + the distance divided by `2`. The string that both
|
||||
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.
|
||||
|
||||
On the [VAX](https://en.wikipedia.org/wiki/VAX), the program
|
||||
[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
|
||||
[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
|
||||
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
|
||||
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
|
||||
@@ -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)
|
||||
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)
|
||||
[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
|
||||
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
|
||||
|
||||
@@ -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,
|
||||
the rules were changed, requesting non-machine specific code.</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
|
||||
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
|
||||
@@ -549,7 +549,7 @@ Our program is idempotent under <code>cb</code>.</p>
|
||||
<h3 id="more-detailed-analysis">More detailed analysis</h3>
|
||||
<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
|
||||
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
|
||||
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>
|
||||
@@ -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
|
||||
routine as a mask of
|
||||
<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
|
||||
<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>
|
||||
@@ -664,9 +664,9 @@ programs use is after the <code>str</code> label, and the
|
||||
<code>pdp</code> label.</p>
|
||||
<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
|
||||
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
|
||||
<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
|
||||
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
|
||||
@@ -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>
|
||||
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>
|
||||
<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
|
||||
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
|
||||
|
||||
+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.
|
||||
|
||||
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_
|
||||
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
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
./try.sh
|
||||
```
|
||||
|
||||
If you have the `primes(6)` tool (sometimes part of [BSD
|
||||
Games](https://github.com/vattam/BSDGames)) you can see
|
||||
If you have the `primes(6)` tool (sometimes part of
|
||||
([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:
|
||||
|
||||
``` <!---sh-->
|
||||
|
||||
@@ -403,8 +403,8 @@ Location: <a href="../../location.html#SE">SE</a> - <em>Kingdom of Sweden</em> (
|
||||
<pre><code> ./august</code></pre>
|
||||
<h2 id="try">Try:</h2>
|
||||
<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
|
||||
Games</a>) you can see
|
||||
<p>If you have the <code>primes(6)</code> tool (sometimes part of
|
||||
(<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>
|
||||
<pre><code> ./primes.sh # 15
|
||||
./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
|
||||
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
|
||||
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>
|
||||
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
|
||||
|
||||
+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
|
||||
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
|
||||
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.
|
||||
|
||||
[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.
|
||||
|
||||
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
|
||||
[patch](https://en.wikipedia.org/wiki/Patch_(Unix))) asks you to compile and
|
||||
who gave us [rn](https://en.wikipedia.org/wiki/Rn_(newsreader)) 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
|
||||
program and type characters into its standard input. You will see why the
|
||||
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>
|
||||
<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
|
||||
<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
|
||||
program and type characters into its standard input. You will see why the
|
||||
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!
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
@@ -409,8 +409,8 @@ Location: <a href="../../location.html#NL">NL</a> - <em>Kingdom of the Netherlan
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>We believe that you too will be amazed at just how much power Mr. Lievaart
|
||||
packed into 1024 bytes!</p>
|
||||
<p>This Plays the game of <a href="https://en.wikipedia.org/wiki/Reversi">Reversi
|
||||
(Othello)</a>! Compile and run. It then
|
||||
<p>This Plays the game of [Reversi
|
||||
<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
|
||||
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
|
||||
|
||||
@@ -58,7 +58,7 @@ For an interesting document on APL, see
|
||||
|
||||
This program is a handy picoAPL interpreter written in `C--`. It
|
||||
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 `-`;
|
||||
numerals must be binary. Parentheses may be used for
|
||||
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
|
||||
mail-transparency encoding. On Unix, these coding format quandaries are overcome
|
||||
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.
|
||||
|
||||
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
|
||||
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
|
||||
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>
|
||||
<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
|
||||
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
|
||||
original source file. This step is not needed to compile
|
||||
this entry.</p>
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ rotated from `the rug gary lent`!
|
||||
## Judges' remarks:
|
||||
|
||||
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,
|
||||
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>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<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,
|
||||
originally to 106 characters but it was dropped back down to 80 with clever use
|
||||
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
|
||||
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
|
||||
`demo1.th` through `demo6.th`. See [buzzard.2.README.html](buzzard.2.README.html)
|
||||
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
|
||||
question, but they may not know the answer to the more important question, "what
|
||||
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
|
||||
compiler format to many FORTH internal representations, and, being aware that
|
||||
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.
|
||||
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.
|
||||
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
|
||||
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
|
||||
tactic somewhat obfuscates the algorithm used by the program.
|
||||
|
||||
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.
|
||||
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.
|
||||
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
|
||||
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
|
||||
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>,
|
||||
<code>8</code>, and <code>3</code> (<code>lg 8</code>). Rather than making these available at compile-time,
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
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:
|
||||
|
||||
@@ -402,7 +402,7 @@ Location: <a href="../../location.html#ZZ">ZZ</a> - <em>Unknown location</em></l
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<pre><code> ./dgibson.sh [datafile]</code></pre>
|
||||
<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>
|
||||
<pre><code> ./try.sh</code></pre>
|
||||
<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
|
||||
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.
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -403,7 +403,7 @@ unable to find an ANSI C compiler that flagged such expressions as
|
||||
errors.</p>
|
||||
<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
|
||||
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>
|
||||
<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
|
||||
|
||||
@@ -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
|
||||
quickly realize that the comments were the important part and that
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
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.
|
||||
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
|
||||
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>
|
||||
<pre><code> "This time (everything) is not where it should be."
|
||||
~~~~</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
|
||||
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>)
|
||||
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>
|
||||
<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>
|
||||
<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.
|
||||
<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.
|
||||
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
|
||||
obfuscation is a six member client/server hierarchy. (See the
|
||||
|
||||
@@ -380,7 +380,7 @@
|
||||
|
||||
<!-- BEFORE: 1st line of markdown file: 1994/shapiro/shapiro.md -->
|
||||
<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>
|
||||
<pre><code> 1. #include <stdio.h>
|
||||
2. main()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 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:
|
||||
|
||||
+3
-3
@@ -86,9 +86,9 @@ fix it without breaking something else?
|
||||
|
||||
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
|
||||
contains static fractal (e.g. [Mandelbrot
|
||||
set](https://en.wikipedia.org/wiki/Mandelbrot_set)) and the other an animating
|
||||
one (e.g. [Julia set](https://en.wikipedia.org/wiki/Julia_set)) which is derived
|
||||
contains static fractal (e.g., [Mandelbrot](https://en.wikipedia.org/wiki/Mandelbrot_set) set)
|
||||
and the other an animating
|
||||
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
|
||||
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>
|
||||
<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
|
||||
contains static fractal (e.g. <a href="https://en.wikipedia.org/wiki/Mandelbrot_set">Mandelbrot
|
||||
set</a>) and the other an animating
|
||||
one (e.g. <a href="https://en.wikipedia.org/wiki/Julia_set">Julia set</a>) which is derived
|
||||
contains static fractal (e.g., <a href="https://en.wikipedia.org/wiki/Mandelbrot_set">Mandelbrot</a> set)
|
||||
and the other an animating
|
||||
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
|
||||
displayed in one process.</p>
|
||||
<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
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
@@ -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
|
||||
event of a system shutdown or reboot.</p>
|
||||
<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
|
||||
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
|
||||
|
||||
+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
|
||||
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)
|
||||
([GNU Gzip](https://www.gnu.org/software/gzip/)) file uncompressor. Feed it a
|
||||
[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
|
||||
`gzip` compressed file on standard input, and it will write the fully
|
||||
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>
|
||||
<p>Except for some silly requirements regarding input validation, CRC checking, and
|
||||
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.gnu.org/software/gzip/">GNU Gzip</a>) file uncompressor. Feed it 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
|
||||
<code>gzip</code> compressed file on standard input, and it will write the fully
|
||||
uncompressed original file to standard output.</p>
|
||||
<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
|
||||
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
|
||||
clock. (they are [clock1.sh](%%REPO_URL%%/1996/westley/clock1.sh), [clock2.sh](%%REPO_URL%%/1996/westley/clock2.sh), and
|
||||
[clock3.sh](%%REPO_URL%%/1996/westley/clock3.sh))
|
||||
clock. (they are [clock1.sh](%%REPO_URL%%/1996/westley/clock1.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:
|
||||
|
||||
|
||||
@@ -426,8 +426,9 @@ understand it.</p>
|
||||
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
|
||||
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
|
||||
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1996/westley/clock3.sh">clock3.sh</a>)</p>
|
||||
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
|
||||
<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>
|
||||
<ol type="1">
|
||||
<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
|
||||
years past have accomplished interesting feats while completely avoiding the use
|
||||
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
|
||||
of certain C constructs thought to be essential (e.g.,
|
||||
[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.
|
||||
|
||||
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>
|
||||
<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
|
||||
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
|
||||
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> file). If you have to ask why they would
|
||||
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
|
||||
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
|
||||
|
||||
[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
|
||||
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
|
||||
@@ -138,7 +138,7 @@ The program runs [dynamically
|
||||
linked](https://en.wikipedia.org/wiki/Dynamic_linker) [ELF
|
||||
binaries](https://en.wikipedia.org/wiki/Executable_and_Linkable_Format), and
|
||||
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
|
||||
target machine. This involves mangling between different calling conventions,
|
||||
etc.
|
||||
@@ -209,9 +209,9 @@ on to the next line of code.
|
||||
Due to space limitations only a handful of instructions are supported; these
|
||||
instructions which are supported are supported in somewhat non-conventional
|
||||
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 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.
|
||||
|
||||
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.
|
||||
|
||||
`args` are given to the `main()` function of `bellard.c` (`argv[0]` is
|
||||
[bellard.c](%%REPO_URL%%/2001/bellard/bellard.c)).
|
||||
`args` are given to the `main()` function of `bellard.c`, `argv[0]` is
|
||||
[bellard.c](%%REPO_URL%%/2001/bellard/bellard.c).
|
||||
|
||||
|
||||
### Examples:
|
||||
|
||||
@@ -420,8 +420,8 @@ program.</p>
|
||||
<p>You can use it by typing:</p>
|
||||
<pre><code> ./bellard bellard.c [args]...</code></pre>
|
||||
<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
|
||||
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/bellard/bellard.c">bellard.c</a>).</p>
|
||||
<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>
|
||||
<h3 id="examples">Examples:</h3>
|
||||
<ul>
|
||||
<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.
|
||||
|
||||
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.
|
||||
In such positions, it will often just shuffle pieces around aimlessly
|
||||
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
|
||||
[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>
|
||||
<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
|
||||
[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>
|
||||
<p>and</p>
|
||||
<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.
|
||||
|
||||
The specific transcription mode is the [Black
|
||||
Speech](https://www.glyphweb.com/arda/b/blackspeech.html) ([Tengwar
|
||||
mode](https://www.glyphweb.com/arda/t/tengwar.html)), as
|
||||
Speech](https://www.glyphweb.com/arda/b/blackspeech.html)
|
||||
([Tengwar](https://www.glyphweb.com/arda/t/tengwar.html) mode), as
|
||||
used in the inscription on the [One
|
||||
Ring](https://www.glyphweb.com/arda/o/onering.html). The program handles the
|
||||
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
|
||||
graymap</a> (PGM) file.</p>
|
||||
<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
|
||||
mode</a>), as
|
||||
Speech</a>
|
||||
(<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
|
||||
Ring</a>. The program handles the
|
||||
following digraphs:</p>
|
||||
|
||||
@@ -114,7 +114,7 @@ although the compiler gives it special meaning) and no preprocessor
|
||||
directives.
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
@@ -102,8 +102,8 @@ well as the judges' remarks below plus [gavin.html](gavin.html).
|
||||
## Judges' remarks:
|
||||
|
||||
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
|
||||
program that dumps core after a while (e.g., [2001/bellard](../../2001/bellard/index.html)).
|
||||
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) entry).
|
||||
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
|
||||
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>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<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
|
||||
program that dumps core after a while (e.g., <a href="../../2001/bellard/index.html">2001/bellard</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> entry).
|
||||
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
|
||||
a particular architecture. We have not decided yet whether to disallow this for
|
||||
|
||||
@@ -47,7 +47,7 @@ which line it is on.
|
||||
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
|
||||
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>
|
||||
<h3 id="alternate-build">Alternate build:</h3>
|
||||
<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
|
||||
you wish to make it silver, 47 (a prime) protons, do:</p>
|
||||
<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
|
||||
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
|
||||
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
|
||||
|
||||
@@ -504,7 +504,7 @@ work. This will take some time….</p>
|
||||
<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
|
||||
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
|
||||
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
|
||||
|
||||
@@ -111,7 +111,7 @@ it as you wish, though please give me credit.
|
||||
### What is a sudoku?
|
||||
|
||||
(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
|
||||
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
|
||||
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
|
||||
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>
|
||||
<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
|
||||
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
|
||||
of which contain digits. This is divided into a 3x3 set up, e.g. (from the
|
||||
Wikipedia article - fairly easy):</p>
|
||||
@@ -507,7 +507,7 @@ program generated):</p>
|
||||
3 . . | . . . | . . .
|
||||
. . . | . . . | . 6 1</code></pre>
|
||||
<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
|
||||
reasons. That’s the worst performance I’ve had from brute-force so far!)</p>
|
||||
<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
|
||||
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,
|
||||
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 ...
|
||||
|
||||
@@ -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>
|
||||
<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
|
||||
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,
|
||||
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 …
|
||||
|
||||
@@ -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
|
||||
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
|
||||
[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
|
||||
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
|
||||
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
|
||||
<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
|
||||
disaster, but the code should remain portable, and the output accurate enough
|
||||
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
|
||||
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?
|
||||
|
||||
|
||||
@@ -68,14 +68,14 @@ get the first mode, run the program without arguments:
|
||||
```
|
||||
|
||||
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):
|
||||
|
||||
``` <!---sh-->
|
||||
./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:
|
||||
|
||||
``` <!---sh-->
|
||||
@@ -83,7 +83,7 @@ analysis:
|
||||
```
|
||||
|
||||
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
|
||||
time.
|
||||
|
||||
@@ -125,7 +125,7 @@ algorithms.
|
||||
|
||||
The interface accounts for only a fraction of the code, the core does multiples
|
||||
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,
|
||||
machine playing, check detection, illegal move verification and does moves after
|
||||
they are verified.
|
||||
@@ -142,7 +142,7 @@ Other features are:
|
||||
* [Checkmate](https://en.wikipedia.org/wiki/Checkmate) detection.
|
||||
* Stalemate detection.
|
||||
* 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.
|
||||
|
||||
|
||||
|
||||
@@ -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>Stalemate detection.</li>
|
||||
<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>
|
||||
</ul>
|
||||
<h3 id="obfuscation-tricks">Obfuscation tricks</h3>
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ sure to pay attention to commas! :-)
|
||||
## Author's remarks:
|
||||
|
||||
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
|
||||
[3D](https://en.wikipedia.org/wiki/3D_computer_graphics) world. The
|
||||
[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
|
||||
[Verilog](https://en.wikipedia.org/wiki/Verilog) or
|
||||
[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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
input file and for executing the simulation. Oh man… coding that
|
||||
data structure gave me such a bad headache. But, I figure, who needs
|
||||
|
||||
@@ -89,10 +89,10 @@ include:
|
||||
- constructors (invoked by the new operator).
|
||||
- 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
|
||||
single [vtable](https://en.wikipedia.org/wiki/Virtual_method_table)).
|
||||
single [vtable](https://en.wikipedia.org/wiki/Virtual_method_table) table).
|
||||
- runtime method binding.
|
||||
- [inheritance](https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming))
|
||||
and [polymorphism](https://en.wikipedia.org/wiki/Polymorphism_(computer_science)).
|
||||
- [inheritance](https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming))
|
||||
and [polymorphism](https://en.wikipedia.org/wiki/Polymorphism_(computer_science)).
|
||||
|
||||
It is left as an exercise to the reader to find a corresponding
|
||||
implementation in a popular object-oriented programming language.
|
||||
|
||||
@@ -450,7 +450,7 @@ include:</p>
|
||||
<li>constructors (invoked by the new operator).</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
|
||||
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><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>
|
||||
|
||||
@@ -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
|
||||
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
|
||||
[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.
|
||||
|
||||
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
|
||||
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
|
||||
<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>
|
||||
<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
|
||||
|
||||
@@ -102,7 +102,7 @@ and a disk controller, just like at the start of the personal computers
|
||||
revolution (circa 1975).
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
@@ -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
|
||||
revolution (circa 1975).</p>
|
||||
<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
|
||||
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
|
||||
|
||||
@@ -82,7 +82,7 @@ a mistake and the computer surpasses you. ;)
|
||||
### WHAT ABOUT THE ENGINE
|
||||
|
||||
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
|
||||
1500 ELO (level 1) to 1700 ELO (level 3).
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ threshold.
|
||||
## Judges' remarks:
|
||||
|
||||
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
|
||||
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>
|
||||
<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>
|
||||
(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
|
||||
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,
|
||||
|
||||
@@ -175,9 +175,9 @@ to help the IOCCC judges. Here's to shorter, more frequent contests!
|
||||
|
||||
### 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
|
||||
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
|
||||
[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
|
||||
to help the IOCCC judges. Here’s to shorter, more frequent contests!</p>
|
||||
<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
|
||||
network</a>)
|
||||
network</a>,
|
||||
which can be trained, using on-line
|
||||
<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
|
||||
|
||||
@@ -75,8 +75,8 @@ This version of `grep` recognizes two more options, not present in normal
|
||||
`grep` implementations:
|
||||
|
||||
* `-kN` Permit `N` insertions, deletions or mismatches of characters in the
|
||||
matches (aka
|
||||
[edit-distance](https://en.wikipedia.org/wiki/Edit_distance)). E.g.
|
||||
matches, aka
|
||||
[edit-distance](https://en.wikipedia.org/wiki/Edit_distance). E.g.,
|
||||
"`obfuscated`" matches "`obfuscation`"
|
||||
with one deletion and two mismatches. Likewise, "`obfuscate`" and
|
||||
"`oversimplify`" match with 7
|
||||
@@ -119,7 +119,7 @@ expressions by putting `]` as the first character, and putting `-` last.
|
||||
|
||||
### 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
|
||||
|
||||
|
||||
|
||||
@@ -436,8 +436,8 @@ The options <code>-i</code>, <code>-c</code>, <code>-v</code> and <code>-n</code
|
||||
<code>grep</code> implementations:</p>
|
||||
<ul>
|
||||
<li><p><code>-kN</code> Permit <code>N</code> insertions, deletions or mismatches of characters in the
|
||||
matches (aka
|
||||
<a href="https://en.wikipedia.org/wiki/Edit_distance">edit-distance</a>). E.g.
|
||||
matches, aka
|
||||
<a href="https://en.wikipedia.org/wiki/Edit_distance">edit-distance</a>. E.g.,
|
||||
“<code>obfuscated</code>” matches “<code>obfuscation</code>”
|
||||
with one deletion and two mismatches. Likewise, “<code>obfuscate</code>” and
|
||||
“<code>oversimplify</code>” match with 7
|
||||
|
||||
@@ -33,7 +33,7 @@ For more detailed information see [2011 richards bugs](../../bugs.html#2011_rich
|
||||
## Judges' remarks:
|
||||
|
||||
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
|
||||
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
|
||||
@@ -44,7 +44,7 @@ without attempting to unravel the source?
|
||||
## Author's remarks:
|
||||
|
||||
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)
|
||||
calculator. Actually it's a pretty bad implementation, since it only implements
|
||||
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 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
|
||||
Katherine & Rose.
|
||||
* 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
|
||||
square font.
|
||||
* 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>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<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
|
||||
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
|
||||
@@ -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
|
||||
Katherine & Rose.</li>
|
||||
<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
|
||||
square font.</li>
|
||||
<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):
|
||||
|
||||
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
|
||||
objects in the scene. Using sphere tracing to compute visibility instead of
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
calculator](https://en.wikipedia.org/wiki/Reverse_Polish_notation), animated
|
||||
[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!
|
||||
|
||||
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
|
||||
[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
|
||||
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
|
||||
|
||||
@@ -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
|
||||
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
|
||||
tracing</a>) in one package!
|
||||
tracing</a> graphics) in one package!
|
||||
Very impressive!</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>
|
||||
|
||||
@@ -108,8 +108,8 @@ be `"`` ` ``cat deckmyn.c`` ` ``"`.
|
||||
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.
|
||||
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
|
||||
keep in mind that newline is also a character!
|
||||
write the music (e.g., [example\_greensleeves](%%REPO_URL%%/2012/deckmyn/example_greensleeves) file),
|
||||
you should keep in mind that newline is also a character!
|
||||
|
||||
|
||||
### 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,
|
||||
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
|
||||
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
|
||||
keep in mind that newline is also a character!</p>
|
||||
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),
|
||||
you should keep in mind that newline is also a character!</p>
|
||||
<h3 id="internals">Internals</h3>
|
||||
<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
|
||||
|
||||
@@ -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.
|
||||
|
||||
[tanada.txt](%%REPO_URL%%/2012/endoh1/tanada.txt) simulates "Terrace farming". ("Tanada" means a "[terraced rice
|
||||
fields](https://en.wikipedia.org/wiki/Terrace_(earthworks))" in Japanese.)
|
||||
[tanada.txt](%%REPO_URL%%/2012/endoh1/tanada.txt) simulates "Terrace farming". ("Tanada" means a
|
||||
"[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.
|
||||
|
||||
|
||||
@@ -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/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/tanada.txt">tanada.txt</a> simulates “Terrace farming”. (“Tanada” means a “<a href="https://en.wikipedia.org/wiki/Terrace_(earthworks)">terraced rice
|
||||
fields</a>” in Japanese.)</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)%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>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
|
||||
|
||||
@@ -34,7 +34,7 @@ and:
|
||||
## Judges' remarks:
|
||||
|
||||
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
|
||||
art](https://en.wikipedia.org/wiki/ASCII_art) with a compressed font in it; what
|
||||
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
|
||||
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.
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
|
||||
### Obfuscation
|
||||
|
||||
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)
|
||||
which infinitely computes the value of a mathematical constant such as
|
||||
[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
|
||||
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
|
||||
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
|
||||
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
|
||||
|
||||
@@ -421,7 +421,7 @@ machine</a> emulation?</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
|
||||
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>
|
||||
<p>But have you ever seen them <strong>all-in-one</strong>?</p>
|
||||
<h3 id="what-it-is">What it is</h3>
|
||||
@@ -436,7 +436,7 @@ know you’re tired of them.</p>
|
||||
</ul>
|
||||
<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
|
||||
constant</a>)
|
||||
constant</a>
|
||||
rather than pi.</p>
|
||||
<h3 id="obfuscation">Obfuscation</h3>
|
||||
<p>This program itself is in the shape of a
|
||||
|
||||
@@ -65,7 +65,7 @@ confused.
|
||||
|
||||
The results can be viewed with Acrobat Reader,
|
||||
[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.
|
||||
|
||||
|
||||
+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,
|
||||
eye candy, calculators and graphical tools to explore.</p>
|
||||
<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>
|
||||
<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
|
||||
|
||||
@@ -153,7 +153,7 @@ Output code has these features:
|
||||
* Uses a fairly efficient encoding scheme, better than `uuencode` for
|
||||
files larger than ~13K, and better than `base64` for files larger
|
||||
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.
|
||||
* 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.
|
||||
|
||||
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
|
||||
notation](https://en.wikipedia.org/wiki/De_Bruijn_notation)) as `1^{n}0`.
|
||||
enclosing lambda (denoted `n` in so-called [De Bruijn](https://en.wikipedia.org/wiki/De_Bruijn_notation)
|
||||
notation) as `1^{n}0`.
|
||||
That's all there is to
|
||||
[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`
|
||||
|
||||
The shortest (closed) lambda calculus term is `\x x (\ 1` in [De Bruijn
|
||||
notation](https://en.wikipedia.org/wiki/De_Bruijn_notation)) which is the
|
||||
The shortest (closed) lambda calculus term is `\x x (\ 1` in
|
||||
[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,
|
||||
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:
|
||||
|
||||
@@ -435,8 +435,8 @@ the remainder of input (translated to a lazy list of
|
||||
representation in lambda calculus), and translates the evaluated result back
|
||||
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
|
||||
enclosing lambda (denoted <code>n</code> in so-called <a href="https://en.wikipedia.org/wiki/De_Bruijn_notation">De Bruijn
|
||||
notation</a>) as <code>1^{n}0</code>.
|
||||
enclosing lambda (denoted <code>n</code> in so-called <a href="https://en.wikipedia.org/wiki/De_Bruijn_notation">De Bruijn</a>
|
||||
notation) as <code>1^{n}0</code>.
|
||||
That’s all there is to
|
||||
<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>,
|
||||
@@ -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>
|
||||
<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>
|
||||
<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
|
||||
notation</a>) which is the
|
||||
<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</a> notation which is the
|
||||
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
|
||||
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:
|
||||
|
||||
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
|
||||
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
|
||||
will not detect multiple issues.</p>
|
||||
<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
|
||||
understand this extremely subtle entry.</p>
|
||||
<h3 id="alternate-build">Alternate build:</h3>
|
||||
|
||||
@@ -177,8 +177,8 @@ would not be necessary:
|
||||
|
||||
For reference, the names of the 7
|
||||
[tetriminos](https://en.wikipedia.org/wiki/Tetromino) (the game pieces or
|
||||
actually a kind of geometric shape used in
|
||||
[Tetris](https://en.wikipedia.org/wiki/Tetris)) appear in the table below.
|
||||
actually a kind of geometric shape used in the
|
||||
[Tetris](https://en.wikipedia.org/wiki/Tetris) game) appear in the table below.
|
||||
|
||||
<img src="names.png"
|
||||
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.
|
||||
|
||||
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
|
||||
@@ -529,7 +529,7 @@ origin of each file is detailed below (character, game, company, year).
|
||||
|
||||
* [belmont.txt](belmont.txt) - [Simon
|
||||
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.
|
||||
|
||||
* [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
|
||||
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.
|
||||
|
||||
* [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>
|
||||
<p>For reference, the names of the 7
|
||||
<a href="https://en.wikipedia.org/wiki/Tetromino">tetriminos</a> (the game pieces or
|
||||
actually a kind of geometric shape used in
|
||||
<a href="https://en.wikipedia.org/wiki/Tetris">Tetris</a>) appear in the table below.</p>
|
||||
actually a kind of geometric shape used in the
|
||||
<a href="https://en.wikipedia.org/wiki/Tetris">Tetris</a> game) appear in the table below.</p>
|
||||
<p><img src="names.png"
|
||||
alt="image of names of the 7 Tetris game pieces"
|
||||
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
|
||||
escape</a> sequences.</p>
|
||||
<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>
|
||||
<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>
|
||||
|
||||
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