Update 1994 winning entries' README.md files
Format and typo fixes.
This commit is contained in:
1 parent
ee4ee3497d
commit
2501c808c6
9 files changed
+155
-119
No files matched your search
+14
-10
@@ -1,20 +1,24 @@
|
||||
# Best Game
|
||||
|
||||
Don Dodson
|
||||
AG Communication Systems
|
||||
17239 N. 19th Ave. #1003
|
||||
Phoenix, AZ 85023
|
||||
USA
|
||||
Don Dodson
|
||||
AG Communication Systems
|
||||
17239 N. 19th Ave. #1003
|
||||
Phoenix, AZ 85023
|
||||
USA
|
||||
|
||||
## To build:
|
||||
|
||||
make all
|
||||
```sh
|
||||
make all
|
||||
```
|
||||
|
||||
## To run
|
||||
## To run:
|
||||
|
||||
./dodsond1
|
||||
|
||||
NOTE: At the prompt, try entering E3.
|
||||
```sh
|
||||
./dodsond1
|
||||
```
|
||||
|
||||
NOTE: At the prompt, try entering `E3`.
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
|
||||
+20
-14
@@ -1,18 +1,22 @@
|
||||
# Most Obfuscated Packaging
|
||||
|
||||
Don Dodson
|
||||
AG Communication Systems
|
||||
17239 N. 19th Ave. #1003
|
||||
Phoenix, AZ 85023
|
||||
USA
|
||||
Don Dodson
|
||||
AG Communication Systems
|
||||
17239 N. 19th Ave. #1003
|
||||
Phoenix, AZ 85023
|
||||
USA
|
||||
|
||||
## To build:
|
||||
|
||||
make all
|
||||
```sh
|
||||
make all
|
||||
```
|
||||
|
||||
## To run:
|
||||
|
||||
./dodsond2
|
||||
```sh
|
||||
./dodsond2
|
||||
```
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
@@ -33,9 +37,11 @@ dodsond2.gz: gzip compressed data, last modified: Mon Aug 29 21:54:39 1994, max
|
||||
The [dodsond2.gz](dodsond2.gz) file was submitted as source
|
||||
in an effort to get around the 1994 version of Rule 2:
|
||||
|
||||
2) Your entry must be <= 3217 bytes in length. The number of characters
|
||||
excluding whitespace (tab, space, newline), and excluding any ; { or }
|
||||
followed by either whitespace or end of file, must be <= 1536.
|
||||
```
|
||||
2) Your entry must be <= 3217 bytes in length. The number of characters
|
||||
excluding whitespace (tab, space, newline), and excluding any ; { or }
|
||||
followed by either whitespace or end of file, must be <= 1536.
|
||||
```
|
||||
|
||||
Indeed, when [dodsond2.gz](dodsond2.gz) is uncompressed, it is identical
|
||||
to the [dodsond2.c](dodsond2.c) file you find today.
|
||||
@@ -58,11 +64,11 @@ be detected from 2 rooms away.
|
||||
|
||||
To win, you must find one or more arrows, determine where the Wumpus
|
||||
is, and shoot him, all without falling into a pit or becoming the
|
||||
next meal for the Wumpus. To shoot an arrow, type "s". Then give a
|
||||
next meal for the Wumpus. To shoot an arrow, type `s`. Then give a
|
||||
list of the rooms you want to shoot into. The rooms must be
|
||||
connected in the order you list them, or else the arrow may bounce
|
||||
back and hit you. An arrow can go through as many as four rooms.
|
||||
But beware, because shooting an arrow and missing the Wumpus may
|
||||
But beware that shooting an arrow and missing the Wumpus may
|
||||
awaken him.
|
||||
|
||||
There is a robber who waits in an unknown room. If you enter
|
||||
@@ -71,8 +77,8 @@ and move to a new room. If he steals all the arrows in the
|
||||
Caverns, you may catch him and recover all of them. Doing this
|
||||
gives you a bonus on your score.
|
||||
|
||||
You can quit at any time by typing 'q'. Typing 'i' will tell
|
||||
you how many arrows you are carrying. 'l' prints the description
|
||||
You can quit at any time by typing `q`. Typing `i` will tell
|
||||
you how many arrows you are carrying. `l` prints the description
|
||||
of the current room again.
|
||||
|
||||
## Copyright and CC BY-SA 4.0 License:
|
||||
|
||||
+37
-27
@@ -1,28 +1,36 @@
|
||||
# Most Obfuscated Algorithm
|
||||
|
||||
Ian Collier
|
||||
Oxford University
|
||||
57 Wyndham Avenue (home address)
|
||||
BOLTON
|
||||
BL3 4LG
|
||||
England
|
||||
Ian Collier
|
||||
Oxford University
|
||||
57 Wyndham Avenue (home address)
|
||||
Bolton
|
||||
BL3 4LG
|
||||
England
|
||||
|
||||
## To build:
|
||||
|
||||
make all
|
||||
```sh
|
||||
make all
|
||||
```
|
||||
|
||||
## To run:
|
||||
|
||||
To use:
|
||||
./imc INTEGER
|
||||
```sh
|
||||
./imc [NUMBER]
|
||||
```
|
||||
|
||||
where `[NUMBER]` is an optional number. Default is 5.
|
||||
|
||||
## Try:
|
||||
|
||||
./imc 3
|
||||
./imc 3
|
||||
./imc 4
|
||||
./imc 4
|
||||
./imc 6
|
||||
```sh
|
||||
./imc 3
|
||||
./imc 3
|
||||
./imc 4
|
||||
./imc 4
|
||||
./imc 6
|
||||
./imc 13
|
||||
```
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
@@ -32,15 +40,15 @@ This entry's algorithm is as magic as its output!
|
||||
## Author's remarks:
|
||||
|
||||
This program may be compiled with an ANSI or K&R compiler. A few
|
||||
harmless warnings are displayed only if "gcc -Wall" is used.
|
||||
harmless warnings are displayed only if `gcc -Wall` is used.
|
||||
|
||||
This entry is really a set of library functions, but an example
|
||||
main function has been added so that the library can be tested. If
|
||||
the program appears too large, consider that functions o and s can
|
||||
the program appears too large, consider that functions `o` and `s` can
|
||||
each be separated from the rest of the program (except for the short
|
||||
functions p and r, which they require) and used alone. However, the
|
||||
main part of the program is the function e, which does require all the
|
||||
other functions (apart from main).
|
||||
functions `p` and `r`, which they require) and used alone. However, the
|
||||
main part of the program is the function `e`, which does require all the
|
||||
other functions (apart from `main`).
|
||||
|
||||
The program should be supplied with an integer parameter. If no
|
||||
parameter or an invalid parameter is given, then 5 is assumed. The
|
||||
@@ -53,22 +61,24 @@ OK, so you have probably seen magic square printers before. But what
|
||||
about one that deals with even sizes as well as odd ones, or one that
|
||||
prints out a different one each time (or attempts to, at any rate)?
|
||||
|
||||
I have formatted the important functions o, s and e to show how useful
|
||||
the word "for" is, and (in function e) how useful the words "if" and
|
||||
I have formatted the important functions `o`, `s` and `e` to show how useful
|
||||
the word "for" is, and (in function `e`) how useful the words "if" and
|
||||
"else" are. In fact, hardly anything happens that isn't in one of these
|
||||
instructions. I did this in order to simplify the code - the algorithms
|
||||
used to make the random squares are quite complex without being shrouded
|
||||
in obfuscated code! :-) Incidentally, I was surprised to find out how
|
||||
useful the exclusive-or operator was while writing function s.
|
||||
useful the exclusive-or operator was while writing function `s`.
|
||||
|
||||
Here are the descriptions of the functions in the library:
|
||||
|
||||
o(n,a,q,d): makes a magic square of order n when n is odd and at least 3.
|
||||
s(n,a,q,d): makes a magic square of order n when n equals 4.
|
||||
e(n,a,q,d): makes a magic square of order n when n is even and at least 6.
|
||||
```
|
||||
o(n,a,q,d): makes a magic square of order n when n is odd and at least 3.
|
||||
s(n,a,q,d): makes a magic square of order n when n equals 4.
|
||||
e(n,a,q,d): makes a magic square of order n when n is even and at least 6.
|
||||
```
|
||||
|
||||
In the above, `a` (of type `int*`) points to an area of memory in which
|
||||
the magic square will be stored and `q` (also of type `int*`) points to
|
||||
In the above, `a` (of type `int *`) points to an area of memory in which
|
||||
the magic square will be stored and `q` (also of type `int *`) points to
|
||||
an area of memory of length at least `n*sizeof(int)` bytes which can be
|
||||
used as a work space. Both `a` and `q` must be allocated by the caller.
|
||||
The integer parameter `d`, usually zero, indicates the length of a gap
|
||||
|
||||
+15
-10
@@ -5,7 +5,7 @@ ISX Corporation
|
||||
1165 Northchase Pkwy, Suite 120
|
||||
Marietta, GA 30067
|
||||
USA
|
||||
<http://computronium.org/ioccc.html>
|
||||
<http://computronium.org/ioccc.html>
|
||||
|
||||
|
||||
## To build:
|
||||
@@ -32,10 +32,11 @@ it is not as easy to change it to `fgets()`. [Cody Boone
|
||||
Ferguson](/winners.html#Cody_Boone_Ferguson) gives some hints in the
|
||||
[bugs.md](/bugs.md) file on how this entry works which might be useful in order
|
||||
to get this to use `fgets()` which would prevent a warning at linking or
|
||||
runtime. The file [schnitzi.alt.c](schnitzi.alt.c) has this to get anyone
|
||||
started, should they wish to tackle it (Cody will in time). The problem with
|
||||
changing the buffer size is that even when it works the generated output (see
|
||||
judges' remarks below) will not be 100% correct duplication of the program.
|
||||
runtime, the latter of which is interspersed with the output of the program. The
|
||||
file [schnitzi.alt.c](schnitzi.alt.c) has this to get anyone started, should
|
||||
they wish to tackle it (Cody might in time). The problem with changing the buffer
|
||||
size is that even when it works the generated output (see judges' remarks below)
|
||||
will not be 100% correct duplication of the program.
|
||||
|
||||
### Alternate code:
|
||||
|
||||
@@ -69,16 +70,20 @@ down to the bottom right. In other words, the first row in the
|
||||
file ends up written down the first column of the result, the
|
||||
second row is written down the second column, etc. The program
|
||||
is run by redirecting a file into the executable on the command
|
||||
line; for instance, for the included 'info' file, the program
|
||||
line; for instance, for the file 'info', the program
|
||||
would be run as follows:
|
||||
|
||||
schnitzi < info
|
||||
|
||||
```sh
|
||||
schnitzi < info
|
||||
```
|
||||
|
||||
The program generates interesting results when its source file is
|
||||
used as input:
|
||||
|
||||
|
||||
```sh
|
||||
schnitzi < schnitzi.c
|
||||
|
||||
```
|
||||
|
||||
The result of this command is a program which does the exact same
|
||||
thing -- in other words, both the program and the "flipped"
|
||||
version of itself work identically (you'll need to redirect the
|
||||
|
||||
+15
-11
@@ -1,24 +1,26 @@
|
||||
# Most Well Rounded Obfuscation
|
||||
|
||||
Andrew T. Shapiro
|
||||
CSES/CIRES University of Colorado
|
||||
Campus Box 216
|
||||
Boulder, CO 80309-0216
|
||||
USA
|
||||
Andrew T. Shapiro
|
||||
CSES/CIRES University of Colorado
|
||||
Campus Box 216
|
||||
Boulder, CO 80309-0216
|
||||
USA
|
||||
|
||||
## To build:
|
||||
|
||||
make all
|
||||
```sh
|
||||
make all
|
||||
```
|
||||
|
||||
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed a bug on systems
|
||||
where `EOF != -1`. The problem is that `getc()` and the related functions do not
|
||||
return `-1` on EOF or error but rather `EOF`. However `EOF` is not required to be
|
||||
`-1` but merely an int < 0 and this program assumed that `getc()` will return
|
||||
`-1` on EOF or error, not `EOF`. On systems where `EOF != -1` it could be a
|
||||
problem. For the same reason one should not use `EOF` for the `getopt()`
|
||||
`-1` on EOF or error, not `EOF`. On systems where `EOF != -1` it could result in
|
||||
an infinite loop (for the same reason one should not use `EOF` for the `getopt()`
|
||||
functions as they return `-1` when all options are parsed (for details on the
|
||||
definition of `EOF` see `7.21 Input/output<stdio.h>` subsection 1 of the
|
||||
standard). An interesting problem occurred where changing the `-1` to `EOF`
|
||||
standard)). An interesting problem occurred where changing the `-1` to `EOF`
|
||||
caused both `warning: illegal character encoding in string literal` and `error:
|
||||
source file is not valid UTF-8`. But since `EOF` is simply an int < 0 and making
|
||||
the loop condition check that the return value is >= 0 does not cause a
|
||||
@@ -28,7 +30,9 @@ assistance!
|
||||
|
||||
## To run:
|
||||
|
||||
./shapiro &
|
||||
```sh
|
||||
./shapiro &
|
||||
```
|
||||
|
||||
## Try:
|
||||
|
||||
@@ -86,7 +90,7 @@ obfuscation is a six member client/server hierarchy.
|
||||
(See the [shapiro.md](shapiro.md) file for a detailed description of the
|
||||
algorithm.)
|
||||
|
||||
Lint complains about: precedence confusion, `K` may be used before set,
|
||||
`lint` complains about: precedence confusion, `K` may be used before set,
|
||||
main() returns random value to invocation environment, value type used
|
||||
inconsistently, value type declared inconsistently, function argument
|
||||
(number) used inconsistently, function returns value which is always
|
||||
|
||||
+11
-10
@@ -1,14 +1,16 @@
|
||||
# Worst Abuse of the Rules
|
||||
|
||||
Szymon Rusinkiewicz
|
||||
Massachusetts Institute of Technology
|
||||
305 Memorial Dr., Room 005B
|
||||
Cambridge, Ma 02139
|
||||
USA
|
||||
Szymon Rusinkiewicz
|
||||
Massachusetts Institute of Technology
|
||||
305 Memorial Dr., Room 005B
|
||||
Cambridge, Ma 02139
|
||||
USA
|
||||
|
||||
## To build:
|
||||
|
||||
make all
|
||||
```sh
|
||||
make all
|
||||
```
|
||||
|
||||
## To run:
|
||||
|
||||
@@ -36,10 +38,9 @@ compiler can't, the build instructions supplied with this entry
|
||||
will produce an executable file. On most systems, the stdout
|
||||
from the executable will exactly match original source.
|
||||
|
||||
In the future, the contest rules will specify a minimum size
|
||||
that is one character larger than this entry, forever eliminating
|
||||
this sort of program from contest. After all, how many variations
|
||||
can one make on this entry? :-)
|
||||
In the future, the contest rules will specify a minimum size that is one
|
||||
character larger than this entry, forever eliminating this sort of program from
|
||||
the contest. After all, how many variations can one make on this entry? :-)
|
||||
|
||||
## Author's remarks:
|
||||
|
||||
|
||||
+24
-17
@@ -1,14 +1,16 @@
|
||||
# Best X11 Program
|
||||
|
||||
Teemu Rantanen
|
||||
Helsinki University of Technology
|
||||
Melkonkatu 5 A 8
|
||||
00210 Helsinki
|
||||
Finland
|
||||
Teemu Rantanen
|
||||
Helsinki University of Technology
|
||||
Melkonkatu 5 A 8
|
||||
00210 Helsinki
|
||||
Finland
|
||||
|
||||
## To build:
|
||||
|
||||
make all
|
||||
```sh
|
||||
make all
|
||||
```
|
||||
|
||||
## To run:
|
||||
|
||||
@@ -98,13 +100,13 @@ the fourth is a variation of that with more nice effects.
|
||||
|
||||
|
||||
The first parameter is the operating-mode of the program. There are 4 fractal
|
||||
pairs, 3 display modes, making total of 12 modes. `Screensize` is half of the
|
||||
pairs and 3 display modes, making total of 12 modes. `screensize` is half of the
|
||||
actual `screenlength/width`. I.e. if you use 128 as a second parameter, you will
|
||||
get two 256x256 windows.
|
||||
|
||||
The program needs reasonable values for both of these parameters to
|
||||
operate. A good first try could be "0 128" or "8 128". `Colormap` has
|
||||
to be piped into the programs standard input.
|
||||
operate. A good first try could be "0 128" or "8 128". The `colormap` has
|
||||
to be redirected into the programs standard input via the `colormapfile`.
|
||||
|
||||
Note that you will need approximately `(second_parameter^2)*64` bytes of free
|
||||
main memory or the machine will swap heavily (memory references are quite random
|
||||
@@ -112,23 +114,23 @@ and may confuse paging algorithms easily). This means that for 512x512 windows
|
||||
you will need 4M of memory.
|
||||
|
||||
|
||||
### `Colormapfile`:
|
||||
### `colormapfile`
|
||||
|
||||
This is the file from which program reads colors for screen `colormap`. The
|
||||
first line of the file must be a number between `3..254`. This informs the
|
||||
program how many colors there are to be expected. This is also the maximum
|
||||
number of iterations used on picture calculations. Lines after that are X11
|
||||
color names. The program expects to find, and it uses, the number of colors
|
||||
color names. The program expects to find, and will use, the number of colors
|
||||
reported on the first line.
|
||||
|
||||
There are two `colormapfiles` to start with. One with colors and another with
|
||||
There are two `colormapfile`s to start with. One with colors and another with
|
||||
only black and white. If you have enough colors on your display you can use the
|
||||
one with colors (even on `grayscale`). The other is meant mainly for a one bit
|
||||
plane display (on which the picture looks terrible compared to a 8 bit plane
|
||||
display).
|
||||
|
||||
|
||||
### Compilation:
|
||||
### Compilation
|
||||
|
||||
You should compile this entry with an optimizing compiler with the
|
||||
highest level of optimization possible. You will also need an ANSI
|
||||
@@ -157,6 +159,8 @@ between the X server and the client is slow. (Don't try this on 9600 bps modem
|
||||
line. I did ;) )
|
||||
|
||||
|
||||
### Obfuscation
|
||||
|
||||
Obfuscation is done on different levels. Almost none of it is made at the macro
|
||||
level, so `cpp`ing the code won't give you much. Perhaps most notable is the
|
||||
algorithmic obfuscation. Simple formula has been turned into something
|
||||
@@ -166,33 +170,36 @@ left out of the program because speed of animation was one of the key issues.
|
||||
Well, obfuscated or not, some of the effects are very nice ;)
|
||||
|
||||
|
||||
### Memory refreshment:
|
||||
### Memory refreshment
|
||||
|
||||
Mandelbrot set is calculated from the formula
|
||||
|
||||
```
|
||||
|
||||
2
|
||||
Z = Z + Z
|
||||
n+1 n 0
|
||||
|
||||
```
|
||||
|
||||
and the Julian set is calculated from the formula
|
||||
|
||||
```
|
||||
|
||||
2
|
||||
Z = Z + C
|
||||
n+1 n
|
||||
|
||||
```
|
||||
|
||||
where `C` is the same throughout the picture. Both calculation are finished
|
||||
when `|Z| >= 2.0`. For the other fractals, the basic methods are the same but
|
||||
the formula is different (look at the source ;)
|
||||
the formula is different (look at the source ;) )
|
||||
|
||||
Note that Mandelbrot and Julian on this program aren't exactly correct. Find out
|
||||
why ;)
|
||||
|
||||
|
||||
### Bugs:
|
||||
### Bugs
|
||||
|
||||
- No error checking. If DISPLAY is not set program dumps core. This may also
|
||||
happen if a request of some of the resources fails e.g. getting colors.
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# Best Short Program
|
||||
|
||||
Jeff Weisberg
|
||||
University of Rochester
|
||||
Dept of Electrical Engineering
|
||||
Computer Studies Bldg
|
||||
Rochester, NY 14627
|
||||
USA
|
||||
Jeff Weisberg
|
||||
University of Rochester
|
||||
Dept of Electrical Engineering
|
||||
Computer Studies Bldg
|
||||
Rochester, NY 14627
|
||||
USA
|
||||
|
||||
## To build:
|
||||
|
||||
@@ -43,7 +43,7 @@ it was read on stdin instead of via `cc -E`.
|
||||
|
||||
## Author's remarks:
|
||||
|
||||
### Description:
|
||||
### Description
|
||||
|
||||
The following short program implements the "Yet Another" algorithm for
|
||||
generating prime numbers. It will generate all primes up to 33554432,
|
||||
@@ -53,7 +53,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:
|
||||
### Bugs
|
||||
|
||||
The alternative version ([weisberg.alt](weisberg.alt.c)) has never actually run
|
||||
to completion. After running for close to a week it had reached somewhere around
|
||||
@@ -63,7 +63,7 @@ remarkably well). As there are quite a lot of primes to be found before reaching
|
||||
the output through your favorite pager (`more` or `less`), and not output to a
|
||||
paper output device (unless you have *LOTS* of paper).
|
||||
|
||||
### Technical:
|
||||
### Technical
|
||||
|
||||
The original "Yet Another Prime Program" algorithm used here was developed as a
|
||||
Computer Architecture course micro-programming exercise, and was designed to
|
||||
|
||||
+10
-11
@@ -1,11 +1,11 @@
|
||||
# Worst Abuse of the C Preprocessor
|
||||
|
||||
Brian Westley (Merlyn LeRoy on Usenet)
|
||||
Digi International
|
||||
1906 James Ave.
|
||||
St. Paul, MN 55105
|
||||
USA
|
||||
<http://www.westley.org>
|
||||
Brian Westley (Merlyn LeRoy on Usenet)
|
||||
Digi International
|
||||
1906 James Ave.
|
||||
St. Paul, MN 55105
|
||||
USA
|
||||
<http://www.westley.org>
|
||||
|
||||
## To build:
|
||||
|
||||
@@ -20,12 +20,8 @@ game!
|
||||
|
||||
## To run:
|
||||
|
||||
```sh
|
||||
./westley
|
||||
```
|
||||
There is no running as such. See below.
|
||||
|
||||
NOTE: your terminal should be set to 80 columns, 8 character tabs, and
|
||||
wraparound.
|
||||
|
||||
|
||||
## Try:
|
||||
@@ -38,6 +34,9 @@ cc -Describe -Door westley.c
|
||||
cc -Describe -Drain westley.c
|
||||
```
|
||||
|
||||
NOTE: your terminal should be set to 80 columns, 8 character tabs, and
|
||||
wraparound.
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
Not all compiler errors are bad.
|
||||
|
||||
Reference in new issue
Block a user