diff --git a/1984/mullender/README.md b/1984/mullender/README.md index 6588218d2..acda6f847 100644 --- a/1984/mullender/README.md +++ b/1984/mullender/README.md @@ -93,7 +93,7 @@ the rules were changed, requesting non-machine specific code. This program was selected for the 1987 t-shirt collection. -The C startup routine (via [crt0.o](https://en.wikipedia.org/wiki/Crt0)) +The C startup routine, via [crt0.o](https://en.wikipedia.org/wiki/Crt0), transfers control to a location named `main`. In this case, `main` just happens to be in the data area. The array of `short`s, which has been further obfuscated by use of different data types, just happens to form a meaningful set @@ -188,10 +188,10 @@ since there was no CS curriculum when we started). We had an assignment to create a pair of programs for the computer networks course. The programs were supposed to send data reliably from one program to the other over an unreliable channel. This channel was simulated with a pair of -[pipes](https://en.wikipedia.org/wiki/Pipeline_(software)). +[pipes](https://en.wikipedia.org/wiki/Pipeline_(software)). We decided for fun to create an -[obfuscated](https://en.wikipedia.org/wiki/Obfuscation_(software)) set of +[obfuscated](https://en.wikipedia.org/wiki/Obfuscation_(software)) set of programs, only for the [PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor), to do this, but circumventing the channel (i.e. cheating, hence the needed obfuscation). Our @@ -207,12 +207,12 @@ there](https://groups.google.com/g/net.lang.c/c/lx-TAuEyeRI/m/HdOOnNx6LC0J) and it. Since we had just recently created these [obfuscated -programs](https://en.wikipedia.org/wiki/Obfuscation_(software)) we decided we could +programs](https://en.wikipedia.org/wiki/Obfuscation_(software)) we decided we could use the same technique for an obfuscated C program. We upped the ante a bit by making it "portable". To add to the -[obfuscation](https://en.wikipedia.org/wiki/Obfuscation_(software)), we used +[obfuscation](https://en.wikipedia.org/wiki/Obfuscation_(software)), we used different formats for the integers in the array: some in decimal, some in octal, some in hexadecimal, and when the value would fit, some as an ASCII character. @@ -230,7 +230,7 @@ Our program is idempotent under `cb`. When this program is compiled, the compiler places the array somewhere in memory, just like it places any compiled code somewhere in memory. Usually, the -C startup code ([crt0.o](https://en.wikipedia.org/wiki/Crt0)) calls a routine +C startup code, [crt0.o](https://en.wikipedia.org/wiki/Crt0), calls a routine named `main()`. The loader fills in the address in the startup code, but at least on the old systems where this program ran, it doesn't know that the `main()` in this program isn't code but data! @@ -242,13 +242,13 @@ both a [PDP-11](https://en.wikipedia.org/wiki/PDP-11) and a On the [VAX](https://en.wikipedia.org/wiki/VAX), the routine `main()` is called with the `calls` instruction. This instruction uses the first (2-byte) -[word](https://en.wikipedia.org/wiki/Word_(computer_architecture)) of the called +[word](https://en.wikipedia.org/wiki/Word_(computer_architecture)) of the called routine as a mask of [registers](https://en.wikipedia.org/wiki/Processor_register) that are to be -saved on the [stack](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)). +saved on the [stack](https://en.wikipedia.org/wiki/Stack(abstract_data_type)). In other words, on the VAX the first word can be anything. On the [PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor), the first word -is a [branch](https://en.wikipedia.org/wiki/Branch_(computer_science)) +is a [branch](https://en.wikipedia.org/wiki/Branch_(computer_science)) [instruction](https://en.wikipedia.org/wiki/Instruction_set_architecture#Instructions) that branches over the VAX code. The PDP and VAX codes are thus completely separate. @@ -356,7 +356,7 @@ program that we came up with is as follows: The first word (after the label `vax`) is the [PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) [branch -instruction](https://en.wikipedia.org/wiki/Branch_(computer_science)). +instruction](https://en.wikipedia.org/wiki/Branch_(computer_science)). [PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) branch instructions are octal `400` + the distance divided by `2`. The string that both the [PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) and @@ -366,10 +366,10 @@ programs use is after the `str` label, and the `pdp` label. On the [VAX](https://en.wikipedia.org/wiki/VAX), the program -[pushes](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)) 9 (the length -of the string), the address of the string and 1 (the [file +[pushes](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)) 9 (the length +of the string), the address of the string and 1, the [file descriptor](https://en.wikipedia.org/wiki/File_descriptor) on the -[stack](https://en.wikipedia.org/wiki/Stack_(abstract_data_type))) and calls +[stack](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)), and calls `write(2)`. Since we didn't know the exact calling sequence for [system calls](https://en.wikipedia.org/wiki/System_call), we just copied the source for the `write(2)` system call stub into our program. After `write(2)` finishes, the @@ -455,7 +455,7 @@ The only problem we had was that the program had chosen an Since everybody knows what a [PDP-11](https://en.wikipedia.org/wiki/PDP-11) branch instruction looks like (everyone knows that the traditional magic word for an executable, `0407`, is a [PDP-11](https://en.wikipedia.org/wiki/PDP-11) -[branch](https://en.wikipedia.org/wiki/Branch_(computer_science))), we changed +[branch](https://en.wikipedia.org/wiki/Branch_(computer_science)), we changed that to [decimal](https://en.wikipedia.org/wiki/Decimal). After checking the size of the resulting program we saw that it was one byte too long. The limit was 512 bytes, and our program was 513 bytes. So we changed the word `and` in diff --git a/1984/mullender/index.html b/1984/mullender/index.html index 08c342c12..57c79d243 100644 --- a/1984/mullender/index.html +++ b/1984/mullender/index.html @@ -452,7 +452,7 @@ that has ever been received! Like all great contest entries, it resulted in a change of rules for the following year. To prevent a flood of similar programs, the rules were changed, requesting non-machine specific code.

This program was selected for the 1987 t-shirt collection.

-

The C startup routine (via crt0.o) +

The C startup routine, via crt0.o, transfers control to a location named main. In this case, main just happens to be in the data area. The array of shorts, which has been further obfuscated by use of different data types, just happens to form a meaningful set @@ -549,7 +549,7 @@ Our program is idempotent under cb.

More detailed analysis

When this program is compiled, the compiler places the array somewhere in memory, just like it places any compiled code somewhere in memory. Usually, the -C startup code (crt0.o) calls a routine +C startup code, crt0.o, calls a routine named main(). The loader fills in the address in the startup code, but at least on the old systems where this program ran, it doesn’t know that the main() in this program isn’t code but data!

@@ -562,7 +562,7 @@ with the calls instruction. This instruction uses the first (2-byte word of the called routine as a mask of registers that are to be -saved on the stack. +saved on the stack. In other words, on the VAX the first word can be anything. On the PDP, the first word is a branch @@ -664,9 +664,9 @@ programs use is after the str label, and the pdp label.

On the VAX, the program pushes 9 (the length -of the string), the address of the string and 1 (the file +of the string), the address of the string and 1, the file descriptor on the -stack) and calls +stack, and calls write(2). Since we didn’t know the exact calling sequence for system calls, we just copied the source for the write(2) system call stub into our program. After write(2) finishes, the @@ -745,7 +745,7 @@ The only problem we had was that the program had chosen an Since everybody knows what a PDP-11 branch instruction looks like (everyone knows that the traditional magic word for an executable, 0407, is a PDP-11 -branch), we changed +branch, we changed that to decimal. After checking the size of the resulting program we saw that it was one byte too long. The limit was 512 bytes, and our program was 513 bytes. So we changed the word and in diff --git a/1985/README.md b/1985/README.md index b22dd1ba3..3faba9d52 100644 --- a/1985/README.md +++ b/1985/README.md @@ -6,7 +6,7 @@ and try to figure how it does what it does! You may then wish to look at the Author's remarks for even more details. Hints against machine dependent code were added to the [rules](rules.txt) to -avoid another 1984 style entry ([1984/mullender](../1984/mullender/index.html)). +avoid another 1984 style [1984/mullender](../1984/mullender/index.html) entry. [Rules](rules.txt) and [results](../years.html#1985) were posted to _net.lang.c_ and _net.unix-wizards_. Larry Bassel was invited to help in the judging. Awards were given to 5 classes of programs since we were unable to select only diff --git a/1985/august/README.md b/1985/august/README.md index fd5173c5b..eb2228d90 100644 --- a/1985/august/README.md +++ b/1985/august/README.md @@ -18,8 +18,8 @@ ./try.sh ``` -If you have the `primes(6)` tool (sometimes part of [BSD -Games](https://github.com/vattam/BSDGames)) you can see +If you have the `primes(6)` tool (sometimes part of +([BSD](https://github.com/vattam/BSDGames) Games) you can see what of the output in the first `N` (say `15` or `25`) lines are primes: ``` diff --git a/1985/august/index.html b/1985/august/index.html index c7963784b..2083ac9d1 100644 --- a/1985/august/index.html +++ b/1985/august/index.html @@ -403,8 +403,8 @@ Location: SE - Kingdom of Sweden (

    ./august

Try:

    ./try.sh
-

If you have the primes(6) tool (sometimes part of BSD -Games) you can see +

If you have the primes(6) tool (sometimes part of +(BSD Games) you can see what of the output in the first N (say 15 or 25) lines are primes:

    ./primes.sh # 15
     ./primes.sh 25
diff --git a/1985/index.html b/1985/index.html index 4e47e539e..f72a1cf78 100644 --- a/1985/index.html +++ b/1985/index.html @@ -388,7 +388,7 @@ to compile it and how to run the winning program. Look at the winning source and try to figure how it does what it does! You may then wish to look at the Author’s remarks for even more details.

Hints against machine dependent code were added to the rules to -avoid another 1984 style entry (1984/mullender). +avoid another 1984 style 1984/mullender entry. Rules and results were posted to net.lang.c and net.unix-wizards. Larry Bassel was invited to help in the judging. Awards were given to 5 classes of programs since we were unable to select only diff --git a/1986/README.md b/1986/README.md index 3a453c228..92bf1cfb2 100644 --- a/1986/README.md +++ b/1986/README.md @@ -13,7 +13,7 @@ A poll was taken for the worst code for [BSD](https://en.wikipedia.org/wiki/Berkeley_Software_Distribution) and [System V](https://en.wikipedia.org/wiki/UNIX_System_V) program. The [Bourne Shell](https://en.wikipedia.org/wiki/Bourne_shell) (`/bin/sh`) won for both -systems. The BSD [finger](https://en.wikipedia.org/wiki/Finger_(protocol)) +systems. The BSD [finger](https://en.wikipedia.org/wiki/Finger_(protocol)) program took third place. [Rules](rules.txt) and [results](../years.html#1986) were posted to _net.lang.c_ diff --git a/1986/wall/README.md b/1986/wall/README.md index d2fdef964..6846abf8e 100644 --- a/1986/wall/README.md +++ b/1986/wall/README.md @@ -19,8 +19,8 @@ This caused a number of System V C pre-preprocessors to gripe about a syntax error. This program is a masterpiece of obfuscation and humor. Larry Wall (the hacker -who gave us [rn](https://en.wikipedia.org/wiki/Rn_(newsreader)) and -[patch](https://en.wikipedia.org/wiki/Patch_(Unix))) asks you to compile and +who gave us [rn](https://en.wikipedia.org/wiki/Rn_(newsreader)) and +[patch](https://en.wikipedia.org/wiki/Patch_(Unix)), etc.) asks you to compile and consider the warning message generated by the C compiler. Then execute the program and type characters into its standard input. You will see why the compiler documents the program. diff --git a/1986/wall/index.html b/1986/wall/index.html index 4ae8bfa50..eae849343 100644 --- a/1986/wall/index.html +++ b/1986/wall/index.html @@ -407,7 +407,7 @@ This caused a number of System V C pre-preprocessors to gripe about a syntax error.

This program is a masterpiece of obfuscation and humor. Larry Wall (the hacker who gave us rn and -patch) asks you to compile and +patch, etc.) asks you to compile and consider the warning message generated by the C compiler. Then execute the program and type characters into its standard input. You will see why the compiler documents the program.

diff --git a/1987/lievaart/README.md b/1987/lievaart/README.md index c09e75841..8f737539b 100644 --- a/1987/lievaart/README.md +++ b/1987/lievaart/README.md @@ -29,7 +29,7 @@ We believe that you too will be amazed at just how much power Mr. Lievaart packed into 1024 bytes! This Plays the game of [Reversi -(Othello)](https://en.wikipedia.org/wiki/Reversi)! Compile and run. It then +[Othello](https://en.wikipedia.org/wiki/Reversi)! Compile and run. It then asks for a playing level. Enter 0-10 (easy-hard). It then asks for your move. A move is a number within 11-88, or 99 to pass. Illegal moves (except for an illegal pass) are rejected. Then the computer diff --git a/1987/lievaart/index.html b/1987/lievaart/index.html index af02327e3..653902d14 100644 --- a/1987/lievaart/index.html +++ b/1987/lievaart/index.html @@ -409,8 +409,8 @@ Location: NL - Kingdom of the Netherlan

Judges’ remarks:

We believe that you too will be amazed at just how much power Mr. Lievaart packed into 1024 bytes!

-

This Plays the game of Reversi -(Othello)! Compile and run. It then +

This Plays the game of [Reversi +Othello! Compile and run. It then asks for a playing level. Enter 0-10 (easy-hard). It then asks for your move. A move is a number within 11-88, or 99 to pass. Illegal moves (except for an illegal pass) are rejected. Then the computer diff --git a/1989/robison/README.md b/1989/robison/README.md index 01e4a330a..b2c87e05e 100644 --- a/1989/robison/README.md +++ b/1989/robison/README.md @@ -58,7 +58,7 @@ For an interesting document on APL, see This program is a handy picoAPL interpreter written in `C--`. It outputs the evaluation of an -[APL](https://en.wikipedia.org/wiki/APL_(programming_language)) expression from standard +[APL](https://en.wikipedia.org/wiki/APL_(programming_language)) expression from standard input. Functions are limited to dyadic `+`,`-`,`x`, and unary `-`; numerals must be binary. Parentheses may be used for grouping. For example: diff --git a/1990/jaw/README.md b/1990/jaw/README.md index 2b321b3d5..725ff729e 100644 --- a/1990/jaw/README.md +++ b/1990/jaw/README.md @@ -80,7 +80,7 @@ by the receiver. Command shell archives alleviate this problem somewhat, but still require standardization for the function of data compression and mail-transparency encoding. On Unix, these coding format quandaries are overcome by planting a novel [Trojan -Horse](https://en.wikipedia.org/wiki/Trojan_horse_(computing)) in the archive +Horse](https://en.wikipedia.org/wiki/Trojan_horse_(computing)) in the archive header to perform negotiation-less decoding. Specifically, we outline the development of an extraordinarily compact portable diff --git a/1991/cdupont/README.md b/1991/cdupont/README.md index 434fbd94e..7132a3ef6 100644 --- a/1991/cdupont/README.md +++ b/1991/cdupont/README.md @@ -21,7 +21,7 @@ Why is the following label necessary? ``` Notice that if you C beautify (cb) or pre-process this program, it -will no longer work correctly, if at all. (go ahead, try it... :-)) +will no longer work correctly, if at all. Go ahead, try it... :-) NOTE: One should remove the final trailing newline to obtain the original source file. This step is not needed to compile diff --git a/1991/cdupont/index.html b/1991/cdupont/index.html index 476bdbd9b..65576fde8 100644 --- a/1991/cdupont/index.html +++ b/1991/cdupont/index.html @@ -405,7 +405,7 @@ Location: FR - French Republic (Why is the following label necessary?

    sorryfor_this_unused_but_very_needed_label:

Notice that if you C beautify (cb) or pre-process this program, it -will no longer work correctly, if at all. (go ahead, try it… :-))

+will no longer work correctly, if at all. Go ahead, try it… :-)

NOTE: One should remove the final trailing newline to obtain the original source file. This step is not needed to compile this entry.

diff --git a/1991/fine/README.md b/1991/fine/README.md index 4307b6182..740a03162 100644 --- a/1991/fine/README.md +++ b/1991/fine/README.md @@ -30,7 +30,7 @@ rotated from `the rug gary lent`! ## Judges' remarks: This filter, 80 chars plus a newline, fits into a single line on most -terminals (unless your terminal has a line wrap mis-feature :-)). +terminals, unless your terminal has a line wrap mis-feature :-). Note in 2023: fixing this entry to work with modern systems increased the size, originally to 106 characters but it was dropped back down to 80 with clever use diff --git a/1991/fine/index.html b/1991/fine/index.html index b39292953..e351bb974 100644 --- a/1991/fine/index.html +++ b/1991/fine/index.html @@ -412,7 +412,7 @@ those who have a harder time reading backwards it says: Gary lent the rug< rotated from the rug gary lent!

Judges’ remarks:

This filter, 80 chars plus a newline, fits into a single line on most -terminals (unless your terminal has a line wrap mis-feature :-)).

+terminals, unless your terminal has a line wrap mis-feature :-).

Note in 2023: fixing this entry to work with modern systems increased the size, originally to 106 characters but it was dropped back down to 80 with clever use of the Makefile.

diff --git a/1992/buzzard.2/README.md b/1992/buzzard.2/README.md index 434923bf8..a4f2d027a 100644 --- a/1992/buzzard.2/README.md +++ b/1992/buzzard.2/README.md @@ -137,7 +137,7 @@ part. For more information on what you can do once you've piped [third](%%REPO_URL%%/1992/buzzard.2/third) into first, type `help` and consult -[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)) manuals for +[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)) manuals for further reference. Six sample THIRD programs are included in the files `demo1.th` through `demo6.th`. See [buzzard.2.README.html](buzzard.2.README.html) for more information. @@ -190,7 +190,7 @@ answer the question "what will this do when I run it". A reader who has deciphered `first` to this point may think they know the answer to this question, but they may not know the answer to the more important question, "what will this program do when given the right input?" -[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)) aficionados, +[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)) aficionados, and especially FORTH implementers, may recognize the similarity of the internal compiler format to many FORTH internal representations, and, being aware that FORTH interpreters can often be self-compiling, may be suspicious that this diff --git a/1992/vern/README.md b/1992/vern/README.md index 601195c1e..d409a111a 100644 --- a/1992/vern/README.md +++ b/1992/vern/README.md @@ -147,8 +147,8 @@ by comparing the function pointer with the function itself). Fourth, there are no independent routines for generating potential moves. Instead, the program generates its moves by brute force: for every piece it controls on the board, it attempts to move it to every square on the board. -Those moves that are legal it then explores to see their effects (using -[alpha-beta search](https://en.wikipedia.org/wiki/Alpha-beta_pruning)). This +Those moves that are legal it then explores to see their effects, using +[alpha-beta search](https://en.wikipedia.org/wiki/Alpha-beta_pruning). This tactic somewhat obfuscates the algorithm used by the program. Finally, there are three key constants that occur throughout the program: `64`, diff --git a/1992/vern/index.html b/1992/vern/index.html index 6e34fb2ba..42766ff78 100644 --- a/1992/vern/index.html +++ b/1992/vern/index.html @@ -499,8 +499,8 @@ by comparing the function pointer with the function itself).

Fourth, there are no independent routines for generating potential moves. Instead, the program generates its moves by brute force: for every piece it controls on the board, it attempts to move it to every square on the board. -Those moves that are legal it then explores to see their effects (using -alpha-beta search). This +Those moves that are legal it then explores to see their effects, using +alpha-beta search. This tactic somewhat obfuscates the algorithm used by the program.

Finally, there are three key constants that occur throughout the program: 64, 8, and 3 (lg 8). Rather than making these available at compile-time, diff --git a/1993/dgibson/README.md b/1993/dgibson/README.md index 21e43db22..e26616fe2 100644 --- a/1993/dgibson/README.md +++ b/1993/dgibson/README.md @@ -13,7 +13,7 @@ where: -`datafile` is the initial pattern (default: [dgibson.data1](%%REPO_URL%%/1993/dgibson/dgibson.data1)) +`datafile` is the initial pattern (default is the [dgibson.data1](%%REPO_URL%%/1993/dgibson/dgibson.data1) file) ## Try: diff --git a/1993/dgibson/index.html b/1993/dgibson/index.html index c9cfea1a8..d19167a9f 100644 --- a/1993/dgibson/index.html +++ b/1993/dgibson/index.html @@ -402,7 +402,7 @@ Location: ZZ - Unknown locationTo use:

    ./dgibson.sh [datafile]

where:

-

datafile is the initial pattern (default: dgibson.data1)

+

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

Try:

    ./try.sh

Judges’ remarks:

diff --git a/1994/README.md b/1994/README.md index 6224feae4..0a34f4c3e 100644 --- a/1994/README.md +++ b/1994/README.md @@ -25,7 +25,7 @@ errors. Rule abuse was encouraged this year - two of this year's winning entries found new and interesting abuses of the rules. Next year's rules will change -due to these ([smr](smr/index.html) and [dodsond2](dodsond2/index.html)) entries' +due to these [smr](smr/index.html) and [dodsond2](dodsond2/index.html) entries' forms of abuse. diff --git a/1994/index.html b/1994/index.html index 59dda97e3..ff82735ad 100644 --- a/1994/index.html +++ b/1994/index.html @@ -403,7 +403,7 @@ unable to find an ANSI C compiler that flagged such expressions as errors.

Rule abuse was encouraged this year - two of this year’s winning entries found new and interesting abuses of the rules. Next year’s rules will change -due to these (smr and dodsond2) entries’ +due to these smr and dodsond2 entries’ forms of abuse.

Want to be an IOCCC Judge?

We are thinking about adding a 3rd judge to our team. A 3rd judge diff --git a/1994/shapiro/README.md b/1994/shapiro/README.md index 4ee67bbd4..749b64281 100644 --- a/1994/shapiro/README.md +++ b/1994/shapiro/README.md @@ -67,18 +67,18 @@ The basic theme (pun) of this program is: ``` -My entry ([shapiro.c](%%REPO_URL%%/1994/shapiro/shapiro.c)) is mostly comments, formatted in the shape of a +My entry, [shapiro.c](%%REPO_URL%%/1994/shapiro/shapiro.c), is mostly comments, formatted in the shape of a clock. If you strip out the comments and look at the code you will quickly realize that the comments were the important part and that the code does very little (see pun above). It writes (to `stdout`) -another C program ([shapiro_t2.c](%%REPO_URL%%/1994/shapiro/shapiro_t2.c)). This is the first level of +another C program ([shapiro_t2.c](%%REPO_URL%%/1994/shapiro/shapiro_t2.c). This is the first level of obfuscation. The second program ([shapiro_t2.c](%%REPO_URL%%/1994/shapiro/shapiro_t2.c) (use `make everything` first) prints a clock in the upper right hand corner of your VTxxx/ANSI display. -Most of the surface obfuscation in the second program -([shapiro_t2.c](%%REPO_URL%%/1994/shapiro/shapiro_t2.c)) was an attempt to make it as small as possible. +Most of the surface obfuscation in the second program, +[shapiro_t2.c](%%REPO_URL%%/1994/shapiro/shapiro_t2.c), was an attempt to make it as small as possible. You should be able to see around this with `cb(1)` and some more intelligent variable names. Once you get past this you will realize that the third level of obfuscation is a six member client/server hierarchy. (See the diff --git a/1994/shapiro/index.html b/1994/shapiro/index.html index e667f9522..ec2d15e98 100644 --- a/1994/shapiro/index.html +++ b/1994/shapiro/index.html @@ -430,16 +430,16 @@ this program. Note that this alt file is currently missing. See

The basic theme (pun) of this program is:

    "This time (everything) is not where it should be."
           ~~~~
-

My entry (shapiro.c) is mostly comments, formatted in the shape of a +

My entry, shapiro.c, is mostly comments, formatted in the shape of a clock. If you strip out the comments and look at the code you will quickly realize that the comments were the important part and that the code does very little (see pun above). It writes (to stdout) -another C program (shapiro_t2.c). This is the first level of +another C program (shapiro_t2.c. This is the first level of obfuscation.

The second program (shapiro_t2.c (use make everything first) prints a clock in the upper right hand corner of your VTxxx/ANSI display.

-

Most of the surface obfuscation in the second program -(shapiro_t2.c) was an attempt to make it as small as possible. +

Most of the surface obfuscation in the second program, +shapiro_t2.c, was an attempt to make it as small as possible. You should be able to see around this with cb(1) and some more intelligent variable names. Once you get past this you will realize that the third level of obfuscation is a six member client/server hierarchy. (See the diff --git a/1994/shapiro/shapiro.html b/1994/shapiro/shapiro.html index be0a0a9c2..aa864583e 100644 --- a/1994/shapiro/shapiro.html +++ b/1994/shapiro/shapiro.html @@ -380,7 +380,7 @@

HINTS

-

For the first program (shapiro.c):

+

For the first program, shapiro.c:

This is a very simple program:

     1. #include <stdio.h>
      2. main()
diff --git a/1994/shapiro/shapiro.md b/1994/shapiro/shapiro.md
index f61299e81..eb3aa6e43 100644
--- a/1994/shapiro/shapiro.md
+++ b/1994/shapiro/shapiro.md
@@ -1,6 +1,6 @@
 # HINTS
 
-For the first program ([shapiro.c](%%REPO_URL%%/1994/shapiro/shapiro.c)):
+For the first program, [shapiro.c](%%REPO_URL%%/1994/shapiro/shapiro.c):
 
 
 This is a very simple program:
diff --git a/1994/tvr/README.md b/1994/tvr/README.md
index a76e67475..68f3e30e4 100644
--- a/1994/tvr/README.md
+++ b/1994/tvr/README.md
@@ -86,9 +86,9 @@ fix it without breaking something else?
 
 This program contains four pairs of fractals/effects and three methods of
 animating them. There are two windows for a pair of fractals, one of which
-contains static fractal (e.g. [Mandelbrot
-set](https://en.wikipedia.org/wiki/Mandelbrot_set)) and the other an animating
-one (e.g. [Julia set](https://en.wikipedia.org/wiki/Julia_set)) which is derived
+contains static fractal (e.g., [Mandelbrot](https://en.wikipedia.org/wiki/Mandelbrot_set) set)
+and the other an animating
+one (e.g., [Julia](https://en.wikipedia.org/wiki/Julia_set) set) which is derived
 from the same formula as the static one. Only one pair of fractals can be
 displayed in one process.
 
diff --git a/1994/tvr/index.html b/1994/tvr/index.html
index 5f90ca146..9af23ef93 100644
--- a/1994/tvr/index.html
+++ b/1994/tvr/index.html
@@ -434,9 +434,9 @@ fix it without breaking something else?

Interactive Fractals for X Window System

This program contains four pairs of fractals/effects and three methods of animating them. There are two windows for a pair of fractals, one of which -contains static fractal (e.g. Mandelbrot -set) and the other an animating -one (e.g. Julia set) which is derived +contains static fractal (e.g., Mandelbrot set) +and the other an animating +one (e.g., Julia set) which is derived from the same formula as the static one. Only one pair of fractals can be displayed in one process.

To animate the fractal, you must move your mouse on the static diff --git a/1994/weisberg/README.md b/1994/weisberg/README.md index 8a70f5a24..8ef664b99 100644 --- a/1994/weisberg/README.md +++ b/1994/weisberg/README.md @@ -77,7 +77,7 @@ event of a system shutdown or reboot. ### Bugs -The alternative version ([weisberg.alt.c](%%REPO_URL%%/1994/weisberg/weisberg.alt.c)) has never actually run +The alternative version ([weisberg.alt.c](%%REPO_URL%%/1994/weisberg/weisberg.alt.c) source) has never actually run to completion. After running for close to a week it had reached somewhere around 250e6, when it became necessary to test the reboot feature (which worked remarkably well). As there are quite a lot of primes to be found before reaching diff --git a/1994/weisberg/index.html b/1994/weisberg/index.html index f57c768ee..9a60b6e7a 100644 --- a/1994/weisberg/index.html +++ b/1994/weisberg/index.html @@ -433,7 +433,7 @@ run to completion, so as an added feature, it will cease execution upon reception of a signal (any will do equally well), as well as in the event of a system shutdown or reboot.

Bugs

-

The alternative version (weisberg.alt.c) has never actually run +

The alternative version (weisberg.alt.c source) has never actually run to completion. After running for close to a week it had reached somewhere around 250e6, when it became necessary to test the reboot feature (which worked remarkably well). As there are quite a lot of primes to be found before reaching diff --git a/1996/rcm/README.md b/1996/rcm/README.md index 88bd7e63d..3a5177007 100644 --- a/1996/rcm/README.md +++ b/1996/rcm/README.md @@ -39,8 +39,8 @@ commands including a way to do the above command but with more steps. Except for some silly requirements regarding input validation, CRC checking, and similar unimportant fluff, this program is a fully compliant -[RFC1951](https://www.ietf.org/rfc/rfc1951.txt)/[RFC1952](https://www.ietf.org/rfc/rfc1952.txt) -([GNU Gzip](https://www.gnu.org/software/gzip/)) file uncompressor. Feed it a +[RFC1951](https://www.ietf.org/rfc/rfc1951.txt)/[RFC1952](https://www.ietf.org/rfc/rfc1952.txt), +[GNU Gzip](https://www.gnu.org/software/gzip/), file uncompressor. Feed it a `gzip` compressed file on standard input, and it will write the fully uncompressed original file to standard output. diff --git a/1996/rcm/index.html b/1996/rcm/index.html index b32a943cf..477a69309 100644 --- a/1996/rcm/index.html +++ b/1996/rcm/index.html @@ -413,8 +413,8 @@ commands including a way to do the above command but with more steps.

Author’s remarks:

Except for some silly requirements regarding input validation, CRC checking, and similar unimportant fluff, this program is a fully compliant -RFC1951/RFC1952 -(GNU Gzip) file uncompressor. Feed it a +RFC1951/RFC1952, +GNU Gzip, file uncompressor. Feed it a gzip compressed file on standard input, and it will write the fully uncompressed original file to standard output.

ObJustifications for this entry:

diff --git a/1996/westley/README.md b/1996/westley/README.md index 476a44a6a..985085dc5 100644 --- a/1996/westley/README.md +++ b/1996/westley/README.md @@ -60,8 +60,9 @@ This 1-line program allows various analog ASCII clocks to print out the time; the ASCII clock is built from the command line arguments, so many different types of clocks can be generated. Three different scripts are supplied to print out a grandfather clock, a mantle clock that runs backwards, and a linear-style -clock. (they are [clock1.sh](%%REPO_URL%%/1996/westley/clock1.sh), [clock2.sh](%%REPO_URL%%/1996/westley/clock2.sh), and -[clock3.sh](%%REPO_URL%%/1996/westley/clock3.sh)) +clock. (they are [clock1.sh](%%REPO_URL%%/1996/westley/clock1.sh), +[clock2.sh](%%REPO_URL%%/1996/westley/clock2.sh), and +[clock3.sh](%%REPO_URL%%/1996/westley/clock3.sh). The program makes the following (possibly non-portable) assumptions: diff --git a/1996/westley/index.html b/1996/westley/index.html index 2eb0531cc..0af1048dd 100644 --- a/1996/westley/index.html +++ b/1996/westley/index.html @@ -426,8 +426,9 @@ understand it.

the ASCII clock is built from the command line arguments, so many different types of clocks can be generated. Three different scripts are supplied to print out a grandfather clock, a mantle clock that runs backwards, and a linear-style -clock. (they are clock1.sh, clock2.sh, and -clock3.sh)

+clock. (they are clock1.sh, +clock2.sh, and +clock3.sh.

The program makes the following (possibly non-portable) assumptions:

  1. Command line strings can be written to.

  2. diff --git a/1998/schnitzi/README.md b/1998/schnitzi/README.md index d7fc68330..e8974962f 100644 --- a/1998/schnitzi/README.md +++ b/1998/schnitzi/README.md @@ -77,8 +77,8 @@ the letter `e`. The IOCCC has been no stranger to this concept. Several winning entries from years past have accomplished interesting feats while completely avoiding the use -of certain C constructs thought to be essential (e.g. -[1988/robison.c](%%REPO_URL%%/1988/robison/robison.c)). If you have to ask why they would +of certain C constructs thought to be essential (e.g., +[1988/robison.c](%%REPO_URL%%/1988/robison/robison.c) file). If you have to ask why they would do it this way, then this contest just isn't for you. In continuing with this fine tradition, this program suggests to the ANSI diff --git a/1998/schnitzi/index.html b/1998/schnitzi/index.html index 61bcff2c4..d31bc66e3 100644 --- a/1998/schnitzi/index.html +++ b/1998/schnitzi/index.html @@ -441,8 +441,8 @@ entire novel (E. V. Wright’s “Gadsby”) in which no 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). If you have to ask why they would +of certain C constructs thought to be essential (e.g., +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, diff --git a/2001/anonymous/README.md b/2001/anonymous/README.md index 15f68fed8..9b4619bf5 100644 --- a/2001/anonymous/README.md +++ b/2001/anonymous/README.md @@ -123,7 +123,7 @@ The build script should give an example command to compile the program. ### Features [Basic Block](https://en.wikipedia.org/wiki/Basic_block) -[Cache](https://en.wikipedia.org/wiki/Cache_(computing)): Rather than +[Cache](https://en.wikipedia.org/wiki/Cache_(computing)): Rather than translating each instruction individually the dynamic binary translator generates a translation for an entire basic block of subject code. Having translated a block once, the target code generated will be stored for the @@ -138,7 +138,7 @@ The program runs [dynamically linked](https://en.wikipedia.org/wiki/Dynamic_linker) [ELF binaries](https://en.wikipedia.org/wiki/Executable_and_Linkable_Format), and when the subject program attempts to make a call to a standard -[library](https://en.wikipedia.org/wiki/Library_(computing)), the translator +[library](https://en.wikipedia.org/wiki/Library_(computing)), the translator attempts to make an appropriate call to the native system libraries on the target machine. This involves mangling between different calling conventions, etc. @@ -209,9 +209,9 @@ on to the next line of code. Due to space limitations only a handful of instructions are supported; these instructions which are supported are supported in somewhat non-conventional ways: chunks of the architecture (e.g. flags) are just ignored, the ELF -[loader](https://en.wikipedia.org/wiki/Loader_(computing)) does not really load +[loader](https://en.wikipedia.org/wiki/Loader_(computing)) does not really load the [ELF binary](https://en.wikipedia.org/wiki/Executable_and_Linkable_Format), -the target [library linking](https://en.wikipedia.org/wiki/Linker_(computing)) +the target [library linking](https://en.wikipedia.org/wiki/Linker_(computing)) can only pass up to 3 parameters to the target library function, etc. In short, please consider this a full disclaimer for any bug that may diff --git a/2001/bellard/README.md b/2001/bellard/README.md index f159d7c57..0fefb10c5 100644 --- a/2001/bellard/README.md +++ b/2001/bellard/README.md @@ -53,8 +53,8 @@ You can use it by typing: or by giving the C source to its standard input. -`args` are given to the `main()` function of `bellard.c` (`argv[0]` is -[bellard.c](%%REPO_URL%%/2001/bellard/bellard.c)). +`args` are given to the `main()` function of `bellard.c`, `argv[0]` is +[bellard.c](%%REPO_URL%%/2001/bellard/bellard.c). ### Examples: diff --git a/2001/bellard/index.html b/2001/bellard/index.html index 18d741651..84f075885 100644 --- a/2001/bellard/index.html +++ b/2001/bellard/index.html @@ -420,8 +420,8 @@ program.

    You can use it by typing:

        ./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).

    +

    args are given to the main() function of bellard.c, argv[0] is +bellard.c.

    Examples:

    • Sample compilation and execution:
    • diff --git a/2001/dgbeards/README.md b/2001/dgbeards/README.md index 1744586d0..7de92ab76 100644 --- a/2001/dgbeards/README.md +++ b/2001/dgbeards/README.md @@ -162,7 +162,7 @@ program would probably be rated somewhere around 1700-1900. It is better than most players, but will get destroyed by experienced human opponents. This program searches to a fixed depth of 3 -[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)). Because it does not +[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)). Because it does not search very deep, it performs very poorly in quiet strategic positions. In such positions, it will often just shuffle pieces around aimlessly until a tactical exchange presents itself. diff --git a/2001/herrmann2/README.md b/2001/herrmann2/README.md index 764840259..d436aa06d 100644 --- a/2001/herrmann2/README.md +++ b/2001/herrmann2/README.md @@ -19,7 +19,7 @@ ``` If you use vi(m) you can see a pattern in [herrmann2.cup](%%REPO_URL%%/2001/herrmann2/herrmann2.cup) and -[herrmann2.ioccc][(%%REPO_URL%%/2001/herrmann2/herrmann2.ioccc]) by say: +[herrmann2.ioccc][(%%REPO_URL%%/2001/herrmann2/herrmann2.ioccc] by say: ``` diff --git a/2001/herrmann2/index.html b/2001/herrmann2/index.html index 4daeb4621..61b7e2c51 100644 --- a/2001/herrmann2/index.html +++ b/2001/herrmann2/index.html @@ -404,7 +404,7 @@ Location: DE - Federal Republic of Germ

      Try:

          ./try.sh

      If you use vi(m) you can see a pattern in herrmann2.cup and -[herrmann2.ioccc][(https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.ioccc]) by say:

      +[herrmann2.ioccc][(https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/herrmann2/herrmann2.ioccc] by say:

          /[pon]\

      and

          /l
      diff --git a/2004/anonymous/README.md b/2004/anonymous/README.md index 581cbcccb..979089a3a 100644 --- a/2004/anonymous/README.md +++ b/2004/anonymous/README.md @@ -93,8 +93,8 @@ transcription to standard output as a [portable graymap](https://en.wikipedia.org/wiki/Netpbm#PGM_example) (PGM) file. The specific transcription mode is the [Black -Speech](https://www.glyphweb.com/arda/b/blackspeech.html) ([Tengwar -mode](https://www.glyphweb.com/arda/t/tengwar.html)), as +Speech](https://www.glyphweb.com/arda/b/blackspeech.html) +([Tengwar](https://www.glyphweb.com/arda/t/tengwar.html) mode), as used in the inscription on the [One Ring](https://www.glyphweb.com/arda/o/onering.html). The program handles the following digraphs: diff --git a/2004/anonymous/index.html b/2004/anonymous/index.html index 5517ed39c..c12c27fc9 100644 --- a/2004/anonymous/index.html +++ b/2004/anonymous/index.html @@ -454,8 +454,8 @@ argument text into Tolkien’s Elvish letters, and writes the transcription to standard output as a portable graymap (PGM) file.

      The specific transcription mode is the Black -Speech (Tengwar -mode), as +Speech +(Tengwar mode), as used in the inscription on the One Ring. The program handles the following digraphs:

      diff --git a/2004/gavare/README.md b/2004/gavare/README.md index 1d1f6941a..cd92cabd3 100644 --- a/2004/gavare/README.md +++ b/2004/gavare/README.md @@ -114,7 +114,7 @@ although the compiler gives it special meaning) and no preprocessor directives. This program is a small -[ray-tracer](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)). The first +[ray-tracer](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)). The first line of the source code may be modified if you want the resulting image to be of some other resolution than the predefined. The `A` value is an anti-alias factor. Setting it to `1` disables the anti-aliasing feature which makes the diff --git a/2004/gavin/README.md b/2004/gavin/README.md index fbb1e68c8..918ee92ef 100644 --- a/2004/gavin/README.md +++ b/2004/gavin/README.md @@ -102,8 +102,8 @@ well as the judges' remarks below plus [gavin.html](gavin.html). ## Judges' remarks: Over the years, we've seen a program that immediately dumps core if executed on -the "wrong" architectures (e.g., [1984/mullender](../../1984/mullender/index.html)) and a -program that dumps core after a while (e.g., [2001/bellard](../../2001/bellard/index.html)). +the "wrong" architectures (e.g., [1984/mullender](../../1984/mullender/index.html) entry) and a +program that dumps core after a while (e.g., [2001/bellard](../../2001/bellard/index.html) entry). This entry will happily compile and execute on most any architecture - the trick is that the result, to be useful, must be produced (and can only be enjoyed) on a particular architecture. We have not decided yet whether to disallow this for diff --git a/2004/gavin/index.html b/2004/gavin/index.html index 1bd50f8c0..2f368eba6 100644 --- a/2004/gavin/index.html +++ b/2004/gavin/index.html @@ -441,8 +441,8 @@ generated are the same names. See to use and gavin.html.

      Judges’ remarks:

      Over the years, we’ve seen a program that immediately dumps core if executed on -the “wrong” architectures (e.g., 1984/mullender) and a -program that dumps core after a while (e.g., 2001/bellard). +the “wrong” architectures (e.g., 1984/mullender entry) and a +program that dumps core after a while (e.g., 2001/bellard entry). This entry will happily compile and execute on most any architecture - the trick is that the result, to be useful, must be produced (and can only be enjoyed) on a particular architecture. We have not decided yet whether to disallow this for diff --git a/2004/jdalbec/README.md b/2004/jdalbec/README.md index 337d5c545..9d4b3959f 100644 --- a/2004/jdalbec/README.md +++ b/2004/jdalbec/README.md @@ -47,7 +47,7 @@ which line it is on. make alt ``` -The macro `Ag` ([silver](https://en.wikipedia.org/wiki/Silver)) controls how +The macro [Ag](https://en.wikipedia.org/wiki/Silver) controls how many number of lines to print on a line. Set at default to 11 protons, salt, if you wish to make it silver, 47 (a prime) protons, do: diff --git a/2004/jdalbec/index.html b/2004/jdalbec/index.html index da9ced0a3..484750e8b 100644 --- a/2004/jdalbec/index.html +++ b/2004/jdalbec/index.html @@ -416,7 +416,7 @@ that don’t end up having too many line breaks it also makes it easier to see which line it is on.

      Alternate build:

          make alt
      -

      The macro Ag (silver) controls how +

      The macro Ag controls how many number of lines to print on a line. Set at default to 11 protons, salt, if you wish to make it silver, 47 (a prime) protons, do:

          make clobber Ag=47 alt
      diff --git a/2004/vik2/README.md b/2004/vik2/README.md index 297d0f47b..09a5da7d6 100644 --- a/2004/vik2/README.md +++ b/2004/vik2/README.md @@ -157,7 +157,7 @@ Then run the program to reveal all prime numbers up to 32 (if you used I wasn't able to compile the full program which calculates [prime numbers](https://en.wikipedia.org/wiki/Prime_number) up to 1024 using GNU `cpp` -(or any other [pre-processor](https://en.wikipedia.org/wiki/C_preprocessor)) so +(or any other [pre-processor](https://en.wikipedia.org/wiki/C_preprocessor) tool) so I had to write my own. Knowing how the program works it was quite easy to reduce the compilation time from several hours to about one second. I also added some statistics to my home made pre-processor and I found that calculating prime diff --git a/2004/vik2/index.html b/2004/vik2/index.html index b92916db1..b309fcf06 100644 --- a/2004/vik2/index.html +++ b/2004/vik2/index.html @@ -504,7 +504,7 @@ work. This will take some time….

      Verification

      I wasn’t able to compile the full program which calculates prime numbers up to 1024 using GNU cpp -(or any other pre-processor) so +(or any other pre-processor tool) so I had to write my own. Knowing how the program works it was quite easy to reduce the compilation time from several hours to about one second. I also added some statistics to my home made pre-processor and I found that calculating prime diff --git a/2005/aidan/README.md b/2005/aidan/README.md index 8b872d19c..e87325108 100644 --- a/2005/aidan/README.md +++ b/2005/aidan/README.md @@ -111,7 +111,7 @@ it as you wish, though please give me credit. ### What is a sudoku? (If you know, feel free to skip this section. Get more details from [the -wikipedia entry](http://en.wikipedia.org/wiki/Sudoku)) +wikipedia entry](http://en.wikipedia.org/wiki/Sudoku). A sudoku is a type of logic puzzle. You are given a grid of 9x9 boxes, some of which contain digits. This is divided into a 3x3 set up, e.g. (from the @@ -177,7 +177,7 @@ program generated): ``` Be warned - it's evil! (I certainly haven't been able to solve it by hand. The -brute-force program given above, `sudoku-bfi.c` ([aidan.alt.c](%%REPO_URL%%/2005/aidan/aidan.alt.c)), +brute-force program given above, `sudoku-bfi.c`, [aidan.alt.c](%%REPO_URL%%/2005/aidan/aidan.alt.c), also has trouble - it took 66 seconds to solve it - but probably for different reasons. That's the worst performance I've had from brute-force so far!) diff --git a/2005/aidan/index.html b/2005/aidan/index.html index b89d2f541..7989e5818 100644 --- a/2005/aidan/index.html +++ b/2005/aidan/index.html @@ -457,7 +457,7 @@ Go find some unpopular multinational to sue instead.

      it as you wish, though please give me credit.

      What is a sudoku?

      (If you know, feel free to skip this section. Get more details from the -wikipedia entry)

      +wikipedia entry.

      A sudoku is a type of logic puzzle. You are given a grid of 9x9 boxes, some of which contain digits. This is divided into a 3x3 set up, e.g. (from the Wikipedia article - fairly easy):

      @@ -507,7 +507,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

diff --git a/2005/anon/README.md b/2005/anon/README.md index 37d14b8f5..31e18b56c 100644 --- a/2005/anon/README.md +++ b/2005/anon/README.md @@ -222,7 +222,7 @@ isolated `||` on line 68? But wait... why aren't any statements terminated by semicolons? Why is there only ONE semicolon in the entire program?! Why is the author opening nested -blocks by such strange things as `||` and `(`, and closing them by `||` and `))`? The +blocks by such strange things as `||` and `(`, and closing them by `||` and `)`? The `for` loop isn't a `for` loop! The `do` loop isn't a `do` loop! Or... are they? Well, the `for` loop is defined in terms of a `while` loop. But wait, the `while` loop is defined in terms of the `do` loop. And the `do` loop is defined in terms of ... diff --git a/2005/anon/index.html b/2005/anon/index.html index 686b7e7ea..47b29de89 100644 --- a/2005/anon/index.html +++ b/2005/anon/index.html @@ -525,7 +525,7 @@ are there such strange statements, like that empty string on line 65, or that isolated || on line 68?

But wait… why aren’t any statements terminated by semicolons? Why is there only ONE semicolon in the entire program?! Why is the author opening nested -blocks by such strange things as || and (, and closing them by || and ))? The +blocks by such strange things as || and (, and closing them by || and )? The for loop isn’t a for loop! The do loop isn’t a do loop! Or… are they? Well, the for loop is defined in terms of a while loop. But wait, the while loop is defined in terms of the do loop. And the do loop is defined in terms of … diff --git a/2005/boutines/README.md b/2005/boutines/README.md index ae60f02e6..daafc5f18 100644 --- a/2005/boutines/README.md +++ b/2005/boutines/README.md @@ -121,7 +121,7 @@ diagrams](https://en.wikipedia.org/wiki/Voronoi_diagram), see [Qhull](http://www.qhull.org/), [CGAL](https://www.cgal.org) and the like but you may still encounter large output volumes (and have to handle some sort of clipping in order to represent properly infinite regions of the diagram in -[SVG](https://www.w3.org/TR/SVG11/expanded-toc.html)). +[SVG](https://www.w3.org/TR/SVG11/expanded-toc.html). Beware, compilation may report warnings about precision loss, linting may be a disaster, but the code should remain portable, and the output accurate enough diff --git a/2005/boutines/index.html b/2005/boutines/index.html index f4fb2dd83..230692778 100644 --- a/2005/boutines/index.html +++ b/2005/boutines/index.html @@ -468,7 +468,7 @@ diagrams, see Qhull, CGAL and the like but you may still encounter large output volumes (and have to handle some sort of clipping in order to represent properly infinite regions of the diagram in -SVG).

+SVG.

Beware, compilation may report warnings about precision loss, linting may be a disaster, but the code should remain portable, and the output accurate enough for most devices (including many inkjet printers). If you ever miss precision diff --git a/2005/timwi/README.md b/2005/timwi/README.md index 85ccb6008..0ec3f5ec8 100644 --- a/2005/timwi/README.md +++ b/2005/timwi/README.md @@ -28,7 +28,7 @@ simple 3-character fix will make it slightly less so. Quite a few BF programs found on the Net expect byte-based memory, quite a few exceed the capacity of this interpreter, but there are many that work. Some -small [quines](https://en.wikipedia.org/wiki/Quine_(computing)) work, some don't. +small [quines](https://en.wikipedia.org/wiki/Quine_(computing)) work, some don't. Why? diff --git a/2005/toledo/README.md b/2005/toledo/README.md index 21a6558d0..3807b5042 100644 --- a/2005/toledo/README.md +++ b/2005/toledo/README.md @@ -68,14 +68,14 @@ get the first mode, run the program without arguments: ``` The other mode is accessible running the program with one argument -(5-[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)) +(5-[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)) analysis): ``` ./toledo a ``` -Two arguments for 6-[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)) +Two arguments for 6-[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)) analysis: ``` @@ -83,7 +83,7 @@ analysis: ``` And each successive argument will analyze one -[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)) more. There is no ply +[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)) more. There is no ply limit, but beyond 7 ply is very slow, try it at your own risk and computing time. @@ -125,7 +125,7 @@ algorithms. The interface accounts for only a fraction of the code, the core does multiples functions: it is called recursively to analyze and evaluate each -[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)), does [alpha-beta +[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)), does [alpha-beta pruning](https://en.wikipedia.org/wiki/Alpha-beta_pruning), move generation, machine playing, check detection, illegal move verification and does moves after they are verified. @@ -142,7 +142,7 @@ Other features are: * [Checkmate](https://en.wikipedia.org/wiki/Checkmate) detection. * Stalemate detection. * Computer is tough (check -7-[ply](https://en.wikipedia.org/wiki/Ply_(game_theory))) and even in 5 ply can give a surprise to +7-[ply](https://en.wikipedia.org/wiki/Ply_(game_theory)) and even in 5 ply can give a surprise to amateur players. diff --git a/2005/toledo/index.html b/2005/toledo/index.html index 8ec7b607f..dd25bdedd 100644 --- a/2005/toledo/index.html +++ b/2005/toledo/index.html @@ -475,7 +475,7 @@ computer can do all legal chess moves.

  • Checkmate detection.
  • Stalemate detection.
  • Computer is tough (check -7-ply) and even in 5 ply can give a surprise to +7-ply and even in 5 ply can give a surprise to amateur players.
  • Obfuscation tricks

    diff --git a/2005/vik/README.md b/2005/vik/README.md index f8277506d..5ebd6dfef 100644 --- a/2005/vik/README.md +++ b/2005/vik/README.md @@ -29,7 +29,7 @@ sure to pay attention to commas! :-) ## Author's remarks: This entry is a [Wolfenstein](https://en.wikipedia.org/wiki/Wolfenstein) style -[graphics engine](https://en.wikipedia.org/wiki/Rendering_(computer_graphics)) +[graphics engine](https://en.wikipedia.org/wiki/Rendering_(computer_graphics)) where a user can navigate in a [3D](https://en.wikipedia.org/wiki/3D_computer_graphics) world. The [maze](https://en.wikipedia.org/wiki/Maze) has walls with [bitmap diff --git a/2006/birken/README.md b/2006/birken/README.md index 700bcda38..fd1bbec3d 100644 --- a/2006/birken/README.md +++ b/2006/birken/README.md @@ -41,7 +41,7 @@ A: Electronic Design Automation - Mechanical Abstract Machine Emulator What is TOFU? It's not a veggie friendly food, nor it is [Verilog](https://en.wikipedia.org/wiki/Verilog) or [VHDL](https://en.wikipedia.org/wiki/VHDL) It is not even -[Pascal](https://en.wikipedia.org/wiki/Pascal_(programming_language))! +[Pascal](https://en.wikipedia.org/wiki/Pascal_(programming_language))! NOTE: On some systems, `file(1)` claims one of the `.tofu` files is Pascal source. :-) @@ -66,7 +66,7 @@ circuits)? This program is my tribute to the early computer pioneers like tool designed to introduce students to digital circuit theory using technology that was considered state of the art in the 1940s! To enable you to fully understand the capabilities of this circuit simulator, I have included a 55 page -manual ([info.pdf](info.pdf)) in the info portion of the entry submission. +manual, [info.pdf](info.pdf), in the info portion of the entry submission. The primary obfuscation is the data structure chosen for parsing the input file and for executing the simulation. Oh man... coding that diff --git a/2006/birken/index.html b/2006/birken/index.html index 24cbad2b4..53ff0f8c4 100644 --- a/2006/birken/index.html +++ b/2006/birken/index.html @@ -432,7 +432,7 @@ circuits)? This program is my tribute to the early computer pioneers like tool designed to introduce students to digital circuit theory using technology that was considered state of the art in the 1940s! To enable you to fully understand the capabilities of this circuit simulator, I have included a 55 page -manual (info.pdf) in the info portion of the entry submission.

    +manual, info.pdf, in the info portion of the entry submission.

    The primary obfuscation is the data structure chosen for parsing the input file and for executing the simulation. Oh man… coding that data structure gave me such a bad headache. But, I figure, who needs diff --git a/2006/meyer/README.md b/2006/meyer/README.md index 32a0e64f9..c01e2c009 100644 --- a/2006/meyer/README.md +++ b/2006/meyer/README.md @@ -89,10 +89,10 @@ include: - constructors (invoked by the new operator). - new operators (every class gets its own new operator at compile time). - virtual method tables (all the virtual method tables have been combined to a -single [vtable](https://en.wikipedia.org/wiki/Virtual_method_table)). +single [vtable](https://en.wikipedia.org/wiki/Virtual_method_table) table). - runtime method binding. -- [inheritance](https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming)) -and [polymorphism](https://en.wikipedia.org/wiki/Polymorphism_(computer_science)). +- [inheritance](https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming)) +and [polymorphism](https://en.wikipedia.org/wiki/Polymorphism_(computer_science)). It is left as an exercise to the reader to find a corresponding implementation in a popular object-oriented programming language. diff --git a/2006/meyer/index.html b/2006/meyer/index.html index a89086fc4..42d4041f6 100644 --- a/2006/meyer/index.html +++ b/2006/meyer/index.html @@ -450,7 +450,7 @@ include:

  • constructors (invoked by the new operator).
  • new operators (every class gets its own new operator at compile time).
  • virtual method tables (all the virtual method tables have been combined to a -single vtable).
  • +single vtable table).
  • runtime method binding.
  • inheritance and polymorphism.
  • diff --git a/2006/monge/README.md b/2006/monge/README.md index a23c572c7..62d035da0 100644 --- a/2006/monge/README.md +++ b/2006/monge/README.md @@ -135,7 +135,7 @@ separated list of assignments to do once per pixel, and the second a semicolon separated list of assignments and conditions that will be executed (and conditions checked) for each iteration (up to the maximum). Using the left and right mouse buttons you will be able to zoom in and out (a la -[XaoS](https://github.com/xaos-project/XaoS)), the zooming algorithm is a bit +[XaoS](https://github.com/xaos-project/XaoS) project), the zooming algorithm is a bit slower than `XaoS`'s but it should give slightly better results. Formulas can use all `a-z` (lowercase) variables, and the special diff --git a/2006/monge/index.html b/2006/monge/index.html index c4fafcdf3..b6fc01b69 100644 --- a/2006/monge/index.html +++ b/2006/monge/index.html @@ -468,7 +468,7 @@ separated list of assignments to do once per pixel, and the second a semicolon separated list of assignments and conditions that will be executed (and conditions checked) for each iteration (up to the maximum). Using the left and right mouse buttons you will be able to zoom in and out (a la -XaoS), the zooming algorithm is a bit +XaoS project), the zooming algorithm is a bit slower than XaoS’s but it should give slightly better results.

    Formulas can use all a-z (lowercase) variables, and the special variables c and i are respectively set by default to the diff --git a/2006/toledo2/README.md b/2006/toledo2/README.md index 0042d36d7..70d8d679f 100644 --- a/2006/toledo2/README.md +++ b/2006/toledo2/README.md @@ -102,7 +102,7 @@ and a disk controller, just like at the start of the personal computers revolution (circa 1975). It needs an initial memory image to do something usable, so along with it you -will find two files: ([C.BASIC](%%REPO_URL%%/2006/toledo2/C.BASIC) and [C.BIOS](%%REPO_URL%%/2006/toledo2/C.BIOS)). Rename +will find two files: [C.BASIC](%%REPO_URL%%/2006/toledo2/C.BASIC) and [C.BIOS](%%REPO_URL%%/2006/toledo2/C.BIOS). Rename [C.BASIC](%%REPO_URL%%/2006/toledo2/C.BASIC) to `C` (NOTE from the judges: running `make` will do this for you), run the emulator, and et voila! you have the public domain Palo Alto [Tiny BASIC](https://en.wikipedia.org/wiki/Tiny_BASIC) (by Li-Chen Wang), published in diff --git a/2006/toledo2/index.html b/2006/toledo2/index.html index 1b149ace8..9a01910b1 100644 --- a/2006/toledo2/index.html +++ b/2006/toledo2/index.html @@ -452,7 +452,7 @@ removes those files extracted from the KAYPROII.ZIP.

    and a disk controller, just like at the start of the personal computers revolution (circa 1975).

    It needs an initial memory image to do something usable, so along with it you -will find two files: (C.BASIC and C.BIOS). Rename +will find two files: C.BASIC and C.BIOS. Rename C.BASIC to C (NOTE from the judges: running make will do this for you), run the emulator, and et voila! you have the public domain Palo Alto Tiny BASIC (by Li-Chen Wang), published in diff --git a/2006/toledo3/README.md b/2006/toledo3/README.md index 7ba6d0c8f..a81a30264 100644 --- a/2006/toledo3/README.md +++ b/2006/toledo3/README.md @@ -82,7 +82,7 @@ a mistake and the computer surpasses you. ;) ### WHAT ABOUT THE ENGINE Uses an [alpha-beta](https://en.wikipedia.org/wiki/Alpha_Beta) search up to a -depth of 3+level [ply](https://en.wikipedia.org/wiki/Ply_(game_theory)), +depth of 3+level [ply](https://en.wikipedia.org/wiki/Ply_(game_theory)), extended with quiescence search, that helps playing strength, something around 1500 ELO (level 1) to 1700 ELO (level 3). diff --git a/2011/blakely/README.md b/2011/blakely/README.md index 7e1a4a79f..8333e3f18 100644 --- a/2011/blakely/README.md +++ b/2011/blakely/README.md @@ -33,7 +33,7 @@ threshold. ## Judges' remarks: This program plays [Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) -(see also [here](https://conwaylife.com)), computes Pi to 16 digits +(see [here](https://conwaylife.com) also), computes Pi to 16 digits if given its own source as input, and allows to check if your garden is a [Garden of Eden](http://en.wikipedia.org/wiki/Garden_of_Eden_%28cellular_automaton%29), all in one source. diff --git a/2011/blakely/index.html b/2011/blakely/index.html index 9c74d7d30..346d52920 100644 --- a/2011/blakely/index.html +++ b/2011/blakely/index.html @@ -410,7 +410,7 @@ Location: GB - United Kingdom of Great threshold.

    Judges’ remarks:

    This program plays Life -(see also here), computes Pi to 16 digits +(see here also), computes Pi to 16 digits if given its own source as input, and allows to check if your garden is a Garden of Eden, all in one source.

    If you have enough time to spare, put the plan of your garden in a text file, diff --git a/2011/dlowe/README.md b/2011/dlowe/README.md index cd913e454..7427478cc 100644 --- a/2011/dlowe/README.md +++ b/2011/dlowe/README.md @@ -175,9 +175,9 @@ to help the IOCCC judges. Here's to shorter, more frequent contests! ### Description -This is a multilayer [perceptron](https://en.wikipedia.org/wiki/Perceptron) (a +This is a multilayer [perceptron](https://en.wikipedia.org/wiki/Perceptron), a [feedforward artificial neural -network](https://en.wikipedia.org/wiki/Feedforward_neural_network)) +network](https://en.wikipedia.org/wiki/Feedforward_neural_network), which can be trained, using on-line [backpropagation](https://en.wikipedia.org/wiki/Backpropagation), to classify input files. diff --git a/2011/dlowe/index.html b/2011/dlowe/index.html index d2dbcfd24..0cf7e1572 100644 --- a/2011/dlowe/index.html +++ b/2011/dlowe/index.html @@ -490,9 +490,9 @@ Data that XORs to 1

    intelligent judging tool to help the IOCCC judges. Here’s to shorter, more frequent contests!

    Description

    -

    This is a multilayer perceptron (a +

    This is a multilayer perceptron, a feedforward artificial neural -network) +network, which can be trained, using on-line backpropagation, to classify input files.

    It has a fixed topology of 2^16 input neurons, 6 hidden neurons and 1 output diff --git a/2011/fredriksson/README.md b/2011/fredriksson/README.md index 9c04ae94d..49cf10318 100644 --- a/2011/fredriksson/README.md +++ b/2011/fredriksson/README.md @@ -75,8 +75,8 @@ This version of `grep` recognizes two more options, not present in normal `grep` implementations: * `-kN` Permit `N` insertions, deletions or mismatches of characters in the - matches (aka - [edit-distance](https://en.wikipedia.org/wiki/Edit_distance)). E.g. + matches, aka + [edit-distance](https://en.wikipedia.org/wiki/Edit_distance). E.g., "`obfuscated`" matches "`obfuscation`" with one deletion and two mismatches. Likewise, "`obfuscate`" and "`oversimplify`" match with 7 @@ -119,7 +119,7 @@ expressions by putting `]` as the first character, and putting `-` last. ### Other uses -* You can use this in place of [cat](https://en.wikipedia.org/wiki/Cat_(Unix)). +* You can use this in place of [cat](https://en.wikipedia.org/wiki/Cat_(Unix)). Just say diff --git a/2011/fredriksson/index.html b/2011/fredriksson/index.html index 601eb4bbc..cd8d5a425 100644 --- a/2011/fredriksson/index.html +++ b/2011/fredriksson/index.html @@ -436,8 +436,8 @@ The options -i, -c, -v and -ngrep implementations:

    • -kN Permit N insertions, deletions or mismatches of characters in the -matches (aka -edit-distance). E.g. +matches, aka +edit-distance. E.g., “obfuscated” matches “obfuscation” with one deletion and two mismatches. Likewise, “obfuscate” and “oversimplify” match with 7 diff --git a/2011/richards/README.md b/2011/richards/README.md index 0a34636f5..95aca8882 100644 --- a/2011/richards/README.md +++ b/2011/richards/README.md @@ -33,7 +33,7 @@ For more detailed information see [2011 richards bugs](../../bugs.html#2011_rich ## Judges' remarks: Oh no, yet another -[dc](https://en.wikipedia.org/wiki/Dc_(computer_program))-style calculator? (see +[dc](https://en.wikipedia.org/wiki/Dc_(computer_program))-style calculator? (see [2000/dlowe](../../2000/dlowe/index.html) using an embedded Perl interpreter and deemed `Worst Abuse of the Rules`). Well, this one does it (expression calculation, that is, not the rule abuse) in a different way. The author claims that his calculator @@ -44,7 +44,7 @@ without attempting to unravel the source? ## Author's remarks: This is an implementation of the classic UNIX -[dc](https://en.wikipedia.org/wiki/Dc_(computer_program)) command, the +[dc](https://en.wikipedia.org/wiki/Dc_(computer_program)) command, the [reverse Polish](https://en.wikipedia.org/wiki/Reverse_Polish_notation) calculator. Actually it's a pretty bad implementation, since it only implements 32-bit integers (well, `sizeof(int)`-sized integers). It only implements the diff --git a/2011/toledo/README.md b/2011/toledo/README.md index c91171a96..a18f2c427 100644 --- a/2011/toledo/README.md +++ b/2011/toledo/README.md @@ -18,7 +18,7 @@ Windows](%%REPO_URL%%/2011/toledo/toledo.alt2.c). See [Alternate code](#alternat ``` -## Alternate code: +## Alternate code The first alt version, [toledo.alt.c](%%REPO_URL%%/2011/toledo/toledo.alt.c), allows you to reconfigure the controls and the dimensions more easily. @@ -191,7 +191,7 @@ Not really, just kidding :D * It is written in the only true C: K&R, and no, that doesn't mean Katherine & Rose. * Vectorial scalable graphics: do you want a bigger viewport? Change variables - `M` and `N` (see the [alternate code](#alternate-code)). + `M` and `N` (see the [alternate](#alternate-code) code). * Half of the program is formatted as 3D cube. View with tabs at 8 columns and a square font. * The other half of the program is unprintable source code, so no typing from diff --git a/2011/toledo/index.html b/2011/toledo/index.html index 84c29c830..82a696171 100644 --- a/2011/toledo/index.html +++ b/2011/toledo/index.html @@ -405,7 +405,7 @@ controls and size and Alternate code below.

      To use:

          ./toledo
      -

      Alternate code:

      +

      Alternate code

      The first alt version, toledo.alt.c, allows you to reconfigure the controls and the dimensions more easily.

      The second version, toledo.alt2.c, should work for Windows but @@ -527,7 +527,7 @@ x86-64 512 MB).

    • It is written in the only true C: K&R, and no, that doesn’t mean Katherine & Rose.
    • Vectorial scalable graphics: do you want a bigger viewport? Change variables -M and N (see the alternate code).
    • +M and N (see the alternate code).
    • Half of the program is formatted as 3D cube. View with tabs at 8 columns and a square font.
    • The other half of the program is unprintable source code, so no typing from diff --git a/2011/zucker/README.md b/2011/zucker/README.md index eab5c9ab7..54c8b70eb 100644 --- a/2011/zucker/README.md +++ b/2011/zucker/README.md @@ -156,7 +156,7 @@ direction and surface normal. #### Further details (contains spoilers): The program is not quite a traditional [ray -tracer](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)), but a "[sphere +tracer](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)), but a "[sphere tracer](sphere-tracing.pdf)" which uses distance fields to encode proximity to objects in the scene. Using sphere tracing to compute visibility instead of analytic ray tracing provides two advantages: first, it greatly eases the diff --git a/2012/README.md b/2012/README.md index d0a7669c1..ba1e6fd17 100644 --- a/2012/README.md +++ b/2012/README.md @@ -56,7 +56,7 @@ But don't ignore the other winning entries! There are games, utilities, eye candy, calculators and graphical tools to explore. This year, Yusuke Endoh won with two entries, one of which -([endoh1](endoh1/index.html)) won the special Honorable mention award. Eight of +([endoh1](endoh1/index.html) entry) won the special Honorable mention award. Eight of the winning entries were from people who won in previous years. This year we had a number of authors from Asia. We saw our second diff --git a/2012/blakely/README.md b/2012/blakely/README.md index ddb3b3359..b4fc79669 100644 --- a/2012/blakely/README.md +++ b/2012/blakely/README.md @@ -35,7 +35,7 @@ For more detailed information see [2012 blakely bugs](../../bugs.html#2012_blake Several IOCCC themes ([RPN calculator](https://en.wikipedia.org/wiki/Reverse_Polish_notation), animated [GIF](https://en.wikipedia.org/wiki/GIF) generator, [ray -tracing](https://en.wikipedia.org/wiki/Ray_tracing_(graphics))) in one package! +tracing](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)) graphics) in one package! Very impressive! The checkerboard pattern in the output can be broken. Could you figure out how? @@ -49,7 +49,7 @@ Larger GIF files confuse some image viewers. This program renders a generic [RPN](https://en.wikipedia.org/wiki/Reverse_Polish_notation) expression in -[ray-traced](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)) animated +[ray-traced](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)) animated [GIF](https://en.wikipedia.org/wiki/GIF) form. The expression in spatial variables `x` and `y` is specified on the command-line with the required resolution, and an animated GIF showing a fly-around of the resulting surface is diff --git a/2012/blakely/index.html b/2012/blakely/index.html index 9e5f79962..4f9cea72a 100644 --- a/2012/blakely/index.html +++ b/2012/blakely/index.html @@ -411,7 +411,7 @@ Location: GB - United Kingdom of Great

      Several IOCCC themes (RPN calculator, animated GIF generator, ray -tracing) in one package! +tracing graphics) in one package! Very impressive!

      The checkerboard pattern in the output can be broken. Could you figure out how?

      Larger GIF files confuse some image viewers.

      diff --git a/2012/deckmyn/README.md b/2012/deckmyn/README.md index a16ebfc04..af2e1b4c6 100644 --- a/2012/deckmyn/README.md +++ b/2012/deckmyn/README.md @@ -108,8 +108,8 @@ be `"`` ` ``cat deckmyn.c`` ` ``"`. The second command line argument is the music itself. This is, again, a string, not a file name. All music signs are entered as tokens of exactly 3 characters. The code is very sensitive to bad spacing! So for instance, if you use a file to -write the music (e.g. [example\_greensleeves](%%REPO_URL%%/2012/deckmyn/example_greensleeves)), you should -keep in mind that newline is also a character! +write the music (e.g., [example\_greensleeves](%%REPO_URL%%/2012/deckmyn/example_greensleeves) file), +you should keep in mind that newline is also a character! ### Internals diff --git a/2012/deckmyn/index.html b/2012/deckmyn/index.html index 25b378769..e6709c805 100644 --- a/2012/deckmyn/index.html +++ b/2012/deckmyn/index.html @@ -452,8 +452,8 @@ be "`` cat deckmyn.c ``".

      The second command line argument is the music itself. This is, again, a string, not a file name. All music signs are entered as tokens of exactly 3 characters. The code is very sensitive to bad spacing! So for instance, if you use a file to -write the music (e.g. example_greensleeves), you should -keep in mind that newline is also a character!

      +write the music (e.g., example_greensleeves file), +you should keep in mind that newline is also a character!

      Internals

      To minimise the memory footprint, this program has no variable declarations at all, except for the arguments to main(). The only available memory space is diff --git a/2012/endoh1/README.md b/2012/endoh1/README.md index 3292f7eaa..23b69ec41 100644 --- a/2012/endoh1/README.md +++ b/2012/endoh1/README.md @@ -291,8 +291,8 @@ casting) it to an integer-type variable. [pour-out.txt](%%REPO_URL%%/2012/endoh1/pour-out.txt) pours you a cup of tea. -[tanada.txt](%%REPO_URL%%/2012/endoh1/tanada.txt) simulates "Terrace farming". ("Tanada" means a "[terraced rice -fields](https://en.wikipedia.org/wiki/Terrace_(earthworks))" in Japanese.) +[tanada.txt](%%REPO_URL%%/2012/endoh1/tanada.txt) simulates "Terrace farming". ("Tanada" means a +"[terraced rice](https://en.wikipedia.org/wiki/Terrace_(earthworks) fields)" in Japanese.) [clock.txt](%%REPO_URL%%/2012/endoh1/clock.txt) is a "water" clock created by HAMANO Tsukasa. diff --git a/2012/endoh1/index.html b/2012/endoh1/index.html index c36e60c6d..2814a08bc 100644 --- a/2012/endoh1/index.html +++ b/2012/endoh1/index.html @@ -570,8 +570,8 @@ casting) it to an integer-type variable.

      logo.txt is a source of the logo in this remark file.

      column.txt is a water column collapse, which is a popular demo of SPH.

      pour-out.txt pours you a cup of tea.

      -

      tanada.txt simulates “Terrace farming”. (“Tanada” means a “terraced rice -fields” in Japanese.)

      +

      tanada.txt simulates “Terrace farming”. (“Tanada” means a +“terraced rice” in Japanese.)

      clock.txt is a “water” clock created by HAMANO Tsukasa.

      Other *.txt files are from the judges.

      endoh1_color.c is a variant that shows the density by using terminal 256 diff --git a/2012/endoh2/README.md b/2012/endoh2/README.md index 295aa608c..ae8abb594 100644 --- a/2012/endoh2/README.md +++ b/2012/endoh2/README.md @@ -34,7 +34,7 @@ and: ## Judges' remarks: A -[pi](https://en.wikipedia.org/wiki/Pi)/[e](https://en.wikipedia.org/wiki/E_(mathematical_constant)) +[pi](https://en.wikipedia.org/wiki/Pi)/[e](https://en.wikipedia.org/wiki/E_(mathematical_constant)) printing quasi-[quine](https://en.wikipedia.org/wiki/Quine_(computing) in [ASCII art](https://en.wikipedia.org/wiki/ASCII_art) with a compressed font in it; what else to wish for in this program? [Virtual @@ -47,7 +47,7 @@ Yeah, "Again". Sorry. But I don't feel guilty or uncomfortable. This entry is based on 'over-used themes' such as self reproducing program and [pi](https://en.wikipedia.org/wiki/Pi) or -[e](https://en.wikipedia.org/wiki/E_(mathematical_constant))) computation. I +[e](https://en.wikipedia.org/wiki/E_(mathematical_constant() computation. I know you're tired of them. But have you ever seen them **all-in-one**? @@ -65,18 +65,18 @@ This program generates a new program in the shape of the Greek letter One more thing... When you give a command line argument `e` to the first program, the generated one will compute [Napier's -constant](https://en.wikipedia.org/wiki/E_(mathematical_constant))) +constant](https://en.wikipedia.org/wiki/E_(mathematical_constant)) rather than pi. ### Obfuscation This program itself is in the shape of a -[spigot](https://en.wikipedia.org/wiki/Tap_(valve)). This is derived as an +[spigot](https://en.wikipedia.org/wiki/Tap_(valve)). This is derived as an analogy with [spigot algorithm](https://en.wikipedia.org/wiki/Spigot_algorithm) which infinitely computes the value of a mathematical constant such as [pi](https://en.wikipedia.org/wiki/Pi) or -[e](https://en.wikipedia.org/wiki/E_(mathematical_constant)). +[e](https://en.wikipedia.org/wiki/E_(mathematical_constant)). The two sets of programs, `314*.c` and `271*.c`, are almost the same except their shape and constant computational part. I tailored the @@ -85,7 +85,7 @@ tweaking the computational order and adding meaningless code fragments. On the other hand, to make it fit inside one screen (80 x 25), my program is shortened properly, more than it looks. (As you may know, -[quines](https://en.wikipedia.org/wiki/Quine_(computing)) need to make its +[quines](https://en.wikipedia.org/wiki/Quine_(computing)) need to make its program size doubled.) For example, this program involves 3x5 bitmap font data of ten characters (`0` -- `9`), as just 20 bytes: `G1%xJ{;Q7wunmuGuu%uu`. We can decode character `n` as `275*s[n+10] - 8*s[n] - 8`. I solved the system of diff --git a/2012/endoh2/index.html b/2012/endoh2/index.html index f39f880ef..02f9f2081 100644 --- a/2012/endoh2/index.html +++ b/2012/endoh2/index.html @@ -421,7 +421,7 @@ machine emulation?

      Yeah, “Again”. Sorry. But I don’t feel guilty or uncomfortable.

      This entry is based on ‘over-used themes’ such as self reproducing program and pi or -e) computation. I +e computation. I know you’re tired of them.

      But have you ever seen them all-in-one?

      What it is

      @@ -436,7 +436,7 @@ know you’re tired of them.

    One more thing… When you give a command line argument e to the first program, the generated one will compute Napier’s -constant) +constant rather than pi.

    Obfuscation

    This program itself is in the shape of a diff --git a/2012/hamano/README.md b/2012/hamano/README.md index 0526f0d9a..028aa86b8 100644 --- a/2012/hamano/README.md +++ b/2012/hamano/README.md @@ -65,7 +65,7 @@ confused. The results can be viewed with Acrobat Reader, [evince](http://en.wikipedia.org/wiki/Evince) and Apple's -[Preview](https://en.wikipedia.org/wiki/Preview_(macOS)). +[Preview](https://en.wikipedia.org/wiki/Preview_(macOS)). The updated version can also be viewed using Ghostscript. diff --git a/2012/index.html b/2012/index.html index c831b3729..0fe8f7856 100644 --- a/2012/index.html +++ b/2012/index.html @@ -421,7 +421,7 @@ very likely say wow as we did!

    But don’t ignore the other winning entries! There are games, utilities, eye candy, calculators and graphical tools to explore.

    This year, Yusuke Endoh won with two entries, one of which -(endoh1) won the special Honorable mention award. Eight of +(endoh1 entry) won the special Honorable mention award. Eight of the winning entries were from people who won in previous years.

    This year we had a number of authors from Asia. We saw our second authors from China and first from Korea. We are pleased to see diff --git a/2012/omoikane/README.md b/2012/omoikane/README.md index 490f9c171..c5adcf9a2 100644 --- a/2012/omoikane/README.md +++ b/2012/omoikane/README.md @@ -153,7 +153,7 @@ Output code has these features: * Uses a fairly efficient encoding scheme, better than `uuencode` for files larger than ~13K, and better than `base64` for files larger than 20K. -* Encryption with [ISAAC](https://en.wikipedia.org/wiki/ISAAC_(cipher)), a +* Encryption with [ISAAC](https://en.wikipedia.org/wiki/ISAAC_(cipher)), a cryptographically secure pseudorandom number generator. * Trivial 3 language polyglot. diff --git a/2012/tromp/README.md b/2012/tromp/README.md index 928b6030d..94a17b119 100644 --- a/2012/tromp/README.md +++ b/2012/tromp/README.md @@ -71,8 +71,8 @@ representation in lambda calculus), and translates the evaluated result back into a stream of bits to be output. Lambda is encoded as 00, application as 01, and the variable bound by the `n`th -enclosing lambda (denoted `n` in so-called [De Bruijn -notation](https://en.wikipedia.org/wiki/De_Bruijn_notation)) as `1^{n}0`. +enclosing lambda (denoted `n` in so-called [De Bruijn](https://en.wikipedia.org/wiki/De_Bruijn_notation) +notation) as `1^{n}0`. That's all there is to [BLC](https://tromp.github.io/cl/Binary_lambda_calculus.html)! @@ -110,8 +110,8 @@ The size of the term space is fixed at compile time with `-DA`. ### A half byte `cat` -The shortest (closed) lambda calculus term is `\x x (\ 1` in [De Bruijn -notation](https://en.wikipedia.org/wiki/De_Bruijn_notation)) which is the +The shortest (closed) lambda calculus term is `\x x (\ 1` in +[De Bruijn](https://en.wikipedia.org/wiki/De_Bruijn_notation) notation which is the identity function. When its encoding `0010` is fed into the universal machine, it will simply copy the input to the output (well, not that simply, since each byte is smashed to bits and rebuilt from scratch). Voila: a half byte cat: diff --git a/2012/tromp/index.html b/2012/tromp/index.html index 4144acef1..c3ce046cf 100644 --- a/2012/tromp/index.html +++ b/2012/tromp/index.html @@ -435,8 +435,8 @@ the remainder of input (translated to a lazy list of representation in lambda calculus), and translates the evaluated result back into a stream of bits to be output.

    Lambda is encoded as 00, application as 01, and the variable bound by the nth -enclosing lambda (denoted n in so-called De Bruijn -notation) as 1^{n}0. +enclosing lambda (denoted n in so-called De Bruijn +notation) as 1^{n}0. That’s all there is to BLC!

    For example the encoding of lambda term S = \x \y \z (x z) (y z), @@ -459,8 +459,8 @@ bit of input, and using characters 0 and 1 for output. 1,2,3,4,8,9: result not in list form

    The size of the term space is fixed at compile time with -DA.

    A half byte cat

    -

    The shortest (closed) lambda calculus term is \x x (\ 1 in De Bruijn -notation) which is the +

    The shortest (closed) lambda calculus term is \x x (\ 1 in +De Bruijn notation which is the identity function. When its encoding 0010 is fed into the universal machine, it will simply copy the input to the output (well, not that simply, since each byte is smashed to bits and rebuilt from scratch). Voila: a half byte cat:

    diff --git a/2012/zeitak/README.md b/2012/zeitak/README.md index 475d10ba1..48c68a1fe 100644 --- a/2012/zeitak/README.md +++ b/2012/zeitak/README.md @@ -31,7 +31,7 @@ will not detect multiple issues. ## Alternate code: -The alternate code, [zeitak.alt.c](z%%REPO_URL%%/2012/zeitak/eitak.alt.c), is a version that was slightly +The alternate code, [zeitak.alt.c](%%REPO_URL%%/2012/zeitak/zeitak.alt.c), is a version that was slightly deobfuscated by the author. You may find reading it helpful in your attempt to understand this extremely subtle entry. diff --git a/2012/zeitak/index.html b/2012/zeitak/index.html index 6a61ed06c..204e171bd 100644 --- a/2012/zeitak/index.html +++ b/2012/zeitak/index.html @@ -411,7 +411,7 @@ text files that are not code.

    NOTE: the program prints an error and exits on the first nesting error so it will not detect multiple issues.

    Alternate code:

    -

    The alternate code, zeitak.alt.c, is a version that was slightly +

    The alternate code, zeitak.alt.c, is a version that was slightly deobfuscated by the author. You may find reading it helpful in your attempt to understand this extremely subtle entry.

    Alternate build:

    diff --git a/2013/birken/README.md b/2013/birken/README.md index 95ef510b2..d8399a8fc 100644 --- a/2013/birken/README.md +++ b/2013/birken/README.md @@ -177,8 +177,8 @@ would not be necessary: For reference, the names of the 7 [tetriminos](https://en.wikipedia.org/wiki/Tetromino) (the game pieces or -actually a kind of geometric shape used in -[Tetris](https://en.wikipedia.org/wiki/Tetris)) appear in the table below. +actually a kind of geometric shape used in the +[Tetris](https://en.wikipedia.org/wiki/Tetris) game) appear in the table below. image of names of the 7 Tetris game pieces

    Single Square Emitters

    For reference, the names of the 7 tetriminos (the game pieces or -actually a kind of geometric shape used in -Tetris) appear in the table below.

    +actually a kind of geometric shape used in the +Tetris game) appear in the table below.

    image of names of the 7 Tetris game pieces

    @@ -620,7 +620,7 @@ represented using ANSI escape sequences.

    rate in which the terminal application receives and displays the ANSI escape sequences.

    To slow down the output programmatically, introduce a delay immediately after the -call to fflush(3) (N.B: see birken.alt.c).

    +call to fflush(3) (N.B: see birken.alt.c source).

    IOCCC Size Tool Bug

    This program demonstrates how to exploit a bug in IOCCC size tool version 2013-07-30-v17. The first line of the program is reproduced below.

    diff --git a/2013/cable3/README.md b/2013/cable3/README.md index 45d07c40b..f3b2bb231 100644 --- a/2013/cable3/README.md +++ b/2013/cable3/README.md @@ -221,7 +221,7 @@ the `fd.img` provided, which is a FreeDOS boot disk. Before running the emulator on a Unix-type system, `stty` needs to be used to put the keyboard into raw mode (and afterwards it needs to be put back to cooked). So, run the emulator using something like this script (provided as -[cable3.sh](%%REPO_URL%%/2013/cable3/cable3.sh)): +the [cable3.sh](%%REPO_URL%%/2013/cable3/cable3.sh) file): ``` stty cbreak raw -echo min 0 @@ -394,7 +394,7 @@ disks (18 sectors per track, 2 heads) and 720KB disks (9 sectors per track, 2 heads). If you want to install your own software from floppy images (downloaded from -e.g. [Vetusware](https://vetusware.com)), the easiest way to "change disks" is +e.g., vetusware.com at one time), the easiest way to "change disks" is to copy each disk image in turn over the floppy image file you specify on the command line. Don't forget to put your original boot disk back at the end! diff --git a/2013/cable3/index.html b/2013/cable3/index.html index b080cc5b6..228669602 100644 --- a/2013/cable3/index.html +++ b/2013/cable3/index.html @@ -547,7 +547,7 @@ the fd.img provided, which is a FreeDOS boot disk.

    Before running the emulator on a Unix-type system, stty needs to be used to put the keyboard into raw mode (and afterwards it needs to be put back to cooked). So, run the emulator using something like this script (provided as -cable3.sh):

    +the cable3.sh file):

        stty cbreak raw -echo min 0
         ./cable3 bios fd.img
         stty cooked echo
    @@ -674,7 +674,7 @@ shutting down the terminal.

    disks (18 sectors per track, 2 heads) and 720KB disks (9 sectors per track, 2 heads).

    If you want to install your own software from floppy images (downloaded from -e.g. Vetusware), the easiest way to “change disks” is +e.g., vetusware.com at one time), the easiest way to “change disks” is to copy each disk image in turn over the floppy image file you specify on the command line. Don’t forget to put your original boot disk back at the end!

    Hard disk support

    diff --git a/2013/endoh4/README.md b/2013/endoh4/README.md index 769500e20..4955c32f9 100644 --- a/2013/endoh4/README.md +++ b/2013/endoh4/README.md @@ -154,7 +154,7 @@ The `solids` directory includes various solid data: I created the files by using the POV-Ray scripts ([1](http://en.wikipedia.org/wiki/File:Poly.pov) and -[2](http://en.wikipedia.org/wiki/User:AndrewKepert/poly.pov)) in Wikipedia. +[2](http://en.wikipedia.org/wiki/User:AndrewKepert/poly.pov) in Wikipedia. They are copyrighted in CC BY-SA 3.0 by "User:Cyp" and "User:AndrewKepert". diff --git a/2013/endoh4/index.html b/2013/endoh4/index.html index d2f1574c1..f58c0767f 100644 --- a/2013/endoh4/index.html +++ b/2013/endoh4/index.html @@ -483,7 +483,7 @@ So, try:

    I created the files by using the POV-Ray scripts (1 and -2) in Wikipedia. +2 in Wikipedia. They are copyrighted in CC BY-SA 3.0 by “User:Cyp” and “User:AndrewKepert”.

    @@ -258,8 +258,8 @@ format earlier in the source.) ternary operators, and so on. * Huffman coding. * Base-85 because high bits are frowned upon. -* Mixed radix encoding to game iocccsize. From a past entry -([2018/bellard](../../2018/bellard/index.html)), it seems 9 11 12 32 are the only +* Mixed radix encoding to game iocccsize. From a past entry, +[2018/bellard](../../2018/bellard/index.html), it seems 9 11 12 32 are the only whitespace octets that may appear verbatim in string literals. * Choosing what to encode in Huffman/base-85 and what to encode in mixed radix was a delicate balancing act. In the end, I only had a few bytes to spare, which @@ -267,7 +267,7 @@ I spent on gratuitous confusion. * The effects of some functions depend on the order their arguments are evaluated, yet the program works either way. Why? * Ugly macros for the runtime system's jump table for lazy reduction. A previous -entry ([2013/endoh1](../../2013/endoh1/index.html)) has a cuter solution, which I +entry, [2013/endoh1](../../2013/endoh1/index.html), has a cuter solution, which I avoid because of originality concerns and also because my combinators are compressed. * Relies on the inability of C comments to nest. diff --git a/2019/lynn/index.html b/2019/lynn/index.html index bdda752fc..76c976c72 100644 --- a/2019/lynn/index.html +++ b/2019/lynn/index.html @@ -464,8 +464,8 @@ of the characters a and b that contain an even number

    A GHC wrapper is provided:

        ghc ghclol.hs

    Strongly-connected components:

    -

    See scc.hs (and its GHC wrapper ghcscc.hs) for an elegant -way to print the strongly-connected components of a graph in reverse topological +

    See scc.hs, and its GHC wrapper ghcscc.hs, +for an elegant way to print the strongly-connected components of a graph in reverse topological order.

        (./prog < scc.hs ; cat prog.c) > scc.c

    It expects the input to be in a similar format as a previous entry @@ -545,8 +545,8 @@ format earlier in the source.) ternary operators, and so on.

  • Huffman coding.
  • Base-85 because high bits are frowned upon.
  • -
  • Mixed radix encoding to game iocccsize. From a past entry -(2018/bellard), it seems 9 11 12 32 are the only +
  • Mixed radix encoding to game iocccsize. From a past entry, +2018/bellard, it seems 9 11 12 32 are the only whitespace octets that may appear verbatim in string literals.
  • Choosing what to encode in Huffman/base-85 and what to encode in mixed radix was a delicate balancing act. In the end, I only had a few bytes to spare, which @@ -554,7 +554,7 @@ I spent on gratuitous confusion.
  • The effects of some functions depend on the order their arguments are evaluated, yet the program works either way. Why?
  • Ugly macros for the runtime system’s jump table for lazy reduction. A previous -entry (2013/endoh1) has a cuter solution, which I +entry, 2013/endoh1, has a cuter solution, which I avoid because of originality concerns and also because my combinators are compressed.
  • Relies on the inability of C comments to nest.
  • diff --git a/2019/mills/README.md b/2019/mills/README.md index 3563e7bd7..bc04b3f53 100644 --- a/2019/mills/README.md +++ b/2019/mills/README.md @@ -246,7 +246,7 @@ training loss will give you an idea of how well the network is learning and can let you know if the network is [overfitting or underfitting][7]. As part of the training process, the data set (which for OMLET is the -[Shakespeare.txt](Shakespeare.txt) file you gave on the command line) is divided into +[Shakespeare.txt](Shakespeare.txt)file you gave on the command line) is divided into [training and validation sets][8] (by default, 95% of the data is used for training, but like most OMLET parameters, you can change this at compile-time). diff --git a/2019/mills/index.html b/2019/mills/index.html index 6310c0037..b85704ce1 100644 --- a/2019/mills/index.html +++ b/2019/mills/index.html @@ -578,7 +578,7 @@ validation loss is about 1.72. Comparing the validation loss and the training loss will give you an idea of how well the network is learning and can let you know if the network is overfitting or underfitting.

    As part of the training process, the data set (which for OMLET is the -Shakespeare.txt file you gave on the command line) is divided into +Shakespeare.txtfile you gave on the command line) is divided into training and validation sets (by default, 95% of the data is used for training, but like most OMLET parameters, you can change this at compile-time).

    At the end of the validation run, OMLET writes out a checkpoint file with a diff --git a/2019/poikola/README.md b/2019/poikola/README.md index c56691a8f..2ae8f3728 100644 --- a/2019/poikola/README.md +++ b/2019/poikola/README.md @@ -88,9 +88,9 @@ Do you have the time to see what this program does? Think again, come back and try again. Note that [2](https://t5k.org/curios/page.php/2.html) can be said to be the -least [odd](https://en.wikipedia.org/wiki/Parity_(mathematics)) +least [odd](https://en.wikipedia.org/wiki/Parity_(mathematics)) [prime](https://en.wikipedia.org/wiki/Prime_number) because it is the greatest -[even](https://en.wikipedia.org/wiki/Parity_(mathematics)) prime. Moreover `2` +[even](https://en.wikipedia.org/wiki/Parity_(mathematics)) prime. Moreover `2` can be also said to be the greatest odd prime because it is the least even prime. diff --git a/2020/README.md b/2020/README.md index 7c3da9478..346c7c959 100644 --- a/2020/README.md +++ b/2020/README.md @@ -32,7 +32,7 @@ For some reason, this year's set of winning entries contains three nostalgic gam [Asteroids (tsoj)](tsoj/index.html), [Minesweeper (endoh1)](endoh1/index.html), and [Snake (ferguson1)](ferguson1/index.html). -An entry ([kurdyukov1](kurdyukov1/index.html)) pays homage to previous entry +An entry, [kurdyukov1](kurdyukov1/index.html), pays homage to previous entry [2015/hou](2015/hou/index.html). ...We'll stop spouting spoilers now. Have fun exploring all the entries! diff --git a/2020/endoh1/README.md b/2020/endoh1/README.md index 6a525da45..0b4ad195b 100644 --- a/2020/endoh1/README.md +++ b/2020/endoh1/README.md @@ -54,7 +54,7 @@ Use `prog.alt` as you would `prog` above. ## Judges' remarks: When playing -[Minesweeper](https://en.wikipedia.org/wiki/Minesweeper_(video_game)), a +[Minesweeper](https://en.wikipedia.org/wiki/Minesweeper_(video_game)), a misclick might ruin a game, so why not leave the routine to the computer? This program automatically uncovers mines according to several rules, and leaves guessing (and applying the most straightforward of the rules -- just for fun, @@ -216,14 +216,14 @@ There are mines in a cell whose "priorities-of-each-cell" is less than ### Bug fixes and Credits -The judges pointed out a bug of the original version that I submitted -([prog.alt.c](%%REPO_URL%%/2020/endoh1/prog.alt.c)). Because this program does not provide a feature to +The judges pointed out a bug of the original version that I submitted, +[prog.alt.c](%%REPO_URL%%/2020/endoh1/prog.alt.c). Because this program does not provide a feature to flag unprobed cells manually, we can do nothing if the number of unprobed cells are equal to the number of mines remaining; [unwinnable.txt](unwinnable.txt) is an example for such a case. Thus, I implemented an additional rule to flag all unprobed cells in such a case -into the final version ([prog.c](%%REPO_URL%%/2020/endoh1/prog.c)). +into the final version: [prog.c](%%REPO_URL%%/2020/endoh1/prog.c). [Ilya Kurdyukov](../../authors.html#Ilya_Kurdyukov) also pointed out a warning "ignoring return value of 'fscanf'" only when `-O3` is used. So I changed the diff --git a/2020/endoh1/index.html b/2020/endoh1/index.html index 6f8fe8927..11c19d805 100644 --- a/2020/endoh1/index.html +++ b/2020/endoh1/index.html @@ -518,13 +518,13 @@ Analyze the code.

    There are mines in a cell whose “priorities-of-each-cell” is less than “number-of-mines”. (But the mine in the first-clicked cell is removed.)

    Bug fixes and Credits

    -

    The judges pointed out a bug of the original version that I submitted -(prog.alt.c). Because this program does not provide a feature to +

    The judges pointed out a bug of the original version that I submitted, +prog.alt.c. Because this program does not provide a feature to flag unprobed cells manually, we can do nothing if the number of unprobed cells are equal to the number of mines remaining; unwinnable.txt is an example for such a case.

    Thus, I implemented an additional rule to flag all unprobed cells in such a case -into the final version (prog.c).

    +into the final version: prog.c.

    Ilya Kurdyukov also pointed out a warning “ignoring return value of ‘fscanf’” only when -O3 is used. So I changed the code a little to pretend to use the return value of fscanf(3).

    diff --git a/2020/ferguson1/README.md b/2020/ferguson1/README.md index 4d336bba4..9d2440d8d 100644 --- a/2020/ferguson1/README.md +++ b/2020/ferguson1/README.md @@ -129,7 +129,7 @@ Information about terminal capabilities, dimensions (setting and how to restore Workarounds for various game *features* -* [bugs.html]([bugs.html) +* [bugs.html](bugs.html) Bugs and things that might seem like bugs but are not. @@ -522,7 +522,7 @@ The [prog.3.c](%%REPO_URL%%/2020/ferguson1/prog.3.c) is in a more artistic layou additional obfuscation technique (see spoilers) but it also has more digraphs and as the judges said they feel that digraphs are dated so that's probably why they chose the first layout. The [prog.3-j.c](%%REPO_URL%%/2020/ferguson1/prog.3-j.c) version is -[prog.3.c](%%REPO_URL%%%%REPO_URL%%/2020/ferguson1/prog.3.c) with a shorter `J` macro. +[prog.3.c](%%REPO_URL%%/2020/ferguson1/prog.3.c) with a shorter `J` macro. The prog.alt.c version is the one that allows for customising the bug colour and it's used in both [snake-colours.sh][] and [play.sh][]. It also calls `erase()` diff --git a/2020/ferguson1/index.html b/2020/ferguson1/index.html index f9f287c92..e98ffa4d4 100644 --- a/2020/ferguson1/index.html +++ b/2020/ferguson1/index.html @@ -495,7 +495,7 @@ This game has a number of configurable pitfalls including walls and snakes.

    Workarounds for various game features

    Bugs and things that might seem like bugs but are not.

      @@ -818,7 +818,7 @@ been warned. additional obfuscation technique (see spoilers) but it also has more digraphs and as the judges said they feel that digraphs are dated so that’s probably why they chose the first layout. The prog.3-j.c version is -prog.3.c with a shorter J macro.

      +prog.3.c with a shorter J macro.

      The prog.alt.c version is the one that allows for customising the bug colour and it’s used in both snake-colours.sh and play.sh. It also calls erase() first, clearing the screen, which the play.sh and snake-colours.sh scripts also diff --git a/2020/ferguson2/README.md b/2020/ferguson2/README.md index a15a89c98..d9600fc6b 100644 --- a/2020/ferguson2/README.md +++ b/2020/ferguson2/README.md @@ -288,7 +288,7 @@ After that you can input the string and it'll go from there. BTW: There's a much more entertaining (and delicious) challenge or exercise in [recode.html][] (if you're reading this on GitHub check the [recode.html](recode.html) file instead); this involves [chocolate-cake.html][] (if -on GitHub see [here](chocolate-cake.html)) though one might need a different kind +on GitHub, see [here](chocolate-cake.html), though one might need a different kind of exercise after taking up the challenge! :-) These however show the general program as well as how to use the two winning entries of the [Morse code](https://en.wikipedia.org/wiki/Morse_code) that I referred to earlier: @@ -423,7 +423,7 @@ it prompts you for the settings settings](https://en.wikipedia.org/wiki/Enigma_rotor_details#Ring_setting) and positions, [reflector](https://www.ciphermachinesandcryptology.com/en/enigmatech.htm#Reflector) and -[plugboard pairs](https://www.cryptomuseum.com/crypto/enigma/i/sb.htm)), +[plugboard pairs](https://www.cryptomuseum.com/crypto/enigma/i/sb.htm), validating input as you go. After that it prompts for text that you can pass to the Enigma simulator; @@ -775,7 +775,7 @@ of the Wehrmacht rather than the Wehrmacht and the Kriegsmarine. [Enigma Message Procedures][]: The [Heer][], [Luftwaffe](https://en.wikipedia.org/wiki/Luftwaffe) and -[Kriegsmarine](https://en.wikipedia.org/wiki/Kriegsmarine)) +[Kriegsmarine](https://en.wikipedia.org/wiki/Kriegsmarine) [Enigma](https://en.wikipedia.org/wiki/Enigma_machine) procedures. diff --git a/2020/ferguson2/index.html b/2020/ferguson2/index.html index fb4040863..cb9d1df6f 100644 --- a/2020/ferguson2/index.html +++ b/2020/ferguson2/index.html @@ -600,7 +600,7 @@ pairs.

      BTW: There’s a much more entertaining (and delicious) challenge or exercise in recode.html (if you’re reading this on GitHub check the recode.html file instead); this involves chocolate-cake.html (if -on GitHub see here) though one might need a different kind +on GitHub, see here, though one might need a different kind of exercise after taking up the challenge! :-) These however show the general program as well as how to use the two winning entries of the Morse code that I referred to earlier:

      @@ -686,7 +686,7 @@ it prompts you for the settings settings and positions, reflector and -plugboard pairs), +plugboard pairs, validating input as you go.

      After that it prompts for text that you can pass to the Enigma simulator; alternatively you can specify a file to read in.

      @@ -952,7 +952,7 @@ Wehrmacht; when you see this you can read it as the Kriegsmarine versus the rest of the Wehrmacht rather than the Wehrmacht and the Kriegsmarine.

      Enigma Message Procedures: The Heer, Luftwaffe and -Kriegsmarine) +Kriegsmarine Enigma procedures.

      Interactive Enigma Machine: Shows wiring of the Enigma diff --git a/2020/ferguson2/recode.html b/2020/ferguson2/recode.html index cf273af8c..3c64c7a8e 100644 --- a/2020/ferguson2/recode.html +++ b/2020/ferguson2/recode.html @@ -798,7 +798,7 @@ delicious challenge).

      Example additions

        -
      • Add code (to prog.c) that tries to determine possible decipherments based on +
      • Add code, to prog.c, that tries to determine possible decipherments based on a given crib (or set of cribs).
      diff --git a/2020/ferguson2/recode.md b/2020/ferguson2/recode.md index f8fb22658..30f6c06c3 100644 --- a/2020/ferguson2/recode.md +++ b/2020/ferguson2/recode.md @@ -550,7 +550,7 @@ delicious challenge). # Example additions
      -* Add code (to [prog.c](%%REPO_URL%%/2020/ferguson1/prog.c)) that tries to determine possible decipherments based on +* Add code, to [prog.c](%%REPO_URL%%/2020/ferguson1/prog.c), that tries to determine possible decipherments based on a given crib (or set of cribs). diff --git a/2020/giles/README.md b/2020/giles/README.md index 9d33dfad8..75b65caec 100644 --- a/2020/giles/README.md +++ b/2020/giles/README.md @@ -43,7 +43,7 @@ will be converted to the DTMF sound! If the script [try.sh](%%REPO_URL%%/2020/giles/try.sh) did not play a WAV file, it means you do not have SoX installed; see [FAQ 3.10: How do I compile and use an IOCCC entry that -requires sound?](../../faq.html#sox)). In this case install it and try it again or +requires sound?](../../faq.html#sox). In this case install it and try it again or play the files `jenny.wav` and `ioccc28.wav` in a program that can play WAV files. diff --git a/2020/giles/index.html b/2020/giles/index.html index 33fe29296..d8b9b4453 100644 --- a/2020/giles/index.html +++ b/2020/giles/index.html @@ -420,7 +420,7 @@ will be converted to the DTMF sound!

      ./prog 867-5309 > jenny.wav

      If the script try.sh did not play a WAV file, it means you do not have SoX installed; see FAQ 3.10: How do I compile and use an IOCCC entry that -requires sound?). In this case install it and try it again or +requires sound?. In this case install it and try it again or play the files jenny.wav and ioccc28.wav in a program that can play WAV files.

      NOTE: the phone number of jenny.wav comes from diff --git a/2020/index.html b/2020/index.html index d5cc24ef0..01d703d6c 100644 --- a/2020/index.html +++ b/2020/index.html @@ -404,7 +404,7 @@ IOCCC list!

      For some reason, this year’s set of winning entries contains three nostalgic games, Asteroids (tsoj), Minesweeper (endoh1), and Snake (ferguson1).

      -

      An entry (kurdyukov1) pays homage to previous entry +

      An entry, kurdyukov1, pays homage to previous entry 2015/hou.

      …We’ll stop spouting spoilers now. Have fun exploring all the entries!

      Remarks on some of submissions that did not win

      diff --git a/2020/otterness/README.md b/2020/otterness/README.md index 96f99fd30..d34ef78b5 100644 --- a/2020/otterness/README.md +++ b/2020/otterness/README.md @@ -66,7 +66,7 @@ I found [here](http://www.kunstderfuge.com/beethoven/variae.htm#Symphonies). However, as discussed under the [Limitations](#limitations) section below, not all of them work correctly. I will admit to having used `http://www.kunstderfuge.com/-/midi.asp?file=beethoven/symphony_6_1_(c)cvikl.mid` -for most of my testing (see [cvikl.mid](%%REPO_URL%%/2020/otterness/cvikl.mid)). +for most of my testing, see [cvikl.mid](%%REPO_URL%%/2020/otterness/cvikl.mid). ### Usage diff --git a/2020/otterness/index.html b/2020/otterness/index.html index 926901725..ef6554a25 100644 --- a/2020/otterness/index.html +++ b/2020/otterness/index.html @@ -432,7 +432,7 @@ I found he However, as discussed under the Limitations section below, not all of them work correctly. I will admit to having used http://www.kunstderfuge.com/-/midi.asp?file=beethoven/symphony_6_1_(c)cvikl.mid -for most of my testing (see cvikl.mid).

      +for most of my testing, see cvikl.mid.

      Usage

      Compile the program using the following command (I tested this using both clang and gcc):

      diff --git a/README.html b/README.html index 2c1c28155..f671e01e7 100644 --- a/README.html +++ b/README.html @@ -421,7 +421,7 @@ programming practice, then to what depths might quality sink if people really tried to write poor code?

      I put that question to the USENET news groups net.lang.c and net.unix-wizards in the form of a contest. I selected a form similar to the contest -(Bulwer-Lytton) that asks people to create the +(Bulwer-Lytton contest) that asks people to create the worst opening line to a novel (that contest in turn was inspired by disgust over a novel by Edward Bulwer-Lytton that opened diff --git a/README.md b/README.md index b72c1fc27..a2d31fee2 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ tried to write poor code? I put that question to the USENET news groups net.lang.c and net.unix-wizards in the form of a contest. I selected a form similar to the contest -([Bulwer-Lytton](https://www.bulwer-lytton.com)) that asks people to create the +([Bulwer-Lytton](https://www.bulwer-lytton.com) contest) that asks people to create the worst opening line to a novel (that contest in turn was inspired by disgust over [a novel](https://en.wikipedia.org/wiki/Paul_Clifford) by [Edward Bulwer-Lytton](https://en.wikipedia.org/wiki/Edward_Bulwer-Lytton) that opened diff --git a/bin/README.md b/bin/README.md index 4f53f5ec2..eb07b7cea 100644 --- a/bin/README.md +++ b/bin/README.md @@ -9,10 +9,10 @@ files and other content from the [IOCCC GitHub repo](https://github.com/ioccc-src/temp-test-ioccc). -## [bin/](index.html) tools +## [bin/](%%DOCROOT_SLASH%%bin/index.html) tools -### [all-run.sh](all-run.sh) +### [all-run.sh](%%DOCROOT_SLASH%%bin/all-run.sh) Run a command on all winning entries. @@ -29,7 +29,7 @@ Or for example: ``` -### [all-years.sh](all-years.sh) +### [all-years.sh](%%DOCROOT_SLASH%%bin/all-years.sh) Run a command on all IOCCC years. @@ -52,7 +52,7 @@ We recommend that this tool be invoked via the top level `Makefile`: ``` -### [chk-entry.sh](chk-entry.sh) +### [chk-entry.sh](%%DOCROOT_SLASH%%bin/chk-entry.sh) Check that files required by an entry match the entry's manifest as found in `.entry.json`. @@ -64,7 +64,7 @@ For example: ``` -### [filelist.entry.json.awk](filelist.entry.json.awk) +### [filelist.entry.json.awk](%%DOCROOT_SLASH%%bin/filelist.entry.json.awk) Generate the list of files in the entry's manifest, `.entry.json`. @@ -75,7 +75,7 @@ For example: ``` -### [gen-authors.sh](gen-authors.sh) +### [gen-authors.sh](%%DOCROOT_SLASH%%bin/gen-authors.sh) Generate the top level `/authors.html` page. @@ -86,7 +86,7 @@ Usage: ``` -### [gen-location.sh](gen-location.sh) +### [gen-location.sh](%%DOCROOT_SLASH%%bin/gen-location.sh) Generate the top level `/location.html` page. @@ -97,7 +97,7 @@ Usage: ``` -### [gen-other-html.sh](gen-other-html.sh) +### [gen-other-html.sh](%%DOCROOT_SLASH%%bin/gen-other-html.sh) Generate entry HTML files (other than README.md to index.html) from markdown files. @@ -109,7 +109,7 @@ Usage: ``` -### [gen-sitemap.sh](gen-sitemap.sh) +### [gen-sitemap.sh](%%DOCROOT_SLASH%%bin/gen-sitemap.sh) Generate an XML sitemap for the IOCCC web site. @@ -126,7 +126,7 @@ We recommend that this tool be invoked via the top level `Makefile`: ``` -### [gen-status.sh](gen-status.sh) +### [gen-status.sh](%%DOCROOT_SLASH%%bin/gen-status.sh) Generate `status.json` according to the modification dates of `status.json` and `news.html`. @@ -164,7 +164,7 @@ We recommend that this tool be invoked via the top level `Makefile`: ``` -### [gen-top-html.sh](gen-top-html.sh) +### [gen-top-html.sh](%%DOCROOT_SLASH%%bin/gen-top-html.sh) Generate a number of top level HTML pages for the IOCCC web sites. @@ -196,7 +196,7 @@ We recommend that this tool be invoked via the top level `Makefile`: ``` -### [gen-year-index.sh](gen-year-index.sh) +### [gen-year-index.sh](%%DOCROOT_SLASH%%bin/gen-year-index.sh) Generate an `index.html` page for an given IOCCC year. @@ -213,7 +213,7 @@ We recommend that this tool be invoked via the top level `Makefile`: ``` -### [gen-years.sh](gen-years.sh) +### [gen-years.sh](%%DOCROOT_SLASH%%bin/gen-years.sh) Generate the top level `/years.html` page. @@ -230,7 +230,7 @@ We recommend that this tool be invoked via the top level `Makefile`: ``` -### [md2html.sh](md2html.sh) +### [md2html.sh](%%DOCROOT_SLASH%%bin/md2html.sh) This is the primary tool that forms IOCCC generated HTML content from markdown files (permanent markdown files or temporarily generated @@ -240,28 +240,28 @@ The [../inc/md2html.cfg](../inc/md2html.cfg) configuration file is used by [md2html.sh](md2html.sh) to drive the generation process. -### [output-index-author.sh](output-index-author.sh) +### [output-index-author.sh](%%DOCROOT_SLASH%%bin/output-index-author.sh) Output author's or authors' related HTML details for an entry's index.html page. -### [output-index-inventory.sh](output-index-inventory.sh) +### [output-index-inventory.sh](%%DOCROOT_SLASH%%bin/output-index-inventory.sh) Output the inventory in HTML form for an entry's index.html page. -### [output-year-index.sh](output-year-index.sh) +### [output-year-index.sh](%%DOCROOT_SLASH%%bin/output-year-index.sh) Output markdown of wining entry links for a given year. -### [pandoc-wrapper.sh](pandoc-wrapper.sh) +### [pandoc-wrapper.sh](%%DOCROOT_SLASH%%bin/pandoc-wrapper.sh) Wrapper tool to run pandoc. -### [quick-readme2index.sh](quick-readme2index.sh) +### [quick-readme2index.sh](%%DOCROOT_SLASH%%bin/quick-readme2index.sh) Builds an entry's `index.html` file if the entry directory does not have a non-empty `index.hmtl` file, or if either @@ -271,13 +271,13 @@ This is useful when only a few entries have been modified (resulting in an updated `.entry.json` file) or if the `index.html` of a few entries has been changed. -While the [readme2index.sh](readme2index.sh) take a few +While the [readme2index.sh](%%DOCROOT_SLASH%%bin/readme2index.sh) take a few seconds to run, when applied to 300+ entries, the extra time can add up. If only a few `index.hmtl` files need updating, then this command will only briefly pause while the -slightly longer [readme2index.sh](readme2index.sh) is run: +slightly longer [readme2index.sh](%%DOCROOT_SLASH%%bin/readme2index.sh) is run: ``` bin/all-run.sh -v 3 bin/quick-readme2index.sh -v 1 @@ -294,7 +294,7 @@ We recommend that this tool be invoked via the top level `Makefile`: ``` -### [readme2index.sh](readme2index.sh) +### [readme2index.sh](%%DOCROOT_SLASH%%bin/readme2index.sh) Convert an entry README.md into entry directory index.html. @@ -315,7 +315,7 @@ We recommend that this tool be invoked via the top level `Makefile`: ``` -### [status2html.sh](status2html.sh) +### [status2html.sh](%%DOCROOT_SLASH%%bin/status2html.sh) Convert `status.json` into HTML. @@ -323,7 +323,7 @@ This tool is a 'before tool' (-b tool) that is intended to be used by `bin/gen-status.sh`. -### [sgi.sh](sgi.sh) +### [sgi.sh](%%DOCROOT_SLASH%%bin/sgi.sh) Sort .gitignore content from `stdin` to `stdout`. @@ -332,10 +332,10 @@ We sort with lines starting with `*` second. We sort with lines that do not start with `[#!*]` third. We sort with lines starting with `!` fourth. -This tool is used by [sort.gitignore.sh](sort.gitignore.sh). +This tool is used by [sort.gitignore.sh](%%DOCROOT_SLASH%%bin/sort.gitignore.sh). -### [sort.gitignore.sh](sort.gitignore.sh) +### [sort.gitignore.sh](%%DOCROOT_SLASH%%bin/sort.gitignore.sh) Sort a .gitignore in a entry directory. @@ -358,32 +358,32 @@ We recommend that this tool be invoked via the top level `Makefile`: ``` -### [subst.default.sh](subst.default.sh) +### [subst.default.sh](%%DOCROOT_SLASH%%bin/subst.default.sh) Print default substitutions. -### [subst.entry-index.sh](subst.entry-index.sh) +### [subst.entry-index.sh](%%DOCROOT_SLASH%%bin/subst.entry-index.sh) Print substitutions for an entry index.html. -### [subst.entry-navbar.awk](subst.entry-navbar.awk) +### [subst.entry-navbar.awk](%%DOCROOT_SLASH%%bin/subst.entry-navbar.awk) Output substitutions for navbar on behalf of an entry. -### [subst.year-index.sh](subst.year-index.sh) +### [subst.year-index.sh](%%DOCROOT_SLASH%%bin/subst.year-index.sh) Print substitutions for a year level index.html. -### [subst.year-navbar.awk](subst.year-navbar.awk) +### [subst.year-navbar.awk](%%DOCROOT_SLASH%%bin/subst.year-navbar.awk) Output substitutions for navbar on behalf of a year level index.html. -## [tar-entry.sh](tar-entry.sh) +## [tar-entry.sh](%%DOCROOT_SLASH%%bin/tar-entry.sh) Form a compressed tarball for an entry. @@ -400,7 +400,7 @@ bin/all-run.sh -v 3 bin/tar-entry.sh -v 1 -W ``` -## [tar-year.sh](tar-year.sh) +## [tar-year.sh](%%DOCROOT_SLASH%%bin/tar-year.sh) Form a compressed tarball for an IOCCC year. @@ -423,7 +423,7 @@ make form_year_tarball ``` -## [untar-entry.sh](untar-entry.sh) +## [untar-entry.sh](%%DOCROOT_SLASH%%bin/untar-entry.sh) Untar an entry's a compressed tarball. @@ -446,7 +446,7 @@ We recommend that this tool be invoked via the top level `Makefile`: ``` -## [untar-year.sh](untar-year.sh) +## [untar-year.sh](%%DOCROOT_SLASH%%bin/untar-year.sh) Untar an IOCCC year's compressed tarball. @@ -473,7 +473,7 @@ We recommend that this tool be invoked via the top level `Makefile`: # How IOCCC HTML content is built -The [md2html.sh](md2html.sh) tool is the primary tool that +The [md2html.sh](%%DOCROOT_SLASH%%bin/md2html.sh) tool is the primary tool that is used to form all IOCCC related HTML pages for the [official IOCCC web site](https://www.ioccc.org). @@ -561,7 +561,7 @@ It is an error, unless `-S` is given, for any phase, except phases HTML 20-29, to not substitute all **%%TOKEN%%**'s. For phases HTML 20-29, any **%%TOKEN%%** that is not substituted are passed thru without substitution. -See the tool [readme2index.sh](readme2index.sh) for an example of +See the tool [readme2index.sh](%%DOCROOT_SLASH%%bin/readme2index.sh) for an example of how HTML phases are implemented. @@ -684,18 +684,18 @@ output), or the command will exit non-zero, unless `-S` is given. If `-S` is given, only a warning about non-substituted tokens will be written to `stderr`. The command line of tools in the [bin directory](index.html), and perhaps -modified via the [md2html config file](../inc/md2html.cfg) may change to using a +modified via the [md2html config file](%%DOCROOT_SLASH%%inc/md2html.cfg) may change to using a different filename for a given phase. For example when forming the HTML from -[2020/ferguson1/chocolate-cake.md](/2020/ferguson1/chocolate-cake.md), +[2020/ferguson1/chocolate-cake.md](%%DOCROOT_SLASH%%2020/ferguson1/chocolate-cake.md), a different `navbar` navigation bar is needed. So instead of the usual top navigation bar that normally directs people to the previous entry for the year, or go up to the year page, or to the next entry for the year, a top navigation bar to just go up to the entry's -main page is needed. A line in the [md2html config file](../inc/md2html.cfg) +main page is needed. A line in the [md2html config file](%%DOCROOT_SLASH%%inc/md2html.cfg) that refers to -[2020/ferguson1/chocolate-cake.md](/2020/ferguson1/chocolate-cake.md) may +[2020/ferguson1/chocolate-cake.md](%%DOCROOT_SLASH%%2020/ferguson1/chocolate-cake.md) may specify use of `navbar.up2index.html` (as `navbar.up2index`)instead of using the `navbar.default.html` (`navbar.default.html`) default. @@ -703,7 +703,7 @@ The HTML phase may be skipped resulting in no HTML output during a given phase and furthermore, forming no HTML content from a given markdown file altogether. See comments in the [md2html config file](../inc/md2html.cfg) for details. -See also, the tool [readme2index.sh](readme2index.sh) for an example of +See also, the tool [readme2index.sh](%%DOCROOT_SLASH%%bin/readme2index.sh) for an example of how such command lines are used. @@ -792,7 +792,7 @@ a natural fit for GitHub and [GitHub pages](https://pages.github.com). The `` HTML element does not work for our needs. HTML elements do not extend into the content that they include. -For example, menu bars [ioccc.css](../ioccc.css) will not operate +For example, menu bars [ioccc.css](%%DOCROOT_SLASH%%ioccc.css) will not operate under an HTML element. @@ -802,7 +802,7 @@ The `` HTML element does not work for our needs. This element wants one to specify the `width` and `height` in pixels. Use of a percentage is not officially supported even if some browsers -might do so. Our Responsive Web Design in the [ioccc.css](../ioccc.css) +might do so. Our Responsive Web Design in the [ioccc.css](%%DOCROOT_SLASH%%ioccc.css) needs to be responsive to small-sized cell phone-like screens, mid-sized table-like screens, as well as large-sized desktop-like screens. Specifying a `width` and `height` in pixels will not work well in @@ -815,7 +815,7 @@ The `