diff --git a/1984/anonymous/index.html b/1984/anonymous/index.html index e3972a39d..53659a2b6 100644 --- a/1984/anonymous/index.html +++ b/1984/anonymous/index.html @@ -416,10 +416,10 @@ first entry ↑ 1984 ↑ 1984/decot → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -521,19 +521,19 @@ ends in a smily face: ;}.

Primary files

Secondary files


@@ -601,7 +601,7 @@ Jump to: top

Coda

- Nu HTML check this web page
+ Nu HTML check this web page
Jump to top Jump to Content Jump to Inventory

diff --git a/1984/decot/index.html b/1984/decot/index.html index 9d362b93e..44c276c51 100644 --- a/1984/decot/index.html +++ b/1984/decot/index.html @@ -416,10 +416,10 @@ ← 1984/anonymous ↑ 1984 ↑ 1984/laman → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -478,11 +478,11 @@ changed it from:

    for(signal=0;*k * x * __FILE__ *i;) do {

to:

    for(signal=0;*k *x * __FILE__ *i;) do {
-

To see what we mean look at the original source -file at line +

To see what we mean look at the original source +file at line 15 which has the way it once was. The -alternate code is the version that has -this modification but at line 16. The +alternate code is the version that has +this modification but at line 16. The fixed version has instead:

    for(signal=0;*k *= * __FILE__ *i;) do {

plus a line above it that had to be added.

@@ -513,18 +513,18 @@ fixed version has instead:

Primary files

Secondary files


@@ -592,7 +592,7 @@ Jump to: top

Coda

- Nu HTML check this web page
+ Nu HTML check this web page
Jump to top Jump to Content Jump to Inventory

diff --git a/1984/index.html b/1984/index.html index 2aefd5366..0910483be 100644 --- a/1984/index.html +++ b/1984/index.html @@ -416,7 +416,7 @@ ↑ top ↑ 1985 → Inventory - ✓ + ✓ @@ -541,7 +541,7 @@ Jump to: top

Coda

- Nu HTML check this web page
+ Nu HTML check this web page
Jump to top Jump to Content Jump to Inventory

diff --git a/1984/laman/index.html b/1984/laman/index.html index 9b6e88acf..add48c4fb 100644 --- a/1984/laman/index.html +++ b/1984/laman/index.html @@ -416,10 +416,10 @@ ← 1984/decot ↑ 1984 ↑ 1984/mullender → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -495,18 +495,18 @@ them from:

Primary files

Secondary files


@@ -574,7 +574,7 @@ Jump to: top

Coda

- Nu HTML check this web page
+ Nu HTML check this web page
Jump to top Jump to Content Jump to Inventory

diff --git a/1984/mullender/index.html b/1984/mullender/index.html index 1d03b99c1..51870bd30 100644 --- a/1984/mullender/index.html +++ b/1984/mullender/index.html @@ -416,10 +416,10 @@ ← 1984/laman ↑ 1984 ↑ 1985/applin → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -525,7 +525,7 @@ favorite entries!

In 2023 remarks were discovered from Sjoerd Mullender, one of the authors, and so was the program that was used by the authors to generate the array that he referred to. -Because a.out.h, which gentab.c uses, +Because a.out.h, which gentab.c uses, is not available in all systems (like macOS) and more importantly because we wanted it to be as close to as the original as possible we used a copy of https://raw.githubusercontent.com/dspinellis/unix-history-repo/Research-Release/usr/include/a.out.h @@ -730,7 +730,7 @@ formats for each constant in the resulting array, and we wanted to choose the format randomly. So we wrote a program to choose an appropriate format at random. The program we wrote for that follows. This program actually also extracted the machine code from the object file.

-

NOTE from judges: see gentab.c for a copy of this file that can be +

NOTE from judges: see gentab.c for a copy of this file that can be compiled in modern systems.

    #include <stdio.h>
     #include <a.out.h>
@@ -824,20 +824,20 @@ the comment to &&.

Primary files

Secondary files


@@ -905,7 +905,7 @@ Jump to: top diff --git a/1985/applin/index.html b/1985/applin/index.html index 679dc7d9a..b393f85c4 100644 --- a/1985/applin/index.html +++ b/1985/applin/index.html @@ -416,10 +416,10 @@ ← 1984/mullender ↑ 1985 ↑ 1985/august → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -483,17 +483,17 @@ certainly takes its time saying hello.

Primary files

Secondary files


@@ -561,7 +561,7 @@ Jump to: top diff --git a/1985/august/index.html b/1985/august/index.html index e0a107064..0dd2d6a91 100644 --- a/1985/august/index.html +++ b/1985/august/index.html @@ -416,10 +416,10 @@ ← 1985/applin ↑ 1985 ↑ 1985/lycklama → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -465,7 +465,7 @@ action of the program?

If you let it, the program will continue to print a numerical sequence (can you guess in what base it is printed by looking at the code?) until you run out of memory or until they sell your computer, whichever comes first.

-

If you use the primes.sh script can you figure out if there’s +

If you use the primes.sh script can you figure out if there’s anything funny going on with the output?

Author’s remarks:

No remarks were provided by the author.

@@ -494,19 +494,19 @@ anything funny going on with the output?

Primary files

Secondary files


@@ -574,7 +574,7 @@ Jump to: top diff --git a/1985/index.html b/1985/index.html index 6e7969ab4..e167c8fe1 100644 --- a/1985/index.html +++ b/1985/index.html @@ -416,7 +416,7 @@ ↑ top ↑ 1986 → Inventory - ✓ + ✓ @@ -541,7 +541,7 @@ Jump to: top diff --git a/1985/lycklama/index.html b/1985/lycklama/index.html index 82d1eb0ab..a0b1dd6d6 100644 --- a/1985/lycklama/index.html +++ b/1985/lycklama/index.html @@ -416,10 +416,10 @@ ← 1985/august ↑ 1985 ↑ 1985/shapiro → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -503,19 +503,19 @@ The program itself looks like tty noise.

Primary files

Secondary files


@@ -583,7 +583,7 @@ Jump to: top diff --git a/1985/shapiro/index.html b/1985/shapiro/index.html index 8af3df6b7..479f67c12 100644 --- a/1985/shapiro/index.html +++ b/1985/shapiro/index.html @@ -416,10 +416,10 @@ ← 1985/lycklama ↑ 1985 ↑ 1985/sicherman → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -500,19 +500,19 @@ arguments and notice the output.

Primary files

Secondary files


@@ -580,7 +580,7 @@ Jump to: top diff --git a/1985/sicherman/index.html b/1985/sicherman/index.html index bd2d18c03..24a88ff1d 100644 --- a/1985/sicherman/index.html +++ b/1985/sicherman/index.html @@ -416,10 +416,10 @@ ← 1985/shapiro ↑ 1985 ↑ 1986/applin → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -458,7 +458,7 @@ See Alternate code below for more details on it.Try:
    ./try.sh

Alternate code:

-

The sicherman.alt.c is a slight change in the fixed version +

The sicherman.alt.c is a slight change in the fixed version (fixed so it does not require -traditional-cpp) in that it has two args to main() as some compilers object to certain number of args in main().

Alternate build:

@@ -508,20 +508,20 @@ does, then you don’t, so read it again! Explain why:

Primary files

Secondary files


@@ -589,7 +589,7 @@ Jump to: top diff --git a/1986/applin/index.html b/1986/applin/index.html index 6527b4fa7..e8cc04d27 100644 --- a/1986/applin/index.html +++ b/1986/applin/index.html @@ -416,10 +416,10 @@ ← 1985/sicherman ↑ 1986 ↑ 1986/august → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -481,17 +481,17 @@ compilers as well as executable by the Bourne shell!

Primary files

Secondary files


@@ -559,7 +559,7 @@ Jump to: top diff --git a/1986/august/index.html b/1986/august/index.html index 99d7d094f..2e930e8db 100644 --- a/1986/august/index.html +++ b/1986/august/index.html @@ -416,10 +416,10 @@ ← 1986/applin ↑ 1986 ↑ 1986/bright → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -488,17 +488,17 @@ enough to try and parse it correctly.

Primary files

Secondary files


@@ -566,7 +566,7 @@ Jump to: top diff --git a/1986/bright/index.html b/1986/bright/index.html index eaf31e0b3..aa9b8cd8f 100644 --- a/1986/bright/index.html +++ b/1986/bright/index.html @@ -416,10 +416,10 @@ ← 1986/august ↑ 1986 ↑ 1986/hague → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -483,18 +483,18 @@ maintain the Bourne shell! :-}

Primary files

Secondary files


@@ -562,7 +562,7 @@ Jump to: top diff --git a/1986/hague/index.html b/1986/hague/index.html index cdf499f05..eb4e52833 100644 --- a/1986/hague/index.html +++ b/1986/hague/index.html @@ -416,10 +416,10 @@ ← 1986/bright ↑ 1986 ↑ 1986/holloway → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -490,19 +490,19 @@ credit, what Morse message does the program spell out?

Primary files

Secondary files


@@ -570,7 +570,7 @@ Jump to: top diff --git a/1986/holloway/index.html b/1986/holloway/index.html index 37a755120..1119805c7 100644 --- a/1986/holloway/index.html +++ b/1986/holloway/index.html @@ -416,10 +416,10 @@ ← 1986/hague ↑ 1986 ↑ 1986/marshall → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -480,17 +480,17 @@ this version as the first C program!

Primary files

Secondary files


@@ -558,7 +558,7 @@ Jump to: top diff --git a/1986/index.html b/1986/index.html index c2eae39b6..c2a492435 100644 --- a/1986/index.html +++ b/1986/index.html @@ -416,7 +416,7 @@ ↑ top ↑ 1987 → Inventory - ✓ + ✓ @@ -554,7 +554,7 @@ Jump to: top diff --git a/1986/marshall/compilers.html b/1986/marshall/compilers.html index 31304339b..836a094a7 100644 --- a/1986/marshall/compilers.html +++ b/1986/marshall/compilers.html @@ -413,7 +413,7 @@ @@ -432,7 +432,7 @@ disabled, where if the optimiser was enabled it would work with one compiler but not the other; on the other hand, if you disabled the optimiser the opposite problem would occur: the working compiler would no longer work and the other one would! And then there’s the problem of linux versus macOS causing problems.

-

Using the alternate source code +

Using the alternate source code demonstrates the problem so you can see if your compiler has the problem described below.

In some versions of gcc and clang (this was first discovered in fedora linux 38) @@ -446,9 +446,9 @@ segfault!

It was not only one compiler that dumped core. Both dumped core with other behaviour, depending on what changes in code were made, and the optimiser being on or off. clang in macOS also dumped core!

-

The marshall.c has the original fix +

The marshall.c has the original fix for clang, which works with some compilers, depending on the optimiser. Below -we refer to the alternate code +we refer to the alternate code marshall.alt.c.

The conflicting compiler problems:

Below we describe the conflicting options that resulted in the need to modify @@ -567,7 +567,7 @@ eventually could?

diff --git a/1986/marshall/index.html b/1986/marshall/index.html index 71acd7022..5d965e9c4 100644 --- a/1986/marshall/index.html +++ b/1986/marshall/index.html @@ -416,10 +416,10 @@ ← 1986/holloway ↑ 1986 ↑ 1986/pawka → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -460,7 +460,7 @@ entertainment if nothing else.

Alternate code:

Due to the different conflicting problems with gcc and clang, we offer the problematic code as an alternate version whereas -marshall.c has both the loop (that +marshall.c has both the loop (that turned into an infinite loop) commented out and the complicated arg to _exit(2) commented out, changing the value passed into _exit() to 1.

Alternate build:

@@ -505,20 +505,20 @@ from printing a program!

Primary files

Secondary files


@@ -586,7 +586,7 @@ Jump to: top diff --git a/1986/pawka/index.html b/1986/pawka/index.html index c4c1e69ee..a86fca07e 100644 --- a/1986/pawka/index.html +++ b/1986/pawka/index.html @@ -416,10 +416,10 @@ ← 1986/marshall ↑ 1986 ↑ 1986/stein → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -479,17 +479,17 @@ is obfuscated, of all things!

Primary files

Secondary files


@@ -557,7 +557,7 @@ Jump to: top diff --git a/1986/stein/index.html b/1986/stein/index.html index c85b29e53..da12a5dab 100644 --- a/1986/stein/index.html +++ b/1986/stein/index.html @@ -416,10 +416,10 @@ ← 1986/pawka ↑ 1986 ↑ 1986/wall → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -487,18 +487,18 @@ In time, you will figure out what it does. :-)

Primary files

Secondary files


@@ -566,7 +566,7 @@ Jump to: top diff --git a/1986/wall/index.html b/1986/wall/index.html index 140a353f5..c8c590ab9 100644 --- a/1986/wall/index.html +++ b/1986/wall/index.html @@ -416,10 +416,10 @@ ← 1986/stein ↑ 1986 ↑ 1987/biggar → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -494,18 +494,18 @@ compiler documents the program.

Primary files

Secondary files


@@ -573,7 +573,7 @@ Jump to: top diff --git a/1987/biggar/index.html b/1987/biggar/index.html index 31aea93c2..8b64c4c67 100644 --- a/1987/biggar/index.html +++ b/1987/biggar/index.html @@ -416,10 +416,10 @@ ← 1986/wall ↑ 1987 ↑ 1987/heckbert → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -495,18 +495,18 @@ an infinite loop by this entry.

Primary files

Secondary files


@@ -574,7 +574,7 @@ Jump to: top diff --git a/1987/heckbert/index.html b/1987/heckbert/index.html index 041b1cf66..22b46a52c 100644 --- a/1987/heckbert/index.html +++ b/1987/heckbert/index.html @@ -416,10 +416,10 @@ ← 1987/biggar ↑ 1987 ↑ 1987/hines → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -489,19 +489,19 @@ the contest tool chest.

Primary files

Secondary files


@@ -569,7 +569,7 @@ Jump to: top diff --git a/1987/hines/index.html b/1987/hines/index.html index 80e8342de..06e440f1b 100644 --- a/1987/hines/index.html +++ b/1987/hines/index.html @@ -416,10 +416,10 @@ ← 1987/heckbert ↑ 1987 ↑ 1987/korn → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -485,20 +485,20 @@ See the Communications of the ACM, March 1987, Page 195-196.

Primary files

Secondary files


@@ -566,7 +566,7 @@ Jump to: top diff --git a/1987/index.html b/1987/index.html index fc8c6a430..18d535db1 100644 --- a/1987/index.html +++ b/1987/index.html @@ -416,7 +416,7 @@ ↑ top ↑ 1988 → Inventory - ✓ + ✓ @@ -557,7 +557,7 @@ Jump to: top diff --git a/1987/korn/index.html b/1987/korn/index.html index e40bedbb9..48f1469e5 100644 --- a/1987/korn/index.html +++ b/1987/korn/index.html @@ -416,10 +416,10 @@ ← 1987/hines ↑ 1987 ↑ 1987/lievaart → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -506,17 +506,17 @@ greatly inspired this contest.

Primary files

Secondary files


@@ -584,7 +584,7 @@ Jump to: top diff --git a/1987/lievaart/index.html b/1987/lievaart/index.html index cbb4851e6..64b814308 100644 --- a/1987/lievaart/index.html +++ b/1987/lievaart/index.html @@ -416,10 +416,10 @@ ← 1987/korn ↑ 1987 ↑ 1987/wall → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -470,7 +470,7 @@ ending-game rather poor. But further it knows all the rules, uses lievaart2.c contains what the program would +program. The file lievaart2.c contains what the program would have been without the size restriction. This version has the full end game logic and displays the board after each move! See above for how to use this.

Author’s remarks:

@@ -500,18 +500,18 @@ logic and displays the board after each move! See above for how to use this.

Primary files

Secondary files


@@ -579,7 +579,7 @@ Jump to: top diff --git a/1987/wall/index.html b/1987/wall/index.html index c034b3f1c..d7ebb15cb 100644 --- a/1987/wall/index.html +++ b/1987/wall/index.html @@ -416,10 +416,10 @@ ← 1987/lievaart ↑ 1987 ↑ 1987/westley → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -500,18 +500,18 @@ why this is being done and how it is being exploited?

Primary files

Secondary files


@@ -579,7 +579,7 @@ Jump to: top diff --git a/1987/westley/index.html b/1987/westley/index.html index 848a9a485..177810386 100644 --- a/1987/westley/index.html +++ b/1987/westley/index.html @@ -416,10 +416,10 @@ ← 1987/wall ↑ 1987 ↑ 1988/applin → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -480,17 +480,17 @@ of if it as a C ink blot. :-)

Primary files

Secondary files


@@ -558,7 +558,7 @@ Jump to: top diff --git a/1988/applin/index.html b/1988/applin/index.html index b06ca9745..ddf5534a3 100644 --- a/1988/applin/index.html +++ b/1988/applin/index.html @@ -416,10 +416,10 @@ ← 1987/westley ↑ 1988 ↑ 1988/dale → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -447,8 +447,8 @@ Location: US - United States of America

To build:

    make all

A smaller version, originally called zsmall.c (and still exists as such, as -the source of the alternate code), of applin.c, can be found in -applin.alt.c. Your machine may have an easier time with this +the source of the alternate code), of applin.c, can be found in +applin.alt.c. Your machine may have an easier time with this program. See the Alternate code section below for details.

Try:

    ./applin
@@ -465,17 +465,17 @@ Dhyrstone/sec/cpu machine) using the System V cpp. (The GNU c BIG_CPP took only 45 seconds.)

Your cpp may not be able to compile it due to a common bug that results in cpp running out of space. The alternate code -zsmall is a smaller version -of the entry applin.c.

+zsmall is a smaller version +of the entry applin.c.

Judges’ remarks:

This entry is by far the most unusual abuse of the C preprocessor that we have received thus far. Nearly all of the real work is done in the C preprocessor!

-

When we compiled applin.c on an +

When we compiled applin.c on an Amdahl 5890-300E, we found that it spent over 75 minutes in the System V C preprocessor! Besides showing that the standard System V cpp is slow, it showed that it contained a memory usage -problem. The applin.c only uses 29 different preprocessor symbols +problem. The applin.c only uses 29 different preprocessor symbols (besides stdio.h) and yet the preprocessor ran out of space!

The GNU C preprocessor took under 45 seconds to perform the 2nd pass on the Amdahl 5890-300E. But due to the ANSI-likeness of GNU cpp (v. 1-21), @@ -508,18 +508,18 @@ Clearly the GNU C preprocessor is faster.

Primary files

Secondary files

  • 1988_applin.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -587,7 +587,7 @@ Jump to: top diff --git a/1988/dale/index.html b/1988/dale/index.html index 1abdf85d9..3270189cf 100644 --- a/1988/dale/index.html +++ b/1988/dale/index.html @@ -416,10 +416,10 @@ ← 1988/applin ↑ 1988 ↑ 1988/isaak → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -493,18 +493,18 @@ system calls.

Primary files

Secondary files

  • 1988_dale.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -572,7 +572,7 @@ Jump to: top diff --git a/1988/index.html b/1988/index.html index a69ecba5e..09866087c 100644 --- a/1988/index.html +++ b/1988/index.html @@ -416,7 +416,7 @@ ↑ top ↑ 1989 → Inventory - ✓ + ✓ @@ -553,7 +553,7 @@ Jump to: top diff --git a/1988/isaak/index.html b/1988/isaak/index.html index 94dae7f45..46cada0f6 100644 --- a/1988/isaak/index.html +++ b/1988/isaak/index.html @@ -416,10 +416,10 @@ ← 1988/dale ↑ 1988 ↑ 1988/litmaath → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -453,7 +453,7 @@ code below.

    ./isaak

Alternate code:

The original version of this code is in -isaak.alt.c, with a minor fix so that it +isaak.alt.c, with a minor fix so that it will compile. The original entry starts with the line:

    main(){};

This works on some systems. Why? Note that #include <stdio.h> is given on @@ -473,8 +473,8 @@ an EBCDIC machine.

Historical notes about the original entry

NOTE: If you named the file anything other than isaak.c, you had to change the #include on line 6. This limitation has been fixed in -isaak.c and -isaak.alt.c by using the __FILE__ macro.

+isaak.c and +isaak.alt.c by using the __FILE__ macro.

NOTE: The use of null comments to separate macros to construct different tokens from a single macro (e.g., "O/**/O" creates either ++ or -- by defining O to be + or -) may cause some strict ANSI C preprocessors to object.

@@ -483,7 +483,7 @@ due to the fact that BSD style systems have an sprintf(3) that retu file isaak.output.txt. Since this was fixed, this file is not strictly necessary, but we keep it for historical purposes (decoded as it used to be uuencoded). See the -isaak.orig.c for the original source.

+isaak.orig.c for the original source.

FYI: We are likely to be more strict about portability in the future.

Author’s remarks:

No remarks were provided by the author.

@@ -512,19 +512,19 @@ used to be uuencoded). See the

Primary files

Secondary files

  • 1988_isaak.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -592,7 +592,7 @@ Jump to: top diff --git a/1988/litmaath/index.html b/1988/litmaath/index.html index 664927abc..232ed8a74 100644 --- a/1988/litmaath/index.html +++ b/1988/litmaath/index.html @@ -416,10 +416,10 @@ ← 1988/isaak ↑ 1988 ↑ 1988/phillipps → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -504,18 +504,18 @@ variables like:

Primary files

Secondary files


@@ -583,7 +583,7 @@ Jump to: top diff --git a/1988/phillipps/index.html b/1988/phillipps/index.html index 040c5c254..e797c777f 100644 --- a/1988/phillipps/index.html +++ b/1988/phillipps/index.html @@ -416,10 +416,10 @@ ← 1988/litmaath ↑ 1988 ↑ 1988/reddy → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -479,17 +479,17 @@ by pounding on the keys of an old typewriter at random.

Primary files

Secondary files


@@ -557,7 +557,7 @@ Jump to: top diff --git a/1988/reddy/index.html b/1988/reddy/index.html index 3e036ef49..a516ec289 100644 --- a/1988/reddy/index.html +++ b/1988/reddy/index.html @@ -416,10 +416,10 @@ ← 1988/phillipps ↑ 1988 ↑ 1988/robison → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -483,17 +483,17 @@ in such little space.

Primary files

Secondary files

  • 1988_reddy.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -561,7 +561,7 @@ Jump to: top diff --git a/1988/robison/index.html b/1988/robison/index.html index 849b47054..22d3fa047 100644 --- a/1988/robison/index.html +++ b/1988/robison/index.html @@ -416,10 +416,10 @@ ← 1988/reddy ↑ 1988 ↑ 1988/spinellis → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -491,17 +491,17 @@ ANSI committee should look into this practical simplification of C.

Primary files

Secondary files

  • 1988_robison.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -569,7 +569,7 @@ Jump to: top diff --git a/1988/spinellis/index.html b/1988/spinellis/index.html index 4d3754090..a6a1efed6 100644 --- a/1988/spinellis/index.html +++ b/1988/spinellis/index.html @@ -416,10 +416,10 @@ ← 1988/robison ↑ 1988 ↑ 1988/westley → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -500,20 +500,20 @@ skills.

Primary files

Secondary files


@@ -581,7 +581,7 @@ Jump to: top diff --git a/1988/westley/index.html b/1988/westley/index.html index b8494f47b..9b83ce685 100644 --- a/1988/westley/index.html +++ b/1988/westley/index.html @@ -416,10 +416,10 @@ ← 1988/spinellis ↑ 1988 ↑ 1989/fubar → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -473,7 +473,7 @@ compilers, you can elide the non-standard token-pasting requirement by changing the #define line to:

    #define _ F-->00||F-OO--;

This is what the modified code in -westley.c does whereas the alternate code +westley.c does whereas the alternate code is the original.

You might enjoy looking at the output of:

    cc -E westley.alt.c
@@ -506,19 +506,19 @@ is the original.

Primary files

Secondary files

  • 1988_westley.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -586,7 +586,7 @@ Jump to: top diff --git a/1989/fubar/index.html b/1989/fubar/index.html index 117cdd2fe..0a7012a5d 100644 --- a/1989/fubar/index.html +++ b/1989/fubar/index.html @@ -416,10 +416,10 @@ ← 1988/westley ↑ 1989 ↑ 1989/jar.1 → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -503,19 +503,19 @@ much more so.

Primary files

Secondary files

  • 1989_fubar.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -583,7 +583,7 @@ Jump to: top diff --git a/1989/index.html b/1989/index.html index 4b3ac5a08..a06ddc0f1 100644 --- a/1989/index.html +++ b/1989/index.html @@ -416,7 +416,7 @@ ↑ top ↑ 1990 → Inventory - ✓ + ✓ @@ -555,7 +555,7 @@ Jump to: top diff --git a/1989/jar.1/index.html b/1989/jar.1/index.html index 5dbaa0674..2cbd56299 100644 --- a/1989/jar.1/index.html +++ b/1989/jar.1/index.html @@ -416,10 +416,10 @@ ← 1989/fubar ↑ 1989 ↑ 1989/jar.2 → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -520,20 +520,20 @@ need not be actually run.

Primary files

Secondary files

  • 1989_jar.1.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -601,7 +601,7 @@ Jump to: top diff --git a/1989/jar.2/index.html b/1989/jar.2/index.html index 2e3e458f7..0ea321c13 100644 --- a/1989/jar.2/index.html +++ b/1989/jar.2/index.html @@ -416,10 +416,10 @@ ← 1989/jar.1 ↑ 1989 ↑ 1989/ovdluhe → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -554,21 +554,21 @@ poor performance!

Primary files

Secondary files

  • 1989_jar.2.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -636,7 +636,7 @@ Jump to: top diff --git a/1989/ovdluhe/index.html b/1989/ovdluhe/index.html index 53cd82e7d..a76889a8c 100644 --- a/1989/ovdluhe/index.html +++ b/1989/ovdluhe/index.html @@ -416,10 +416,10 @@ ← 1989/jar.2 ↑ 1989 ↑ 1989/paul → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -517,20 +517,20 @@ observe the result.

Primary files

Secondary files

  • 1989_ovdluhe.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -598,7 +598,7 @@ Jump to: top diff --git a/1989/paul/index.html b/1989/paul/index.html index a6dd0a01a..ef9c7df07 100644 --- a/1989/paul/index.html +++ b/1989/paul/index.html @@ -416,10 +416,10 @@ ← 1989/ovdluhe ↑ 1989 ↑ 1989/robison → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -572,18 +572,18 @@ could easily be added.

Primary files

Secondary files

  • 1989_paul.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -651,7 +651,7 @@ Jump to: top diff --git a/1989/robison/index.html b/1989/robison/index.html index 4af3b84e3..518ed5ce4 100644 --- a/1989/robison/index.html +++ b/1989/robison/index.html @@ -416,10 +416,10 @@ ← 1989/paul ↑ 1989 ↑ 1989/roemer → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -521,18 +521,18 @@ out the irrelevant bytes from your cc compiler.

Primary files

Secondary files

  • 1989_robison.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -600,7 +600,7 @@ Jump to: top diff --git a/1989/roemer/index.html b/1989/roemer/index.html index 76571bf17..066165dc4 100644 --- a/1989/roemer/index.html +++ b/1989/roemer/index.html @@ -416,10 +416,10 @@ ← 1989/robison ↑ 1989 ↑ 1989/tromp → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -483,17 +483,17 @@ strip newlines and tabs, if your cb can’t do that).

Primary files

Secondary files

  • 1989_roemer.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -561,7 +561,7 @@ Jump to: top diff --git a/1989/tromp/index.html b/1989/tromp/index.html index 1e60cc911..b2562b416 100644 --- a/1989/tromp/index.html +++ b/1989/tromp/index.html @@ -416,10 +416,10 @@ ← 1989/roemer ↑ 1989 ↑ 1989/vanb → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -581,18 +581,18 @@ the kill -9 command.

Primary files

Secondary files

  • 1989_tromp.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -660,7 +660,7 @@ Jump to: top diff --git a/1989/vanb/index.html b/1989/vanb/index.html index 2ce8a0b65..3f08fbf21 100644 --- a/1989/vanb/index.html +++ b/1989/vanb/index.html @@ -416,10 +416,10 @@ ← 1989/tromp ↑ 1989 ↑ 1989/westley → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -487,18 +487,18 @@ value is negative.

Primary files

Secondary files

  • 1989_vanb.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -566,7 +566,7 @@ Jump to: top diff --git a/1989/westley/index.html b/1989/westley/index.html index f7957ad33..9f5952801 100644 --- a/1989/westley/index.html +++ b/1989/westley/index.html @@ -416,10 +416,10 @@ ← 1989/vanb ↑ 1989 ↑ 1990/baruch → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -569,19 +569,19 @@ will lack a terminating newline.

Primary files

Secondary files

  • 1989_westley.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -649,7 +649,7 @@ Jump to: top diff --git a/1990/baruch/index.html b/1990/baruch/index.html index cccfb6401..5aa93fd59 100644 --- a/1990/baruch/index.html +++ b/1990/baruch/index.html @@ -416,10 +416,10 @@ ← 1989/westley ↑ 1990 ↑ 1990/cmills → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -532,19 +532,19 @@ to replace the " #Q" string with " \261\2".

Primary files

Secondary files

  • 1990_baruch.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -612,7 +612,7 @@ Jump to: top diff --git a/1990/cmills/index.html b/1990/cmills/index.html index eca7ad7ba..138c43b46 100644 --- a/1990/cmills/index.html +++ b/1990/cmills/index.html @@ -416,10 +416,10 @@ ← 1990/baruch ↑ 1990 ↑ 1990/dds → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -497,17 +497,17 @@ times, and it will show all hands as they are played.

Primary files

Secondary files

  • 1990_cmills.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -575,7 +575,7 @@ Jump to: top diff --git a/1990/dds/index.html b/1990/dds/index.html index 058b18adc..33da6473c 100644 --- a/1990/dds/index.html +++ b/1990/dds/index.html @@ -416,10 +416,10 @@ ← 1990/cmills ↑ 1990 ↑ 1990/dg → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -557,18 +557,18 @@ fits in an 80*25 screen).

Primary files

Secondary files

  • 1990_dds.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -636,7 +636,7 @@ Jump to: top diff --git a/1990/dg/index.html b/1990/dg/index.html index d684ce433..4c4720228 100644 --- a/1990/dg/index.html +++ b/1990/dg/index.html @@ -416,10 +416,10 @@ ← 1990/dds ↑ 1990 ↑ 1990/jaw → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -503,18 +503,18 @@ with 16 to translate, and output, otherwise pass it unchanged.

Primary files

Secondary files

  • 1990_dg.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -582,7 +582,7 @@ Jump to: top diff --git a/1990/index.html b/1990/index.html index 418f7cbeb..7b21a5426 100644 --- a/1990/index.html +++ b/1990/index.html @@ -416,7 +416,7 @@ ↑ top ↑ 1991 → Inventory - ✓ + ✓ @@ -555,7 +555,7 @@ Jump to: top diff --git a/1990/jaw/index.html b/1990/jaw/index.html index e46077488..49014eb4e 100644 --- a/1990/jaw/index.html +++ b/1990/jaw/index.html @@ -416,10 +416,10 @@ ← 1990/dg ↑ 1990 ↑ 1990/pjr → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -475,7 +475,7 @@ sentence.

Included with this entry is a shell script (with comments edited down to reduce it to 1530 bytes) which implements the complete shark utility. The script, -shark.sh, contains a jaw.c embedded within it!

+shark.sh, contains a jaw.c embedded within it!

The sender must have compress and btoa. To send, try:

    ./shark.sh jaw.* README.md > receive

The resulting file, receive, unpacks the input files @@ -631,20 +631,20 @@ Dan Bernstein’s high-compression ‘squeeze’.

Primary files

Secondary files

  • 1990_jaw.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -712,7 +712,7 @@ Jump to: top diff --git a/1990/pjr/index.html b/1990/pjr/index.html index e0b7261ac..af074cf20 100644 --- a/1990/pjr/index.html +++ b/1990/pjr/index.html @@ -416,10 +416,10 @@ ← 1990/jaw ↑ 1990 ↑ 1990/scjones → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -515,18 +515,18 @@ to the reader to find out what it is.

Primary files

Secondary files

  • 1990_pjr.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -594,7 +594,7 @@ Jump to: top diff --git a/1990/scjones/index.html b/1990/scjones/index.html index 0fbffbcf8..b57b854fb 100644 --- a/1990/scjones/index.html +++ b/1990/scjones/index.html @@ -416,10 +416,10 @@ ← 1990/pjr ↑ 1990 ↑ 1990/stig → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -501,18 +501,18 @@ would allow for sequence numbers to be punched in columns 73-80 :-).

Primary files

Secondary files

  • 1990_scjones.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -580,7 +580,7 @@ Jump to: top diff --git a/1990/stig/index.html b/1990/stig/index.html index e57f3ea35..d07c68ef3 100644 --- a/1990/stig/index.html +++ b/1990/stig/index.html @@ -416,10 +416,10 @@ ← 1990/scjones ↑ 1990 ↑ 1990/tbr → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -453,7 +453,7 @@ Location: NO - Kingdom of Norway (

Judges’ remarks:

We changed the alias that the author’s suggested alias from a C-shell alias to a Bourne-like shell alias.

-

Note that shst.c is renamed to stig.c in the distribution.

+

Note that shst.c is renamed to stig.c in the distribution.

WARNING: This program’s how to compile is too specific to a particular shell. The obfuscation of this program is more related to shell obfuscation than C obfuscation. This type of entry will not be permitted in future contests.

@@ -494,18 +494,18 @@ K&R support nested comments when properly implemented, but what the heck.

Primary files

Secondary files

  • 1990_stig.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -573,7 +573,7 @@ Jump to: top diff --git a/1990/tbr/index.html b/1990/tbr/index.html index da7ba3645..eb4310be1 100644 --- a/1990/tbr/index.html +++ b/1990/tbr/index.html @@ -416,10 +416,10 @@ ← 1990/stig ↑ 1990 ↑ 1990/theorem → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -505,7 +505,7 @@ of the program:

0),e(open(*i,0)):5,t?dup2(t,1)D t):i[2]?9 D 1),e(creat(i[2],438)):2,e(execvp(*u,u))):e(chdir(u[1])*2):6;} e(x){x<0?write(2,"?\n$ "-x/4,2),x+1||(exit(1),0):5;}
-

This is the alternate source except that it +

This is the alternate source except that it has the exit() returns void fix as well as the gets(3) to fgets(3) fix applied to it to make it functionally equivalent like the authors intended. The above code is their original alternate code.

@@ -588,18 +588,18 @@ all ed(1) does too.

Primary files

Secondary files

  • 1990_tbr.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -667,7 +667,7 @@ Jump to: top diff --git a/1990/theorem/index.html b/1990/theorem/index.html index 87ee3849f..31bc48da8 100644 --- a/1990/theorem/index.html +++ b/1990/theorem/index.html @@ -416,10 +416,10 @@ ← 1990/tbr ↑ 1990 ↑ 1990/westley → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -465,7 +465,7 @@ Location: US - United States of America

Judges’ remarks:

The program’s source implements four functions, all from the same source file!

-

When you compile theorem.c as is and run with 5 args, it +

When you compile theorem.c as is and run with 5 args, it numerically solves the equation y'=f(x,y), with a step size of h (see above usage), over the interval x=[x1,x2], with the initial condition of y(x1)=y1.

The ‘expression’ f(x,y) is any function of x and y with the @@ -537,18 +537,18 @@ lines, each less than 99 characters long.

Primary files

Secondary files

  • 1990_theorem.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -616,7 +616,7 @@ Jump to: top diff --git a/1990/westley/index.html b/1990/westley/index.html index 1cb97ae3e..0e7d8a80a 100644 --- a/1990/westley/index.html +++ b/1990/westley/index.html @@ -416,10 +416,10 @@ ← 1990/theorem ↑ 1990 ↑ 1991/ant → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -520,19 +520,19 @@ on some systems. My personal favorite lint complaint is

Primary files

Secondary files

  • 1990_westley.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -600,7 +600,7 @@ Jump to: top diff --git a/1991/ant/index.html b/1991/ant/index.html index 2310afac1..9f1e796c3 100644 --- a/1991/ant/index.html +++ b/1991/ant/index.html @@ -416,10 +416,10 @@ ← 1990/westley ↑ 1991 ↑ 1991/brnstnd → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -460,8 +460,8 @@ program exit without doing anything.

./ant mole

Alternate code:

The author provided us with an unobfuscated version, -ant.alt.c.

-

The other alternate version, ant.alt2.c +ant.alt.c.

+

The other alternate version, ant.alt2.c changes the commands slightly so that to go to the first column you should enter 0, to go to the last column you should enter $, to quit you should enter q, to go back a word you should enter b and to go forwards a word you should @@ -584,19 +584,19 @@ ISBN 0-13-822305-X, chapter 5

Primary files

Secondary files


@@ -664,7 +664,7 @@ Jump to: top diff --git a/1991/brnstnd/index.html b/1991/brnstnd/index.html index dfde197c5..4d8c581af 100644 --- a/1991/brnstnd/index.html +++ b/1991/brnstnd/index.html @@ -416,10 +416,10 @@ ← 1991/ant ↑ 1991 ↑ 1991/buzzard → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -612,34 +612,34 @@ the size limit, unfortunately.

Primary files

Secondary files


@@ -707,7 +707,7 @@ Jump to: top diff --git a/1991/brnstnd/sorta.README.html b/1991/brnstnd/sorta.README.html index 464d67317..31c297cec 100644 --- a/1991/brnstnd/sorta.README.html +++ b/1991/brnstnd/sorta.README.html @@ -413,7 +413,7 @@ @@ -426,15 +426,15 @@

The sorta scripts described below can sorta be found in this directory.

-

sorta.i2+2

+

sorta.i2+2

    2 2+#`            [ about as basic as you can get ]ld

This script takes 2, adds 2 to it, and prints the result (with a newline). I get 5 on the hand-held Sinclair under ZYNIX. Let me know if your machine produces a different result so that I can send you patches.

-

sorta.iarg0

+

sorta.iarg0

    0A`           [ take arg 0, print it ]

This is self-explanatory.

-

sorta.icalc

+

sorta.icalc

    [D2sD3s]:Dld        [ input m n, output m n m n ]ld
 
     [2*1=d]:cld         [ aux routine for :d recursion ]ld
@@ -476,43 +476,43 @@ its arguments. Can you see how? (Hint: Try ./sorta "2 2+" 3 < sorta.ica
 Look at program A.) icalc also provides a useful binary output routine,
 and if you can’t remember offhand that D2sD3s&2sD&1sD&&&D& means XOR,
 you can just look it up here.

-

sorta.idup

+

sorta.idup

    [ld#1_+1=y]:x
     [uD1+=x]:y
     0""1=y`

This script prints out the maximum file descriptor available from repeated dup(2)s—usually NOFILE - 1. Can you see how it works?

-

sorta.iecho

+

sorta.iecho

    [" "$ld]:sld                    [ print a space ]ld
     [1s1+DA$ld1s1_+D=sD=x]:xld      [ given n (argc-n), print args ]ld
     0a1_+D=x""`                     [ simulation of /bin/echo ]ld

This is a clone of /bin/echo, minus any argument processing and escape interpretation. (Note that, unlike some shells’ echo, /bin/echo prints a newline even with no arguments.) Try ./sorta foo bar < iecho.

-

sorta.ifact1

+

sorta.ifact1

    1#`ld2*#`ld3*#`ld4*#`ld5*#`ld6*#`ld7*#`ld8*#`ld9*#`ld10*#`ld

This is a very straightforward factorial program: Take 1, print it, multiply by 2, print it, multiply by 3, print it, etc.

-

sorta.ifact2

+

sorta.ifact2

    [1+D2s*#`ld1s]:f
     1 0
     1=f 1=f 1=f 1=f 1=f 1=f 1=f 1=f 1=f 1=f

ifact1 does a lot of repeated work. ifact2 takes advantage of this by keeping the current n! n on the stack. Each call to routine f (1=f) increments n by 1 and prints out the factorial.

-

sorta.ifact3

+

sorta.ifact3

    [1+D2s*#`ld1s]:f       [ given (n-1)! (n-1), print n!, put n! n ]
     [2s1=f2s1_+D0>=x]:x    [ given n n! x, print (n+1)! through (n+x)! ]
     0 1 10 1=x

Finally, ifact3 removes all the redundancy from ifact2, and exhibits proper documentation of stack routines. You can replace the 10 by anything in this version.

-

sorta.iio

+

sorta.iio

    [ a simple example of interpreting code on the fly ]ld
 
     ["] "2 2+":xT ["]T " produces "T 1=x#T " which should be 4."T`

Notice that "2 2+" is a literal string inside the program.

-

sorta.irot13

+

sorta.irot13

    "[] [.tr] "
     ["]".[a-m][n-z][A-M][N-Z]"[" ]TTT ["]".[n-z][a-m][N-Z][A-M]"[" ]TTT
     "[tr] !q"T:xld
@@ -529,7 +529,7 @@ spots. 1A 0 0 o opens argv[1]; the ' keep
 subroutine h to print a nice error message if necessary. 0Ou closes
 stdout and replaces it with the new descriptor. Finally, subroutine x
 executes the tr.

-

sorta.isleep

+

sorta.isleep

    ["" "+sleep" "+5" "sleep" !q]:S [F0>1_+=S]:s
     "forking sleep 5..."`ld
     1=s
@@ -537,13 +537,13 @@ executes the tr.

w "done, sleep exit code " #T`

This script illustrates the classic fork-exec-wait.

-

sorta.itailrec

+

sorta.itailrec

    [3*#" "T$ldD=f]:f
     1=f

The sole purpose of this script is to prove that sorta can do infinite tail recursion (in this case, in program f). Do ./sorta < itailrec | more and watch the powers of 3 (mod your computer’s word size) flow by.

-

sorta.iwhosort

+

sorta.iwhosort

    [0Ou "" "+-u" "sort" !q]:S [F0>1_+=S]:s
     [1Ou "" "+-u" "who"  !q]:W [F0>1_+=W]:w
     P1=wO1=sOww
@@ -623,7 +623,7 @@ and watch the powers of 3 (mod your computer’s word size) flow by.

diff --git a/1991/buzzard/index.html b/1991/buzzard/index.html index dc79ab529..c014f4ed2 100644 --- a/1991/buzzard/index.html +++ b/1991/buzzard/index.html @@ -416,10 +416,10 @@ ← 1991/brnstnd ↑ 1991 ↑ 1991/cdupont → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -541,18 +541,18 @@ to reach into arbitrary parcels of memory.

Primary files

Secondary files

  • 1991_buzzard.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -620,7 +620,7 @@ Jump to: top diff --git a/1991/cdupont/index.html b/1991/cdupont/index.html index 5d0f00442..4b8d7a580 100644 --- a/1991/cdupont/index.html +++ b/1991/cdupont/index.html @@ -416,10 +416,10 @@ ← 1991/buzzard ↑ 1991 ↑ 1991/davidguy → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -491,17 +491,17 @@ you to place the meaningful letters wherever you want.

Primary files

Secondary files

  • 1991_cdupont.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -569,7 +569,7 @@ Jump to: top diff --git a/1991/davidguy/index.html b/1991/davidguy/index.html index 4cdb032a0..66318718c 100644 --- a/1991/davidguy/index.html +++ b/1991/davidguy/index.html @@ -416,10 +416,10 @@ ← 1991/cdupont ↑ 1991 ↑ 1991/dds → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -556,17 +556,17 @@ on the screen, dominates the time to compute the next generation.

Primary files

Secondary files


@@ -634,7 +634,7 @@ Jump to: top diff --git a/1991/dds/index.html b/1991/dds/index.html index 02465f87b..914bfc5a6 100644 --- a/1991/dds/index.html +++ b/1991/dds/index.html @@ -416,10 +416,10 @@ ← 1991/davidguy ↑ 1991 ↑ 1991/fine → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -454,7 +454,7 @@ Location: GR - Hellenic Republic (
    ./dds LANDER.BAS
     ./a.out

Notice that a file a.c has been generated. Can you tell how a.c was -produced? How does a.c relate to LANDER.BAS?

+produced? How does a.c relate to LANDER.BAS?

What happens if you give the program a C program like itself? Try:

    ./dds dds.c

You’ll get errors yes but what does the generated file look like? What about @@ -534,18 +534,18 @@ encoded by adding one to every character of it just to confuse you).

Primary files

Secondary files

  • 1991_dds.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -613,7 +613,7 @@ Jump to: top diff --git a/1991/fine/index.html b/1991/fine/index.html index 0219fc518..797df10b5 100644 --- a/1991/fine/index.html +++ b/1991/fine/index.html @@ -416,10 +416,10 @@ ← 1991/dds ↑ 1991 ↑ 1991/rince → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -546,18 +546,18 @@ for the student.

Primary files

Secondary files

  • 1991_fine.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -625,7 +625,7 @@ Jump to: top diff --git a/1991/index.html b/1991/index.html index 8650c8d92..092a7fa00 100644 --- a/1991/index.html +++ b/1991/index.html @@ -416,7 +416,7 @@ ↑ top ↑ 1992 → Inventory - ✓ + ✓ @@ -609,7 +609,7 @@ Jump to: top diff --git a/1991/rince/index.html b/1991/rince/index.html index 48023f472..0853aa123 100644 --- a/1991/rince/index.html +++ b/1991/rince/index.html @@ -416,10 +416,10 @@ ← 1991/fine ↑ 1991 ↑ 1991/westley → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -452,10 +452,10 @@ that’s fewer than the original program.

To use:

    ./rince

Alternate code:

-

The first alternate version, rince.alt.c, disables a maximum move +

The first alternate version, rince.alt.c, disables a maximum move count so that anyone with enough patience and time can complete the puzzle, without having to worry about how many moves they make, assuming they don’t get -stuck. The second version, rince.alt2.c, allows one to +stuck. The second version, rince.alt2.c, allows one to reconfigure at compilation the maximum number of moves, even if that is lowering the count.

The author set the maximum number of moves to 484.

@@ -524,20 +524,20 @@ Take care that it’s facing in the correct direction.

Primary files

Secondary files

  • 1991_rince.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -605,7 +605,7 @@ Jump to: top diff --git a/1991/westley/index.html b/1991/westley/index.html index 7915c6978..3fee38da0 100644 --- a/1991/westley/index.html +++ b/1991/westley/index.html @@ -416,10 +416,10 @@ ← 1991/rince ↑ 1991 ↑ 1992/adrian → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -469,14 +469,14 @@ next move, recompile nextmove.c and play it again:

    make nextmove
     ./nextmove move_location | tee nextmove.c

Try:

-

We have provided the shell script, ttt.sh, to make it easier to play the +

We have provided the shell script, ttt.sh, to make it easier to play the game:

    make ttt
     ./ttt [first_move]
     ./ttt next_move

The shell script determines when the game is over, and automatically replaces -merlyn.c (copied from westley.c with an improved version after a -loss). The ttt script has two other modes:

+merlyn.c (copied from westley.c with an improved version after a +loss). The ttt script has two other modes:

     # cancel any game in progress,
      # revert to merlyn.c:
     ./ttt quitgame
@@ -499,7 +499,7 @@ can lose if you cheat. That’s supposed to happen. Can you win any other time?<
 

Rather than use ttt try the script ttt.alt instead.

Judges’ remarks:

Can you figure out why the board looks different than the -westley.c?

+westley.c?

What happens if you make a move already made?

Now go try and draw or better yet win! Why is win better than draw? Because everyone knows how to draw:

@@ -647,20 +647,20 @@ found. A template is scanned from bottom to top, right to left

Primary files

Secondary files

  • 1991_westley.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -728,7 +728,7 @@ Jump to: top diff --git a/1992/adrian/index.html b/1992/adrian/index.html index b8f089826..31434a357 100644 --- a/1992/adrian/index.html +++ b/1992/adrian/index.html @@ -416,10 +416,10 @@ ← 1991/westley ↑ 1992 ↑ 1992/albert → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -623,25 +623,25 @@ when compiled depending on the compiler.

Primary files

Secondary files

  • 1992_adrian.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -709,7 +709,7 @@ Jump to: top diff --git a/1992/albert/index.html b/1992/albert/index.html index 678d3a114..b681ef080 100644 --- a/1992/albert/index.html +++ b/1992/albert/index.html @@ -416,10 +416,10 @@ ← 1992/adrian ↑ 1992 ↑ 1992/ant → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -458,7 +458,7 @@ Location: NL - Kingdom of the Netherlan

Try:

    ./try.sh

Alternate code:

-

An alternate version of this entry, albert.alt.c, is provided. +

An alternate version of this entry, albert.alt.c, is provided. Leo Broukhis, before he was an IOCCC judge, sent the IOCCC judges this Email message:

@@ -474,8 +474,8 @@ in albert.orig.c that has been fixed in albert.c,

Both albert and albert.orig loop without printing anything, although the first factor is 101 and is usually found in an instant.

-

The albert.alt.c file is the fixed file, whereas the -albert.c is the file before applying Leo Broukhis’ fix.

+

The albert.alt.c file is the fixed file, whereas the +albert.c is the file before applying Leo Broukhis’ fix.

Alternate build:

To compile this alternate version:

    make alt
@@ -560,20 +560,20 @@ Observation: “if it ends in a zero, it is divisible by ten”.

Primary files

Secondary files

  • 1992_albert.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -641,7 +641,7 @@ Jump to: top diff --git a/1992/ant/index.html b/1992/ant/index.html index 55fd3312c..48b45d0f0 100644 --- a/1992/ant/index.html +++ b/1992/ant/index.html @@ -416,10 +416,10 @@ ← 1992/albert ↑ 1992 ↑ 1992/buzzard.1 → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -456,7 +456,7 @@ code below.

Try:

    ./try.sh

Alternate code:

-

This version, ant.alt.c, was provided by the +

This version, ant.alt.c, was provided by the author in 2024, and is an unobfuscated version.

Alternate build:

    make alt
@@ -497,24 +497,24 @@ P1003 subcommittee.

Primary files

Secondary files

  • 1992_ant.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -582,7 +582,7 @@ Jump to: top diff --git a/1992/buzzard.1/index.html b/1992/buzzard.1/index.html index fdecd922c..ca3c8aa45 100644 --- a/1992/buzzard.1/index.html +++ b/1992/buzzard.1/index.html @@ -416,10 +416,10 @@ ← 1992/ant ↑ 1992 ↑ 1992/buzzard.2 → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -650,18 +650,18 @@ dedicated to the memory of Charles Barrett.

Primary files

Secondary files


@@ -729,7 +729,7 @@ Jump to: top diff --git a/1992/buzzard.2/buzzard.2.README.html b/1992/buzzard.2/buzzard.2.README.html index 8ef544abd..9f9855d93 100644 --- a/1992/buzzard.2/buzzard.2.README.html +++ b/1992/buzzard.2/buzzard.2.README.html @@ -413,7 +413,7 @@ @@ -429,26 +429,26 @@

FIRST demos:

Use:

    ./first < demo_file
    -
  • demo1.1st - prints Hello World! assuming ASCII
  • +
  • demo1.1st - prints Hello World! assuming ASCII

THIRD demos:

Use:

    cat third demo_file | ./first

Demo files:

    -
  • demo1.th - prints Hello World! regardless of character set
  • -
  • demo2.th - demonstrates a simple loop
  • -
  • demo3.th - demonstrates a simple if test
  • -
  • demo4.th - recursive factorial calculating on the way up
  • -
  • demo5.th - recursive factorial calculating on the way down
  • -
  • demo6.th - demonstrates switching from compiler to execution mode
  • +
  • demo1.th - prints Hello World! regardless of character set
  • +
  • demo2.th - demonstrates a simple loop
  • +
  • demo3.th - demonstrates a simple if test
  • +
  • demo4.th - recursive factorial calculating on the way up
  • +
  • demo5.th - recursive factorial calculating on the way down
  • +
  • demo6.th - demonstrates switching from compiler to execution mode

Interactive THIRD:

Use:

@@ -530,7 +530,7 @@ diff --git a/1992/buzzard.2/buzzard.2.design.html b/1992/buzzard.2/buzzard.2.design.html index 098fc16d2..57f943af4 100644 --- a/1992/buzzard.2/buzzard.2.design.html +++ b/1992/buzzard.2/buzzard.2.design.html @@ -413,7 +413,7 @@ @@ -1195,7 +1195,7 @@ exit.

diff --git a/1992/buzzard.2/index.html b/1992/buzzard.2/index.html index a480d98aa..14b074bf8 100644 --- a/1992/buzzard.2/index.html +++ b/1992/buzzard.2/index.html @@ -416,10 +416,10 @@ ← 1992/buzzard.1 ↑ 1992 ↑ 1992/gson → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -468,7 +468,7 @@ should make first first :-) ):

Try:

    ./try.sh

Alternate code:

-

This alternate version, buzzard.2.alt.c, does not contain a +

This alternate version, buzzard.2.alt.c, does not contain a fix that the author notes in their remarks.

Alternate build:

    make alt
@@ -507,14 +507,14 @@ but gives no warning messages. A sample program, demo1.1st, is included, but it only works on ASCII systems.

Do not expect to be able to do anything interesting with first.

To do something interesting, you need to feed first the file -third first. In unix, you can do

+third first. In unix, you can do

    cat third help.th - | ./first

to do this. Hopefully most operating systems will provide a way to do this. It may take some time for this to complete (I seem to remember it taking several minutes on an 8086 PC); THIRD will prompt you when it is finished. The file -third has not been obfuscated, due to sheer kindness on the author’s +third has not been obfuscated, due to sheer kindness on the author’s part.

-

For more information on what you can do once you’ve piped third into +

For more information on what you can do once you’ve piped third into first, type help and consult FORTH manuals for further reference. Six sample THIRD programs are included in the files @@ -638,33 +638,33 @@ and thus indirectly inspiring me to write this program.

Primary files

Secondary files


@@ -732,7 +732,7 @@ Jump to: top diff --git a/1992/gson/index.html b/1992/gson/index.html index f100570da..9bacafb9d 100644 --- a/1992/gson/index.html +++ b/1992/gson/index.html @@ -416,10 +416,10 @@ ← 1992/buzzard.2 ↑ 1992 ↑ 1992/imc → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -459,11 +459,11 @@ some invocations to crash in some systems.

    ./ag word word2 word3 < dictionary | less

Try:

    ./try.sh
-

The script first will use the mkdict.sh script to create +

The script first will use the mkdict.sh script to create a dictionary file out of the files -README.md, -try.sh (itself) and -Makefile runs the program with a number of +README.md, +try.sh (itself) and +Makefile runs the program with a number of strings on that dictionary file.

Then the script will determine (or try and determine) where your system dictionary is located and assuming that it can find one it’ll use that. It @@ -482,7 +482,7 @@ output.

names listed above. Run this program to find the anagrams they weren’t allowed to print!

The author provided an obfuscated script that can be used to construct -dictionaries which has been put in as mkdict.sh. To use try:

+dictionaries which has been put in as mkdict.sh. To use try:

    cat README.md | ./mkdict.sh > words

Then try using the program as shown above with the file words.

Author’s remarks:

@@ -667,19 +667,19 @@ the word directly from standard input to standard output.

Primary files

Secondary files

  • 1992_gson.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -747,7 +747,7 @@ Jump to: top diff --git a/1992/imc/index.html b/1992/imc/index.html index 793fce8da..5eece2962 100644 --- a/1992/imc/index.html +++ b/1992/imc/index.html @@ -416,10 +416,10 @@ ← 1992/gson ↑ 1992 ↑ 1992/kivinen → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -461,7 +461,7 @@ output.

Of course, the source (layout) is self-documenting! :-)

NOTE: The original winning source assumed that exit(3) returned a value which cause problems for some systems where exit(3) returns a void. The file -imc.c has been modified to avoid this problem. The original file also +imc.c has been modified to avoid this problem. The original file also declared argc to be a long which was fixed.

Author’s remarks:

Portability

@@ -594,18 +594,18 @@ standard error to indicate its progress (one dot per pixel line).

Primary files

Secondary files

  • 1992_imc.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -673,7 +673,7 @@ Jump to: top diff --git a/1992/index.html b/1992/index.html index 22942c56b..a71a49520 100644 --- a/1992/index.html +++ b/1992/index.html @@ -416,7 +416,7 @@ ↑ top ↑ 1993 → Inventory - ✓ + ✓ @@ -605,7 +605,7 @@ Jump to: top diff --git a/1992/kivinen/index.html b/1992/kivinen/index.html index 95cee0f7b..5b2ec2d5e 100644 --- a/1992/kivinen/index.html +++ b/1992/kivinen/index.html @@ -416,10 +416,10 @@ ← 1992/imc ↑ 1992 ↑ 1992/lush → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -487,9 +487,9 @@ code.

you have with the program. :-)

NOTE: Some systems do not need (or have) -lsocket -lresolv -lnsl. Such systems should compile using -lX11.

-

NOTE: The original winning source kivinen.orig.c assumed that +

NOTE: The original winning source kivinen.orig.c assumed that exit(3) returned a value which cause problems for some systems where exit(3) returns -void. The file kivinen.c avoids this problem.

+void. The file kivinen.c avoids this problem.

Author’s remarks:

X Entertainment Kit

This kit includes three games from the early era of video games designed for @@ -568,18 +568,18 @@ event loop at the end of program. It is not a bug, it’s a feature!

Primary files

Secondary files

  • 1992_kivinen.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -647,7 +647,7 @@ Jump to: top diff --git a/1992/lush/index.html b/1992/lush/index.html index 69c3410ff..d17c789ed 100644 --- a/1992/lush/index.html +++ b/1992/lush/index.html @@ -416,10 +416,10 @@ ← 1992/kivinen ↑ 1992 ↑ 1992/marangon → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -487,18 +487,18 @@ generates when compiling the source.

Primary files

Secondary files

  • 1992_lush.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -566,7 +566,7 @@ Jump to: top diff --git a/1992/marangon/index.html b/1992/marangon/index.html index abdb964cb..80a611e34 100644 --- a/1992/marangon/index.html +++ b/1992/marangon/index.html @@ -416,10 +416,10 @@ ← 1992/lush ↑ 1992 ↑ 1992/nathan → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -455,9 +455,9 @@ are not careful, you may find things “at 6s and 7s

NOTE: Some compilers have had trouble optimizing this entry.

NOTE: Some systems need to compile with -ltermcap as well as -lcurses.

NOTE: The original winning source -marangon.orig.c assumed that +marangon.orig.c assumed that exit(3) returns a value which cause problems for some systems where exit(3) -returns a void. The file marangon.c +returns a void. The file marangon.c avoids this problem.

Author’s remarks:

It starts off by creating a table with the number 5 in all places. The CPU melts @@ -488,17 +488,17 @@ number, all the other eight numbers next to it decrease and vice-versa.

Primary files

Secondary files


@@ -566,7 +566,7 @@ Jump to: top diff --git a/1992/nathan/index.html b/1992/nathan/index.html index 85c562bf5..201840f01 100644 --- a/1992/nathan/index.html +++ b/1992/nathan/index.html @@ -416,10 +416,10 @@ ← 1992/marangon ↑ 1992 ↑ 1992/vern → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -497,7 +497,7 @@ read HIS instructions of how to obtain his winning program one was able to run:< ./nathan

to learn how to get a copy of the code.

When someone compiled and ran the code as originally distributed (see: -nathan.orig.c the code printed +nathan.orig.c the code printed the following message (sic):

Export of this program from the USA is governed by the US
@@ -514,7 +514,7 @@ A deamon will autoreply.
WARNING: You must not re-export this out of the USA, or else
the men in black might get you.

-

Today, the nathan.c source code +

Today, the nathan.c source code is the source code is what you would have received had you successfully completed the above instructions.

Today, the above instructions are no longer necessary. @@ -528,10 +528,10 @@ certain nations in apparent violation of US laws, but I personally can’t re-distribute a program contest entry to the network!

Updated personal note from chongo:

We removed the email address from the above quote (although you can still see it -in the nathan.orig.c and -nathan.alt.c code) because sending +in the nathan.orig.c and +nathan.alt.c code) because sending email to that address is not required today and it is unknown if it is still -valid. The nathan.c file now contains the +valid. The nathan.c file now contains the source you would have received in reply.

Thankfully much of the ridiculous US crypto regulations has been amended to the extent where the above historical “workaround” is @@ -597,19 +597,19 @@ operator, or argument separator?).

Primary files

Secondary files

  • 1992_nathan.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -677,7 +677,7 @@ Jump to: top diff --git a/1992/vern/index.html b/1992/vern/index.html index 06ab224e9..fa277c7d8 100644 --- a/1992/vern/index.html +++ b/1992/vern/index.html @@ -416,10 +416,10 @@ ← 1992/nathan ↑ 1992 ↑ 1992/westley → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -590,17 +590,17 @@ nearest multiple of 4, and then the other constants are derived fro

Primary files

Secondary files

  • 1992_vern.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -668,7 +668,7 @@ Jump to: top diff --git a/1992/westley/index.html b/1992/westley/index.html index 43d0dbc32..748a04705 100644 --- a/1992/westley/index.html +++ b/1992/westley/index.html @@ -416,10 +416,10 @@ ← 1992/vern ↑ 1992 ↑ 1993/ant → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -473,7 +473,7 @@ like:

[A M E R I C A]…

That version, which will not compile with clang, is the second alternate -version, westley.alt2.c.

+version, westley.alt2.c.

Alternate build:

    make alt

If you have gcc you can also compile the second alternate version, though it @@ -488,7 +488,7 @@ with wider terminals. To compile the second alternate version:

NOTE: this alternative version also needs a terminal with at least 80 columns.

Alternate try:

-

The try.sh script uses both the original +

The try.sh script uses both the original entry and the alternate code so one can try the same script for both:

    ./try.sh

Judges’ remarks:

@@ -605,23 +605,23 @@ joined together as one 160-character line and listed. You should see:

Primary files

Secondary files

  • 1992_westley.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -689,7 +689,7 @@ Jump to: top diff --git a/1993/ant/index.html b/1993/ant/index.html index e25f8a9ae..6d2f5b1d9 100644 --- a/1993/ant/index.html +++ b/1993/ant/index.html @@ -416,10 +416,10 @@ ← 1992/westley ↑ 1993 ↑ 1993/cmills → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -459,7 +459,7 @@ code below.

Try:

    ./try.sh

Alternate code:

-

The ant.alt.c is an +

The ant.alt.c is an unobfuscated version provided by the author. You can look at this code if you want some clues in how it works.

Alternate build:

@@ -511,25 +511,25 @@ more information.

Primary files

Secondary files

  • 1993_ant.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -597,7 +597,7 @@ Jump to: top diff --git a/1993/cmills/index.html b/1993/cmills/index.html index b4d2e325b..10defafab 100644 --- a/1993/cmills/index.html +++ b/1993/cmills/index.html @@ -416,10 +416,10 @@ ← 1993/ant ↑ 1993 ↑ 1993/dgibson → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -532,18 +532,18 @@ which in turn is based on it’s area and speed. How silly!

Primary files

Secondary files

  • 1993_cmills.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -611,7 +611,7 @@ Jump to: top diff --git a/1993/dgibson/index.html b/1993/dgibson/index.html index 8e68896c2..85a1d442d 100644 --- a/1993/dgibson/index.html +++ b/1993/dgibson/index.html @@ -416,10 +416,10 @@ ← 1993/cmills ↑ 1993 ↑ 1993/ejb → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -450,24 +450,24 @@ Location: ZA - Republic of South Africa
    ./dgibson.sh [datafile]

where:

datafile is the initial pattern (default is the -dgibson.data1 file).

+dgibson.data1 file).

Try:

    ./try.sh

Judges’ remarks:

-

We have provided the shell script dgibson.sh to make it easier +

We have provided the shell script dgibson.sh to make it easier to run this entry. Run this shell script several times to see what happens.

There are a number of data files available:

-

For dgibson.data5 you will need a large screen, lots of virtual -memory and lots of time! The try.sh script will run -dgibson.sh on all the data files.

+

For dgibson.data5 you will need a large screen, lots of virtual +memory and lots of time! The try.sh script will run +dgibson.sh on all the data files.

Good luck trying to use a debugger on this entry! Life is not always pretty.

Author’s remarks:

@@ -516,24 +516,24 @@ necessary to recurse main() in two “directions” simultaneously.

Primary files

Secondary files

  • 1993_dgibson.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -601,7 +601,7 @@ Jump to: top diff --git a/1993/ejb/hanoi.html b/1993/ejb/hanoi.html index 936253ae8..6da33820e 100644 --- a/1993/ejb/hanoi.html +++ b/1993/ejb/hanoi.html @@ -413,7 +413,7 @@ @@ -510,7 +510,7 @@ exponential in the number rings.

diff --git a/1993/ejb/index.html b/1993/ejb/index.html index 6b6b0b599..622dee16e 100644 --- a/1993/ejb/index.html +++ b/1993/ejb/index.html @@ -416,10 +416,10 @@ ← 1993/dgibson ↑ 1993 ↑ 1993/jonth → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -523,22 +523,22 @@ compiler since it uses signed char and ANSI-style function declarat

Primary files

Secondary files

  • 1993_ejb.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • hanoi.md - markdown source for hanoi.html
  • -
  • .path - directory path from top level directory
  • -
  • patience.md - markdown source for patience.html
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • hanoi.md - markdown source for hanoi.html
  • +
  • .path - directory path from top level directory
  • +
  • patience.md - markdown source for patience.html
  • index.html - this web page

@@ -606,7 +606,7 @@ Jump to: top diff --git a/1993/ejb/patience.html b/1993/ejb/patience.html index c1fdec777..d0f7db074 100644 --- a/1993/ejb/patience.html +++ b/1993/ejb/patience.html @@ -413,7 +413,7 @@ @@ -633,7 +633,7 @@ exponential in the number of rings.

diff --git a/1993/index.html b/1993/index.html index d87123e0e..0f9346167 100644 --- a/1993/index.html +++ b/1993/index.html @@ -416,7 +416,7 @@ ↑ top ↑ 1994 → Inventory - ✓ + ✓ @@ -576,7 +576,7 @@ Jump to: top diff --git a/1993/jonth/index.html b/1993/jonth/index.html index 57a24f660..40749626a 100644 --- a/1993/jonth/index.html +++ b/1993/jonth/index.html @@ -416,10 +416,10 @@ ← 1993/ejb ↑ 1993 ↑ 1993/leo → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -487,17 +487,17 @@ This program will not work on machines where sizeof(int)!=sizeof(void *)

Primary files

Secondary files

  • 1993_jonth.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -565,7 +565,7 @@ Jump to: top diff --git a/1993/leo/index.html b/1993/leo/index.html index 90fc423ec..3c4d61095 100644 --- a/1993/leo/index.html +++ b/1993/leo/index.html @@ -416,10 +416,10 @@ ← 1993/jonth ↑ 1993 ↑ 1993/lmfjyh → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -534,17 +534,17 @@ backspaces. Do “disable scrolling” on cmdtool or similar emulators.

Primary files

Secondary files

  • 1993_leo.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -612,7 +612,7 @@ Jump to: top diff --git a/1993/lmfjyh/index.html b/1993/lmfjyh/index.html index 781e4ca8a..505db7736 100644 --- a/1993/lmfjyh/index.html +++ b/1993/lmfjyh/index.html @@ -416,10 +416,10 @@ ← 1993/leo ↑ 1993 ↑ 1993/plummer → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -605,18 +605,18 @@ be new standard.

Primary files

Secondary files

  • 1993_lmfjyh.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -684,7 +684,7 @@ Jump to: top diff --git a/1993/plummer/index.html b/1993/plummer/index.html index 2b0fe3568..5fb874806 100644 --- a/1993/plummer/index.html +++ b/1993/plummer/index.html @@ -416,10 +416,10 @@ ← 1993/lmfjyh ↑ 1993 ↑ 1993/rince → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -584,20 +584,20 @@ successively larger number to the end of a string.

Primary files

Secondary files

  • 1993_plummer.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -665,7 +665,7 @@ Jump to: top diff --git a/1993/rince/design.html b/1993/rince/design.html index 4a838ad40..6bbe9b2d0 100644 --- a/1993/rince/design.html +++ b/1993/rince/design.html @@ -413,7 +413,7 @@ @@ -563,7 +563,7 @@ of map, and hence should also be one larger than expected.

diff --git a/1993/rince/index.html b/1993/rince/index.html index 9c801b0c6..061ae12d2 100644 --- a/1993/rince/index.html +++ b/1993/rince/index.html @@ -416,10 +416,10 @@ ← 1993/plummer ↑ 1993 ↑ 1993/schnitzi → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -466,7 +466,7 @@ value 17 in the lines:

and

    refresh(),c=select(k,&y,0,0,(v.tv_usec=1<<17,&v))?getch():0;

to another value like 18 or 19 which you can do with the alternate code.

-

In the case of rince.alt2.c the movement keys for the default +

In the case of rince.alt2.c the movement keys for the default game are slightly different and will feel more familiar to vi users: h for left, l for right (that was not changed) and k for fire (that was also not changed).

@@ -478,17 +478,17 @@ changed).

Judges’ remarks:

The author has provided several CABBAGE files for your amusement:

For a brief design description, see design.html.

@@ -602,25 +602,25 @@ mechanism other than control-c.

Primary files

Secondary files

  • 1993_rince.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • design.md - markdown source for design.html
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • design.md - markdown source for design.html
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -688,7 +688,7 @@ Jump to: top diff --git a/1993/schnitzi/index.html b/1993/schnitzi/index.html index c1e01116e..94026fa30 100644 --- a/1993/schnitzi/index.html +++ b/1993/schnitzi/index.html @@ -416,10 +416,10 @@ ← 1993/rince ↑ 1993 ↑ 1993/vanb → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -476,7 +476,7 @@ intentional spelling error there.

After this program prints the contents of ‘file’, ask it some questions related to the text.

The author suggests the following questions when using -schnitzi.info:

+schnitzi.info:

@@ -673,7 +673,7 @@ not. diff --git a/1998/dorssel/index.html b/1998/dorssel/index.html index dbc81efc6..e84e163b7 100644 --- a/1998/dorssel/index.html +++ b/1998/dorssel/index.html @@ -416,10 +416,10 @@ ← 1998/dloweneil ↑ 1998 ↑ 1998/fanf → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -468,7 +468,7 @@ what values may they be changed without altering the behavior?

altering the behavior ?

Extra credit:

-

Try doing what the last part of the last command in try.sh suggests. +

Try doing what the last part of the last command in try.sh suggests. As in, do the following:

    echo ". -..- . .-. -.-. .. ... .
     -.-. .... .- -. --. .  - .... .  .--. .-. --- --. .-. .- --  ... ---  .. -  -.. --- . ...  -. --- -  ... .... --- ..- -" | ./dorssel
@@ -542,20 +542,20 @@ understand this program.

Primary files

Secondary files


@@ -623,7 +623,7 @@ Jump to: top diff --git a/1998/fanf/index.html b/1998/fanf/index.html index b45d45e33..438924805 100644 --- a/1998/fanf/index.html +++ b/1998/fanf/index.html @@ -416,10 +416,10 @@ ← 1998/dorssel ↑ 1998 ↑ 1998/schnitzi → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -455,7 +455,7 @@ this entry because of the system resources it requires.

    ./try.sh

Judges’ remarks:

Historical aside:

-

At a time the code in fanf.c was that of fanf.orig.c +

At a time the code in fanf.c was that of fanf.orig.c but to get this to compile in modern systems it had to be translated to what you now see. The intermediate steps can still be performed but they might be different from the past. This should be kept in mind as you read the below @@ -463,9 +463,9 @@ remarks.

This program translates lambda expressions into combinator expressions. But you do not need to know Lambda Calculus to be impressed by this program!

-

See the file fanf.lambda for more examples of lambda calculus +

See the file fanf.lambda for more examples of lambda calculus source.

-

Notice how large the code grows from the fanf.c into the final +

Notice how large the code grows from the fanf.c into the final fanftmp2.c C program. Take a look at that final C program again, can you begin to understand what it is doing?

Look at the first stage of the C pre-processing which was done like:

@@ -752,19 +752,19 @@ International Logic Programming Symposium, 1995.

Primary files

Secondary files

  • 1998_fanf.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -832,7 +832,7 @@ Jump to: top diff --git a/1998/index.html b/1998/index.html index f16a8c0fc..ed86f8cd2 100644 --- a/1998/index.html +++ b/1998/index.html @@ -416,7 +416,7 @@ ↑ top ↑ 2000 → Inventory - ✓ + ✓ @@ -626,7 +626,7 @@ Jump to: top diff --git a/1998/schnitzi/index.html b/1998/schnitzi/index.html index a8f40fe42..770156471 100644 --- a/1998/schnitzi/index.html +++ b/1998/schnitzi/index.html @@ -416,10 +416,10 @@ ← 1998/fanf ↑ 1998 ↑ 1998/schweikh1 → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -497,7 +497,7 @@ word contains 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 file). If you have to ask +1988/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 committee some new practical simplifications for the C language. For instance, @@ -557,18 +557,18 @@ other functions all the time. Or, almost all the time.

Primary files

Secondary files


@@ -636,7 +636,7 @@ Jump to: top diff --git a/1998/schweikh1/index.html b/1998/schweikh1/index.html index 82121757d..019132d9d 100644 --- a/1998/schweikh1/index.html +++ b/1998/schweikh1/index.html @@ -416,10 +416,10 @@ ← 1998/schnitzi ↑ 1998 ↑ 1998/schweikh2 → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -509,7 +509,7 @@ itself. Just load it in your favorite editor.

Requirements

gcc (the GNU C compiler) must be available at runtime. It is assumed that your C implementation keeps headers as files in the /usr/include directory. The -info file must be readable and reside in the +info file must be readable and reside in the current working directory. The current working directory must be writable in order to create a temporary file (which is removed upon program termination). In case you don’t have gcc at runtime, not all is lost if your compiler or @@ -614,7 +614,7 @@ something new – after 14 years of IOCCC. Be sure to have enough paper in your printer when you make a hard copy of the source…

While I’m at it, the rules state that only space, tab and newline are ignored for the count (plus ‘{’, ‘}’, ‘;’ followed by -whitespace). The mkentry.c program, however, uses isspace(3) which +whitespace). The mkentry.c program, however, uses isspace(3) which returns nonzero for \v and \f and other characters as well. I could have used a lot more ^K and ^L probably undetected by your counter but decided to err on the side of safety. I use a perl @@ -663,22 +663,22 @@ That describes exactly my modest attempts…

Primary files

Secondary files


@@ -746,7 +746,7 @@ Jump to: top diff --git a/1998/schweikh1/macos.html b/1998/schweikh1/macos.html index 5ba69b3fd..a171b123d 100644 --- a/1998/schweikh1/macos.html +++ b/1998/schweikh1/macos.html @@ -413,7 +413,7 @@ @@ -455,10 +455,10 @@ the entry, the alternate version has also removed this limitation despite existing (though it’s clang) in macOS; instead it is cc.

How this entry works (the magic):

Now as far as how this works if you look at the code of -schweikh1.c, on line +schweikh1.c, on line 55 you’ll see a funny command -(this goes for the alternate -version, also on line +(this goes for the alternate +version, also on line 55, but the command is necessarily different).

Now the key is two magic numbers, one (two times) on a different line shortly below the @@ -559,7 +559,7 @@ can be found in the alternate code and the explanation is the same.

diff --git a/1998/schweikh2/index.html b/1998/schweikh2/index.html index c73e422ae..7b34cde22 100644 --- a/1998/schweikh2/index.html +++ b/1998/schweikh2/index.html @@ -416,10 +416,10 @@ ← 1998/schweikh1 ↑ 1998 ↑ 1998/schweikh3 → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -622,18 +622,18 @@ Type yarng and watch Him roll.

Primary files

Secondary files


@@ -701,7 +701,7 @@ Jump to: top diff --git a/1998/schweikh3/index.html b/1998/schweikh3/index.html index fc753908c..c30a4b9a4 100644 --- a/1998/schweikh3/index.html +++ b/1998/schweikh3/index.html @@ -416,10 +416,10 @@ ← 1998/schweikh2 ↑ 1998 ↑ 1998/tomtorfs → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -449,7 +449,7 @@ Location: DE - Federal Republic of Germ

The author stated:

In the remote event that the input has more than 8192 files with the same -size (on systems where sizeof (char *) == 4, or 4096 when sizeof (char *) == 8), increase the manifest constant 32767 on line +size (on systems where sizeof (char *) == 4, or 4096 when sizeof (char *) == 8), increase the manifest constant 32767 on line 31.

An alternate version allows one to fix this; see Alternate @@ -485,7 +485,7 @@ the tool as well at h Thank God the IEEE does not standardize a coding style…

What this program does

This is best explained in the man page. The troff source for this man page can -be found in the file samefile.1. To +be found in the file samefile.1. To render try:

    `man ./samefile.1

Otherwise:

@@ -628,21 +628,21 @@ the same size (on systems where sizeof (char *) == 4, or 4096

Primary files

Secondary files


@@ -710,7 +710,7 @@ Jump to: top diff --git a/1998/tomtorfs/index.html b/1998/tomtorfs/index.html index c91581510..6f1648095 100644 --- a/1998/tomtorfs/index.html +++ b/1998/tomtorfs/index.html @@ -416,10 +416,10 @@ ← 1998/schweikh3 ↑ 1998 ↑ 2000/anderson → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -628,19 +628,19 @@ for writing this. You can find it in crc.txt.

Primary files

Secondary files


@@ -708,7 +708,7 @@ Jump to: top diff --git a/2000/anderson/index.html b/2000/anderson/index.html index 9ab693f06..691c25553 100644 --- a/2000/anderson/index.html +++ b/2000/anderson/index.html @@ -416,10 +416,10 @@ ← 1998/tomtorfs ↑ 2000 ↑ 2000/bellard → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -531,18 +531,18 @@ source file.

Primary files

Secondary files


@@ -610,7 +610,7 @@ Jump to: top diff --git a/2000/bellard/index.html b/2000/bellard/index.html index ac3502784..bb190ac9a 100644 --- a/2000/bellard/index.html +++ b/2000/bellard/index.html @@ -416,10 +416,10 @@ ← 2000/anderson ↑ 2000 ↑ 2000/bmeyer → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -487,17 +487,17 @@ system with a gcc compiler.

Primary files

Secondary files

  • 2000_bellard.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -565,7 +565,7 @@ Jump to: top diff --git a/2000/bmeyer/index.html b/2000/bmeyer/index.html index 4a5c7a451..d4a8ef1f3 100644 --- a/2000/bmeyer/index.html +++ b/2000/bmeyer/index.html @@ -416,10 +416,10 @@ ← 2000/bellard ↑ 2000 ↑ 2000/briddlebane → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -476,7 +476,7 @@ chance to produce portable files, but due to the resulting double-rounding (first internally set to 80 bit, then to 64 bit on writing the value to memory), there is a small but very real chance any given file produced might not be portable.

-

The Makefile defaults to -O3 and no asm() call.

+

The Makefile defaults to -O3 and no asm() call.

Author’s remarks:

This program is called GLICBAWLS

Function

@@ -721,21 +721,21 @@ guarantee decoding within the requested maximum error.Primary files

Secondary files

  • 2000_bmeyer.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -803,7 +803,7 @@ Jump to: top diff --git a/2000/briddlebane/index.html b/2000/briddlebane/index.html index ebecc3abb..a71eba9ac 100644 --- a/2000/briddlebane/index.html +++ b/2000/briddlebane/index.html @@ -416,10 +416,10 @@ ← 2000/bmeyer ↑ 2000 ↑ 2000/dhyang → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -509,18 +509,18 @@ it. One of the real mysteries involves the numbers 114 and

Primary files

Secondary files


@@ -588,7 +588,7 @@ Jump to: top diff --git a/2000/dhyang/index.html b/2000/dhyang/index.html index 1a9eb1097..d0a24f623 100644 --- a/2000/dhyang/index.html +++ b/2000/dhyang/index.html @@ -416,10 +416,10 @@ ← 2000/briddlebane ↑ 2000 ↑ 2000/dlowe → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -463,18 +463,18 @@ program that generates a set of mutually reproducing programs, all of them with cool layout!

For your enjoyment:

    -
  1. Compile dhyang.c.
  2. +
  3. Compile dhyang.c.
  4. Run ./dhyang and redirect output to another .c file.
  5. Compile that file.
  6. Repeat steps 2 and 3 until eventually the output cycles.
-

To interpret the output: the dhyang.c is an image of Saitou +

To interpret the output: the dhyang.c is an image of Saitou Hajime, which eventually generates three sources files that are images of “aku soku zan” (sin swift slay), Saitou’s motto ;)

For best viewing, set tab spaces to 8 characters, and set your terminal fonts to as close to square as possible. I hate to do this but you know, size…

-

dhyang.c and all its output compiles with gcc if your OS uses ASCII +

dhyang.c and all its output compiles with gcc if your OS uses ASCII character set. No file is included and all functions assume default int return type (a source of compile warnings).

@@ -723,18 +723,18 @@ DEC Tru64 5.0+, again according to the Perl people.

Primary files

Secondary files

  • 2000_dlowe.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -802,7 +802,7 @@ Jump to: top diff --git a/2000/index.html b/2000/index.html index 76ffc8a79..ae1b5f568 100644 --- a/2000/index.html +++ b/2000/index.html @@ -416,7 +416,7 @@ ↑ top ↑ 2001 → Inventory - ✓ + ✓ @@ -595,7 +595,7 @@ Jump to: top diff --git a/2000/jarijyrki/index.html b/2000/jarijyrki/index.html index 05f9b362d..ef60c98fc 100644 --- a/2000/jarijyrki/index.html +++ b/2000/jarijyrki/index.html @@ -416,10 +416,10 @@ ← 2000/dlowe ↑ 2000 ↑ 2000/natori → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -725,18 +725,18 @@ currently.

Primary files

Secondary files


@@ -804,7 +804,7 @@ Jump to: top diff --git a/2000/natori/index.html b/2000/natori/index.html index 0c319fdf5..c9ff3fb20 100644 --- a/2000/natori/index.html +++ b/2000/natori/index.html @@ -416,10 +416,10 @@ ← 2000/jarijyrki ↑ 2000 ↑ 2000/primenum → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -475,7 +475,7 @@ differences?

versions? Or are there any?

Alternate try:

    ./try.alt.sh
-

Like with try.sh, try using this multiple times in a row or throughout +

Like with try.sh, try using this multiple times in a row or throughout the day on different days (if different phases of the Moon you’ll see more of a difference, of course).

NOTE: if it’s a Full Moon the script won’t look as nice.

@@ -518,20 +518,20 @@ into acos(-l/2).

Primary files

Secondary files

  • 2000_natori.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -599,7 +599,7 @@ Jump to: top diff --git a/2000/primenum/index.html b/2000/primenum/index.html index 1cb48003c..1da1129c7 100644 --- a/2000/primenum/index.html +++ b/2000/primenum/index.html @@ -416,10 +416,10 @@ ← 2000/natori ↑ 2000 ↑ 2000/rince → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -538,18 +538,18 @@ number front. But ye be warned: “not a11 variab1es1es are identica1” :-)

Primary files

Secondary files


@@ -617,7 +617,7 @@ Jump to: top diff --git a/2000/rince/index.html b/2000/rince/index.html index c188d2481..98a574d87 100644 --- a/2000/rince/index.html +++ b/2000/rince/index.html @@ -416,10 +416,10 @@ ← 2000/primenum ↑ 2000 ↑ 2000/robison → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -489,7 +489,7 @@ Julian day number (given as a fractional component). E.g.:

A Julian day is defined to be the number of days since January 1st in the year -4712 (4713BC), starting at 12 noon GMT.12 To aid conversion from our time (GMT) to Julian day there is a supplementary program named: -dmy2jd.c. Run it with day_float month year as arguments. See below +dmy2jd.c. Run it with day_float month year as arguments. See below for an example.

What it does

This program plots the positions of the four Galilean @@ -732,19 +732,19 @@ Jean Meeus. Published by Willmann-Bell Inc.Primary files

Secondary files

  • 2000_rince.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -812,7 +812,7 @@ Jump to: top diff --git a/2000/robison/index.html b/2000/robison/index.html index 02354d683..80ca0f1e0 100644 --- a/2000/robison/index.html +++ b/2000/robison/index.html @@ -416,10 +416,10 @@ ← 2000/rince ↑ 2000 ↑ 2000/schneiderwent → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -593,17 +593,17 @@ them, in lg(N) time, depending upon a parameter.

Primary files

Secondary files

  • 2000_robison.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -671,7 +671,7 @@ Jump to: top diff --git a/2000/schneiderwent/index.html b/2000/schneiderwent/index.html index 8311b53a5..e7f4b73e4 100644 --- a/2000/schneiderwent/index.html +++ b/2000/schneiderwent/index.html @@ -416,10 +416,10 @@ ← 2000/robison ↑ 2000 ↑ 2000/thadgavin → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -475,7 +475,7 @@ keeping the program portable between different encodings

FWIW, none of the compilers with which this entry was tested issued any warnings or errors in compiling the source for this entry. No doubt lint will complain about the goto statements.

-

The schneiderwent.data file consists of the values used by +

The schneiderwent.data file consists of the values used by multiple table lookups. This is simply good program design, separating these values from the source code allows changing the behavior of the application without recompiling.

@@ -530,19 +530,19 @@ in a normal 3270 environment.

Primary files

Secondary files


@@ -610,7 +610,7 @@ Jump to: top diff --git a/2000/thadgavin/index.html b/2000/thadgavin/index.html index 15965bc04..8f5b3b37a 100644 --- a/2000/thadgavin/index.html +++ b/2000/thadgavin/index.html @@ -416,10 +416,10 @@ ← 2000/schneiderwent ↑ 2000 ↑ 2000/tomx → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -549,18 +549,18 @@ less than dazzling. We could not test this entry in DOS mode.

Primary files

Secondary files


@@ -628,7 +628,7 @@ Jump to: top diff --git a/2000/tomx/index.html b/2000/tomx/index.html index 5e79dc4a3..27a137c63 100644 --- a/2000/tomx/index.html +++ b/2000/tomx/index.html @@ -416,10 +416,10 @@ ← 2000/thadgavin ↑ 2000 ↑ 2001/anonymous → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -446,7 +446,7 @@ Location: NL - Kingdom of the Netherlan

To build:

    make
-

There is an alternate version that compiles mkentry.c. See +

There is an alternate version that compiles mkentry.c. See Alternate code.

To use:

    ./tomx
@@ -454,8 +454,8 @@ Location: NL - Kingdom of the Netherlan
    ./try.sh

Alternate code:

This alternate code is based on the author’s remarks with a slight fix so that -it will do what it once did, compile and run mkentry.c. You can use -it in a similar way as tomx.c, both executing the source file and +it will do what it once did, compile and run mkentry.c. You can use +it in a similar way as tomx.c, both executing the source file and using it as a Makefile and running the code ends up running mkentry.

Alternate build:

    make alt
@@ -502,7 +502,7 @@ like a C program.

program that it is. It is possible to do #include "prog2.c" in the place of the main(), leaving the complexities of the C file elsewhere and making this source still acceptable to make and sh. The following modification to the -last few lines will compile the IOCCC’s famous mkentry.c. +last few lines will compile the IOCCC’s famous mkentry.c.
    .PHONY: /* true clean */
     #undef   true
@@ -548,21 +548,21 @@ or converting tabs to spaces can be disastrous.

Primary files

Secondary files

  • 2000_tomx.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -630,7 +630,7 @@ Jump to: top diff --git a/2001/anonymous/index.html b/2001/anonymous/index.html index 112f91441..de1acc280 100644 --- a/2001/anonymous/index.html +++ b/2001/anonymous/index.html @@ -416,10 +416,10 @@ ← 2000/tomx ↑ 2001 ↑ 2001/bellard → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -447,7 +447,7 @@ Location: GB - United Kingdom of Great

To build:

    make

The programs that this program is supposed to act on, -anonymous.ten.c and anonymous.bed.c, +anonymous.ten.c and anonymous.bed.c, compiled with make, MUST be compiled as 32-bit ELF binaries. In the case that this fails these programs will be compiled as 64-bit binaries as alternate code, anonymous.ten.alt and anonymous.bed.alt, ELF or otherwise. However trying to @@ -467,11 +467,11 @@ whatever your system will compile them as).

./anonymous anonymous.bed # if able to compile as a 32-bit (-m32) ELF binary

NOTE: if the 32-bit version cannot be compiled the script will at least compile -anonymous.ten as a 64-bit program (or whatever your system is +anonymous.ten as a 64-bit program (or whatever your system is set to) and run it directly.

What happens if the x86 program has already been modified by this program? The judges’ remarks below might give you a hint!

-

What happens if you try it on another file like anonymous.c? Can +

What happens if you try it on another file like anonymous.c? Can you recompile it okay? What if you run it on anonymous itself? Can you run the program successfully after it without recompiling?

Alternate code:

@@ -505,7 +505,7 @@ quite a lot of bit twiddling.

run x86 programs on any machine (x86 or otherwise).

I have included a simple 10 Green Bottles -program (try make anonymous.ten), meant to be compiled as a +program (try make anonymous.ten), meant to be compiled as a 32-bit ELF binary.

The program anonymous.ten, and its source (dull) are included as data files.

@@ -522,7 +522,7 @@ 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 duration that the program is running, so as a program runs its performance will improve, as it hits cached blocks. This can be clearly observed in the example -program, anonymous.ten which must be compiled as a 32-bit ELF +program, anonymous.ten which must be compiled as a 32-bit ELF binary.

Target Library Linking:

The program runs dynamically @@ -589,7 +589,7 @@ 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 turn up - yes the program is unsafe, but it’s pretty cool anyway.

Despite all this, the translator is not exclusively limited to running the -anonymous.ten program. Other trivial x86 programs may +anonymous.ten program. Other trivial x86 programs may run on the translator - and I have successfully run a wide range of “Hello World” programs, including one of last year’s IOCCC entries, 2000/tomx.

@@ -629,20 +629,20 @@ just C programs that generate C code as their output.

Primary files

Secondary files


@@ -710,7 +710,7 @@ Jump to: top diff --git a/2001/bellard/index.html b/2001/bellard/index.html index 54d463145..1b663e946 100644 --- a/2001/bellard/index.html +++ b/2001/bellard/index.html @@ -416,10 +416,10 @@ ← 2001/anonymous ↑ 2001 ↑ 2001/cheong → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -469,7 +469,7 @@ program.

    ./bellard bellard.c [args]...

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.

+bellard.c.

Examples:

-

Judges’ note: this was added as aidan.alt.c.

+

Judges’ note: this was added as aidan.alt.c.

That isn’t the approach I’ve used; it’s slow (particularly in worst-case or nearly so scenarios), inelegant, and not a good starting point for sudoku generation. It’s also much too easy to understand ;-) Instead, I’ve written a @@ -554,7 +554,7 @@ program generated):

3 . . | . . . | . . . . . . | . . . | . 6 1

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, +brute-force program given above, sudoku-bfi.c, 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!)

Usage

@@ -574,7 +574,7 @@ really.

represented as a full stop (.) or zero (0). Other characters are ignored, so you can cut-and-paste either example sudoku puzzle from above into a file and feed that in. The program has coped with every input I’ve thrown at it so far, including -an empty grid.

+an empty grid.

Output consists of the problem, then the solution, then a message of success/failure.

./aidan U may also be useful, or perhaps not. It only took @@ -684,29 +684,29 @@ that way somehow…

Primary files

Secondary files

  • 2005_aidan.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -774,7 +774,7 @@ Jump to: top diff --git a/2005/anon/index.html b/2005/anon/index.html index ee7f4f0bf..d8e54ab87 100644 --- a/2005/anon/index.html +++ b/2005/anon/index.html @@ -416,10 +416,10 @@ ← 2005/aidan ↑ 2005 ↑ 2005/boutines → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -450,7 +450,7 @@ Location: ZZ - Unknown location below. If your terminal has problems with the stty(1) commands try:

    make anon-no_stty
-

This will compile anon.c as anon to not use +

This will compile anon.c as anon to not use stty(1), with the support of an #ifdef..#endif added by the author.

Bugs and (Mis)features:

The current status of this entry is:

@@ -1006,18 +1006,18 @@ to hold both ints and pointers. :-)

Primary files

Secondary files

  • 2005_anon.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -1085,7 +1085,7 @@ Jump to: top diff --git a/2005/boutines/index.html b/2005/boutines/index.html index b8c2b4862..eaccb485a 100644 --- a/2005/boutines/index.html +++ b/2005/boutines/index.html @@ -416,10 +416,10 @@ ← 2005/anon ↑ 2005 ↑ 2005/chia → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -456,7 +456,7 @@ should you need more help.

    ./boutines < input > output.svg

Try:

    ./try.sh
-

If ruby is installed try.sh will generate an SVG file by:

+

If ruby is installed try.sh will generate an SVG file by:

    ruby -e '20.times{puts "#{rand} #{rand}"}' | ./boutines > test.svg

It will also create an SVG file with the file input.txt.

The script will check if convert is available and if so it will try converting @@ -586,21 +586,21 @@ Manual.

Primary files

Secondary files


@@ -668,7 +668,7 @@ Jump to: top diff --git a/2005/chia/index.html b/2005/chia/index.html index 6e6ef9191..be6125f4d 100644 --- a/2005/chia/index.html +++ b/2005/chia/index.html @@ -416,10 +416,10 @@ ← 2005/boutines ↑ 2005 ↑ 2005/giljade → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -504,17 +504,17 @@ when they see macro parameters that don’t look like C tokens.

Primary files

Secondary files

  • 2005_chia.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -582,7 +582,7 @@ Jump to: top diff --git a/2005/giljade/index.html b/2005/giljade/index.html index 85b3e2201..6052cf69e 100644 --- a/2005/giljade/index.html +++ b/2005/giljade/index.html @@ -416,10 +416,10 @@ ← 2005/chia ↑ 2005 ↑ 2005/jetro → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -461,7 +461,7 @@ will not work with it enabled.

Self-test feature to try:

    ./giljade > out
     ./giljade out
-

NOTE: try.sh will ask you if you wish to do this.

+

NOTE: try.sh will ask you if you wish to do this.

Judges’ remarks:

This entry takes editorial in how it deals with its output. After using vi(1) (or vim(1)) to look at the source, use vi(1) (or vim(1)) to look at its @@ -590,19 +590,19 @@ tricky.

Primary files

Secondary files

  • 2005_giljade.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -670,7 +670,7 @@ Jump to: top diff --git a/2005/index.html b/2005/index.html index e24eff36f..30e7d3aad 100644 --- a/2005/index.html +++ b/2005/index.html @@ -416,7 +416,7 @@ ↑ top ↑ 2006 → Inventory - ✓ + ✓ @@ -599,7 +599,7 @@ Jump to: top diff --git a/2005/jetro/index.html b/2005/jetro/index.html index eb8df94a2..447ded43c 100644 --- a/2005/jetro/index.html +++ b/2005/jetro/index.html @@ -416,10 +416,10 @@ ← 2005/giljade ↑ 2005 ↑ 2005/klausler → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -490,17 +490,17 @@ with one call to getchar() before it quits.

Primary files

Secondary files

  • 2005_jetro.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -568,7 +568,7 @@ Jump to: top diff --git a/2005/klausler/index.html b/2005/klausler/index.html index 8619ae35c..56a11a824 100644 --- a/2005/klausler/index.html +++ b/2005/klausler/index.html @@ -416,10 +416,10 @@ ← 2005/jetro ↑ 2005 ↑ 2005/mikeash → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -507,18 +507,18 @@ recursion, or other tricks. Enjoy!

Primary files

Secondary files


@@ -586,7 +586,7 @@ Jump to: top diff --git a/2005/mikeash/index.html b/2005/mikeash/index.html index d0d1dcd6a..bcd6d36f9 100644 --- a/2005/mikeash/index.html +++ b/2005/mikeash/index.html @@ -416,10 +416,10 @@ ← 2005/klausler ↑ 2005 ↑ 2005/mynx → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -531,7 +531,7 @@ for running itself. To do the latter, try this:

lisp. To do this, run the common lisp compiler and then type the following command:

    (load "mikeash.c")
-

The source code of mikeash.c will be printed.

+

The source code of mikeash.c will be printed.

Obfuscation

Lispob is obfuscated in several ways. First, it’s actually two programs in one, which actually share a small amount of code. Running a C code @@ -573,18 +573,18 @@ C library.

Primary files

Secondary files

  • 2005_mikeash.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -652,7 +652,7 @@ Jump to: top diff --git a/2005/mynx/index.html b/2005/mynx/index.html index 74eb74084..38b489992 100644 --- a/2005/mynx/index.html +++ b/2005/mynx/index.html @@ -416,10 +416,10 @@ ← 2005/mikeash ↑ 2005 ↑ 2005/persano → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -467,9 +467,9 @@ the issue of https.

./mynx manual.html

Alternate code:

The author’s provided unobfuscated code, -mynx.alt.c can be compiled and evaluated if +mynx.alt.c can be compiled and evaluated if you wish to not try and decipher the original entry.

-

The other version, mynx.alt2.c is a +

The other version, mynx.alt2.c is a starting point for anyone who wishes to come up with a version (or pipeline) that works with https.

Obviously this will not work with https so easily as it only scans for http @@ -539,29 +539,29 @@ command sequence would be:

Primary files

Secondary files


@@ -629,7 +629,7 @@ Jump to: top diff --git a/2005/persano/index.html b/2005/persano/index.html index 89b9102e6..a2333484f 100644 --- a/2005/persano/index.html +++ b/2005/persano/index.html @@ -416,10 +416,10 @@ ← 2005/mynx ↑ 2005 ↑ 2005/sykes → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -566,19 +566,19 @@ was not implemented in order to avoid the Unisys patent can no longer be used.

Primary files

Secondary files

  • 2005_persano.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -646,7 +646,7 @@ Jump to: top diff --git a/2005/sykes/index.html b/2005/sykes/index.html index bb7650809..04a57e4b3 100644 --- a/2005/sykes/index.html +++ b/2005/sykes/index.html @@ -416,10 +416,10 @@ ← 2005/persano ↑ 2005 ↑ 2005/timwi → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -460,7 +460,7 @@ Location: FI - Republic of Finland For those who fondly remember their first PET, this entry will start you down memory lane … starting with $C000 of course!

-

We encourage you to try and grok the obfuscated expression on line +

We encourage you to try and grok the obfuscated expression on line 56, after the C pre-processor gets finished with it!

We downloaded the ROM contents to use @@ -625,12 +625,12 @@ mode. Otherwise some PET specific features are skipped during normal 6502 emulation.

The main processing all happens in a heroic expression containing no -less than 64 ternary operators (after cpp) starting on line +less than 64 ternary operators (after cpp) starting on line 56. This decodes the 6502 instructions according to a table and executes them.

-

The addressing mode is decoded in a similar expression starting on line +

The addressing mode is decoded in a similar expression starting on line 53.

Bugs

The machine emulated is an older 40 column @@ -690,28 +690,28 @@ from the Internet. This is to avoid directly infringing any copyright.

Primary files

Secondary files


@@ -779,7 +779,7 @@ Jump to: top diff --git a/2005/timwi/index.html b/2005/timwi/index.html index a2d03ada2..541592b04 100644 --- a/2005/timwi/index.html +++ b/2005/timwi/index.html @@ -416,10 +416,10 @@ ← 2005/sykes ↑ 2005 ↑ 2005/toledo → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -520,18 +520,18 @@ hardest thing to figure out is how it finds the matching square brackets.

Primary files

Secondary files

  • 2005_timwi.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -599,7 +599,7 @@ Jump to: top diff --git a/2005/toledo/index.html b/2005/toledo/index.html index 85538a884..3ca40e34e 100644 --- a/2005/toledo/index.html +++ b/2005/toledo/index.html @@ -416,10 +416,10 @@ ← 2005/timwi ↑ 2005 ↑ 2005/vik → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -454,8 +454,8 @@ code below.

    ./toledo a
     ./toledo a b

Alternate code:

-

Two alternate versions of this entry, toledo2.c and -toledo3.c were provided by the author. +

Two alternate versions of this entry, toledo2.c and +toledo3.c were provided by the author. Unfortunately, in 2024, it is not currently known what the differences are.

Alternate build:

To compile the alternate versions:

@@ -570,19 +570,19 @@ and compiles faster… but I’m still not seeing the difference.

Primary files

Secondary files

  • 2005_toledo.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -650,7 +650,7 @@ Jump to: top diff --git a/2005/vik/index.html b/2005/vik/index.html index 11ddad460..eaf7124c1 100644 --- a/2005/vik/index.html +++ b/2005/vik/index.html @@ -416,10 +416,10 @@ ← 2005/toledo ↑ 2005 ↑ 2005/vince → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -491,9 +491,9 @@ containing a map.

Start the engine using a built in labyrinth and texture bitmaps:

    ./vik

Start the engine and loads the labyrinth defined in the file -maze.map:

+maze.map:

    ./vik maze.map
-

Start the engine using maze.map in a window that is 400 pixels wide:

+

Start the engine using maze.map in a window that is 400 pixels wide:

    ./vik -w 400 maze.map

Note that the mapfile has to be the last argument and the -w option if present has to be the first. The map definition files and the bitmap files should be @@ -563,10 +563,10 @@ application a little bit.

Primary files


@@ -832,7 +832,7 @@ Jump to: top diff --git a/2006/toledo3/index.html b/2006/toledo3/index.html index 138e4573f..cc67b74e8 100644 --- a/2006/toledo3/index.html +++ b/2006/toledo3/index.html @@ -416,10 +416,10 @@ ← 2006/toledo2 ↑ 2006 ↑ 2011/akari → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -458,14 +458,14 @@ tested with Windows. See Alternate code below.

    ./toledo3 1

Alternate code:

The author provided two additional versions, -toledo3-sbar.c and -toledo3-txt.c. Respectively these +toledo3-sbar.c and +toledo3-txt.c. Respectively these create a status bar and make the game text only. Based on the author’s remarks, -another version, toledo3.alt.c, was +another version, toledo3.alt.c, was added that should work with Windows.

Alternate build:

With the exception of the Windows version, these are built by default. To build -the Windows version, toledo3.alt.c, +the Windows version, toledo3.alt.c, you will have to figure out how to compile Windows code.

Alternate use:

Use toledo3-sbar and toledo3-txt as you would toledo3 above.

@@ -531,10 +531,10 @@ graphical interface. Can you do it?

Can the evaluation function be enhanced to make the program play stronger?

UPGRADES

-

Using toledo3-sbar.c (which is too +

Using toledo3-sbar.c (which is too large for this IOCCC’s size rules) creates a status display about gameplay on the window title bar.

-

Using toledo3-txt.c turns this into +

Using toledo3-txt.c turns this into being purely text based.

@@ -518,7 +518,7 @@ executables. The output executables each print a message to stdout.

It takes quite a bit of skill and obfuscation to interleave a C program 4 levels deep, it’s much easier to interleave something like a brainf#$% program in a C program, for example. For comparison, a -brainf#$% program is embedded inside akari.c.

+brainf#$% program is embedded inside akari.c.

@@ -481,10 +481,10 @@ layout of the source-code is such that it evolves to a digital representation of the first 15 decimal places of pi after 4 time steps. This was setup using the other feature of the program which can be demonstrated as follows:

    ./blakely - < 3.dat
-

The program will first display the grid given in 3.dat, and then three +

The program will first display the grid given in 3.dat, and then three more grids (taking a few minutes to display the last). Waiting for any more grids will take a substantial amount of time. The final grid has been put into -evolve_to_3.dat, and if you type

+evolve_to_3.dat, and if you type

    ./blakely < evolve_to_3.dat

then the 3 will reappear after three time steps.

As should now be clear, this use of the program will attempt to evolve a given setup @@ -495,7 +495,7 @@ line option.

program. In the reverse direction, the code can either be killed, or will stop if it is unable to find a grid that will evolve to the current layout correctly. This can be seen with the sample grid -t0_3.dat, which evolves backwards by only two time-steps.

+t0_3.dat, which evolves backwards by only two time-steps.

Input file format

The input files must encode a square grid, where a space is a dead cell, and any other character (except a newline) is a living cell. Each line must be the same @@ -628,21 +628,21 @@ universe.

Primary files

Secondary files

  • 2011_blakely.tar.bz2 - download entry tarball
  • -
  • README.md - markdown source for this web page
  • -
  • .entry.json - entry summary and manifest in JSON
  • -
  • .gitignore - list of files that should not be committed under git
  • -
  • .path - directory path from top level directory
  • +
  • README.md - markdown source for this web page
  • +
  • .entry.json - entry summary and manifest in JSON
  • +
  • .gitignore - list of files that should not be committed under git
  • +
  • .path - directory path from top level directory
  • index.html - this web page

@@ -710,7 +710,7 @@ Jump to: top diff --git a/2011/borsanyi/index.html b/2011/borsanyi/index.html index 1ea391fbb..315d9786e 100644 --- a/2011/borsanyi/index.html +++ b/2011/borsanyi/index.html @@ -416,10 +416,10 @@ ← 2011/blakely ↑ 2011 ↑ 2011/dlowe → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -524,21 +524,21 @@ and each of them is put into its own bin afterwards. But where are the bins?

Primary files

Secondary files


@@ -606,7 +606,7 @@ Jump to: top diff --git a/2011/dlowe/index.html b/2011/dlowe/index.html index 449af30dc..e30c5ff5f 100644 --- a/2011/dlowe/index.html +++ b/2011/dlowe/index.html @@ -416,10 +416,10 @@ ← 2011/borsanyi ↑ 2011 ↑ 2011/eastman → - C code - Makefile + C code + Makefile Inventory - ✓ + ✓ @@ -461,7 +461,7 @@ Location: US - United States of America

Try:

Try these pre-trained networks:

    ./try.sh
-

NOTE: The dlowe-aux-data directory, which try.sh refers to, was +

NOTE: The dlowe-aux-data directory, which try.sh refers to, was created by:

    tar -jxf dlowe-aux-data.tar.bz2

Judges’ remarks:

@@ -471,16 +471,16 @@ It comes with a set of corpora for you to try.

You can create your own trained networks. For example, we trained a network on the C code of entries that were supplied to the 20Th IOCCC.

The ioccc-winlose-trained.net was trained using the -earlystop.pl tool:

+earlystop.pl tool:

    rm -f ioccc-winlose-trained.net
     ./earlystop.pl ioccc-winlose-trained.net ioccc_won_training/ ioccc_lost_training/ ioccc_won_test/ ioccc_lost_test/

where:

  • ioccc_won_training/ -1/2 of C code of the 20th IOCCC entries (except for dlowe.c from 2011) +1/2 of C code of the 20th IOCCC entries (except for dlowe.c from 2011) plus 1/2 of the C code winning entries from prior IOCCC contests

  • ioccc_won_test/ -1/2 of C code of the 20th IOCCC entries (except for dlowe.c from 2011) +1/2 of C code of the 20th IOCCC entries (except for dlowe.c from 2011) plus 1/2 of the C code winning entries from prior IOCCC contests

  • ioccc_lost_training/ 1/2 of C code from entries that that did not win

  • @@ -489,17 +489,17 @@ plus 1/2 of the C code winning entries from prior IOCCC contests

NOTE: The above directories were not shipped and everything from the entries that did not win were flushed to /dev/null.

-

The earlystop.pl tool wrote:

+

The earlystop.pl tool wrote:

    training 1 to 1001...
     training 1001 to 2001...
     prior error = 56.746974766043; current error = 58.095691135305

The resulting ioccc-winlose-trained.net file was included in the dlowe-aux-data.tar.bz2 tarball.

-

The dlowe.c was explicitly excluded from this trailing set, so this +

The dlowe.c was explicitly excluded from this trailing set, so this test is interesting:

    ./dlowe dlowe.c < dlowe-aux-data/ioccc-winlose-trained.net
-

NOTE: this is done in try.sh.

-

The match of dlowe.c to the lose/win trailed network was:

+

NOTE: this is done in try.sh.

+

The match of dlowe.c to the lose/win trailed network was:

    dlowe.c 0.125108

NOTE: The non-artificially intelligent decisions of the IOCCC judges include random quirks and their non-linear judgment calls not found in the ioccc trained network. @@ -508,28 +508,28 @@ mean it will win or lose a future IOCCC. On the other hand … it just might!

other data sets to try

While we cannot supply you with the losing IOCCC source code, the author did supply a number data sets on which to test:

-

We created the english-trained.net as follows:

+

We created the english-trained.net as follows:

    ./dlowe -8000 dlowe-aux-data/english-1/ dlowe-aux-data/english-0/ < /dev/null > dlowe-aux-data/english-trained.net
-

We created the png-trained.net as follows:

+

We created the png-trained.net as follows:

    ./dlowe -8000 png-1/ png-0/ < /dev/null > dlowe-aux-data/png-trained.net
-

We created the xor-trained.net as follows:

+

We created the xor-trained.net as follows:

    ./dlowe -8000 dlowe-aux-data/xor-1/ dlowe-aux-data/xor-0/ < /dev/null > dlowe-aux-data/xor-trained.net

NOTE: The directory args must end in a / for them to work.

@@ -581,16 +581,16 @@ filetype:gif”.

  • Using these corpora as a training set;
  • Using several hundred random *.gif and *.png files from my home computer as a test set;
  • -
  • Using the included earlystop.pl script, which stopped after 67000 iterations.
  • +
  • Using the included earlystop.pl script, which stopped after 67000 iterations.
  • Interpreting output of > 0.5 as “probably a .png” and < 0.5 as “probably a .gif”
  • produced a network with about 87% accuracy

    English corpora

    -

    The english-1 corpus was obtained by manually scraping the first results from +

    The english-1 corpus was obtained by manually scraping the first results from a https://www.google.com/webhp?lr=lang_en search for “paris filetype:txt”.

    -

    The english-0 corpus was obtained by manually scraping the first results from +

    The english-0 corpus was obtained by manually scraping the first results from a https://www.google.com/webhp?lr=lang_fr search for “paris filetype:txt”.

    Results:
    @@ -598,23 +598,23 @@ filetype:txt”.

  • Using these corpora as a training set;
  • Using several dozen additional text files (obtained by the same methods) as a test set;
  • -
  • Using the included earlystop.pl script, which stopped after +
  • Using the included earlystop.pl script, which stopped after 10000 iterations;
  • Interpreting output of > 0.5 as “probably English” and < 0.5 as “probably French”
  • produced a network with 100% accuracy.

    xor corpora

    -

    The xor-1 corpus consists of two files containing 01 +

    The xor-1 corpus consists of two files containing 01 and 10 respectively.

    -

    The xor-0 corpus consists of two files containing 00 +

    The xor-0 corpus consists of two files containing 00 and 11 respectively.

    Results:

    Using these corpora as a training set takes about 8000 iterations to learn xor to within a tolerance of <0.01.

    Limitations

    The program can’t tell you anything meaningful about files with less than two -bytes in them (I’m looking at you, smr.c!)

    +bytes in them (I’m looking at you, smr.c!)

    You must include the trailing directory separator on training directories (this allows the program to be portable without wasting precious bytes on figuring out how to concatenate directory and file names…).

    @@ -623,7 +623,7 @@ figuring out how to concatenate directory and file names…).

    representation and endianness.

    Making sure not to overfit the network to the training data is a bit of a -black art. I have enclosed earlystop.pl, a wrapper script that implements +black art. I have enclosed earlystop.pl, a wrapper script that implements a simple ‘early stopping’ algorithm; other techniques are possible.

    Bad input (e.g. nonexistent files, non-numeric number of iterations, etc.) tends to result in empty output.

    @@ -676,11 +676,11 @@ by a network trained to recognize IOCCC entries

    Primary files