Merge pull request #376 from xexyl/1991-westley

Format fixes in 1991/westley/README.md
This commit is contained in:
Landon Curt Noll authored and GitHub committed 2023-04-09 13:40:33 -07:00
commit d2a396f400
8 files changed
+210 -140

No files matched your search

+14 -10
View File
@@ -1,18 +1,22 @@
# Best Output: # Best Output:
Sean Barrett Sean Barrett
University of Maryland University of Maryland
5407 20th Place 5407 20th Place
Hyattsville MD 20782 Hyattsville MD 20782
USA USA
## To build: ## To build:
make all ```sh
make all
```
## To run: ## To run:
./buzzard ```sh
./buzzard
```
## Judges' comments: ## Judges' comments:
@@ -25,13 +29,13 @@ You are invited to try to cheat, ... if you can figure out how! :-)
### HOW TO PLAY: ### HOW TO PLAY:
When the game starts, you are at the far end of the maze from the When the game starts, you are at the far end of the maze from the
exit, looking down a corridor. To move forward, type 'f' and press exit, looking down a corridor. To move forward, type `f` and press
return. To turn 90 degrees right, type 'r'; left, 'l'. You can return. To turn 90 degrees right, type `r`; left, `l`. You can
put multiple commands on one line, and the new view will be drawn put multiple commands on one line, and the new view will be drawn
after all the moves. after all the moves.
The game ends if you get out the exit (you'll know it when you see The game ends if you get out the exit (you'll know it when you see
it) or when you type ^D. it) or when you type `^D` (EOF).
### HINTS ON HOW TO CHEAT: (rot13 to read) ### HINTS ON HOW TO CHEAT: (rot13 to read)
+15 -11
View File
@@ -1,21 +1,25 @@
# Most Useful Label: # Most Useful Label:
Christian Dupont Christian Dupont
Ecole Normale Superieure de Lyon, Ecole Normale Superieure de Lyon
Laboratoire d'Informatique Parallele Laboratoire d'Informatique Parallele
42, Rue H.Berlioz 42, Rue H.Berlioz
69009 Lyon 69009 Lyon
France France
## To build: ## To build:
make all ```sh
make all
```
## To run ## To run:
./cdupont ```sh
./cdupont
```
## Judges' comments ## Judges' comments:
Why is the following label necessary? Why is the following label necessary?
@@ -30,7 +34,7 @@ NOTE: One should remove the final trailing newline to obtain the
original source file. This step is not needed to compile original source file. This step is not needed to compile
this entry. this entry.
## Author's comments ## Author's comments:
Spoiler, rot13 to read: Spoiler, rot13 to read:
+36 -18
View File
@@ -1,36 +1,53 @@
# Best X11 Graphics: # Best X11 Graphics:
David Applegate Guy Jacobson David Applegate
School of Computer Science AT&T Bell Laboratories School of Computer Science
Carnegie Mellon University 600 Mountain Avenue Carnegie Mellon University
Pittsburgh PA 15213 Murray Hill NJ 07974 Pittsburgh PA 15213
USA USA USA
Guy Jacobson
AT&T Bell Laboratories
600 Mountain Avenue
Murray Hill NJ 07974
USA
## To build: ## To build:
make all ```sh
make all
```
## To run: ## To run:
./davidguy ip_address:server.screen ```sh
./davidguy ip_address:server.screen
```
where `ip_address` in an IP address of an X server. where `ip_address` in an IP address of an X server.
## Try: ## Try:
./davidguy 127.0.0.1:0.0 ```sh
./davidguy 127.0.0.1:0.0
```
Of course, you may need to supply a more reasonable address. :-) Of course, you may need to supply a more reasonable address. :-)
## Also try: ## Also try:
cp -f davidguy guydavid ```sh
./guydavid 127.0.0.1:0.0 cp -f davidguy guydavid
./guydavid 127.0.0.1:0.0
## Judges' comments ```
Can you determine why this makes a difference? Can you determine why this makes a difference?
## Judges' comments:
We permitted this type of entry to win because: We permitted this type of entry to win because:
- it did not require X to be on the host system - it did not require X to be on the host system
@@ -43,11 +60,11 @@ explain this further.
We are pleased that this entry has helped bring new 'life' into We are pleased that this entry has helped bring new 'life' into
the contest. the contest.
## Author's comments ## Authors' comments:
The program is a fully-functional X client. It talks directly to The program is a fully-functional X client. It talks directly to
the X server through a socket without using Xlib, Xt or any other the X server through a socket without using Xlib, Xt or any other
wussie toolkit junk. With no arguments, it will try to run wussy toolkit junk. With no arguments, it will try to run
locally using the unix-domain socket (only on BSD :-( ) or you can locally using the unix-domain socket (only on BSD :-( ) or you can
give it a command line argument identifying a display host address give it a command line argument identifying a display host address
(in dotted octet notation, like 127.0.0.1:0.0) where the X server (in dotted octet notation, like 127.0.0.1:0.0) where the X server
@@ -57,9 +74,9 @@ that the program works even when the server and the client have
different architectures). It buffers communication to the X different architectures). It buffers communication to the X
server for efficiency. server for efficiency.
[[ NOTE: The original source in davidguy.c used only an IP address NOTE: The original source in davidguy.c used only an IP address
argument (assumed :0.0) and assumed the color of black argument (assumed :0.0) and assumed the color of black
and white. ]] and white.
The program doesn't require any user interaction; you can just sit The program doesn't require any user interaction; you can just sit
back and watch it run. All the action takes place in the root back and watch it run. All the action takes place in the root
@@ -84,7 +101,8 @@ the program was supposed to do would still be hard to understand.
### Quasi-spoiler on internals: ### Quasi-spoiler on internals:
The program plays Conway's game of Life in the root window's The program plays [Conway's Game of
Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) in the root window's
background pixmap. It starts by setting the background to random background pixmap. It starts by setting the background to random
bits, and then plays Life, with one Life cell for each pixel of the bits, and then plays Life, with one Life cell for each pixel of the
screen. In the game of Life, a cell survives to the next round if screen. In the game of Life, a cell survives to the next round if
@@ -96,7 +114,7 @@ if it has 4 or more neighbors.
The algorithm used to compute the next generation is based on the The algorithm used to compute the next generation is based on the
observation that a cell's state in the next generation is a boolean observation that a cell's state in the next generation is a boolean
function of its current state, and the states of its 8 neighbors function of its current state, and the states of its 8 neighbors
(ie, a boolean function from 9 bits to 1 bit). This function can (i.e., a boolean function from 9 bits to 1 bit). This function can
be computed by a boolean circuit. In addition, intermediate values be computed by a boolean circuit. In addition, intermediate values
computed by the circuit can be shared between neighboring cells, computed by the circuit can be shared between neighboring cells,
reducing the number of gates per cell required. These ideas reducing the number of gates per cell required. These ideas
+47 -34
View File
@@ -1,20 +1,24 @@
# Most Well Rounded: # Most Well Rounded:
Diomidis Spinellis Diomidis Spinellis
Imperial College, University of London Imperial College, University of London
Myrsinis 1 Myrsinis 1
GR-145 62 Kifissia GR-145 62 Kifissia
Greece Greece
## To build: ## To build:
make all ```sh
make all
```
## To run: ## To run:
./dds basic_program ```sh
./a.out ./dds basic_program
./a.out
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed some segfaults in [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed some segfaults in
this entry as well as making it so `a` (was `a.out`, see below) can be generated this entry as well as making it so `a` (was `a.out`, see below) can be generated
@@ -77,10 +81,9 @@ Thank you Cody for your assistance!
## Judges' comments: ## Judges' comments:
## Try:
Notice that a file a.c has been generated. Can you tell how a.c was Notice that a file `a.c` has been generated. Can you tell how `a.c` was
produced? How does a.c relate to LANDER.BAS? produced? How does `a.c` relate to [LANDER.BAS](LANDER.BAS)?
This obfuscated program translates BASIC programs into obfuscated This obfuscated program translates BASIC programs into obfuscated
C programs by way of an obfuscated algorithm. C programs by way of an obfuscated algorithm.
@@ -89,28 +92,36 @@ NOTE: Due to minor problems with some strict ANSI C compilers, we
have supplied a more portable ANSI version. have supplied a more portable ANSI version.
## Author's comments ## Author's comments:
This program is a companion to the DDS-BASIC interpreter program that This program is a companion to the DDS-BASIC interpreter program that
was submitted to the contest in 1990. This compiles BASIC programs into was submitted to the contest in 1990. This compiles BASIC programs into
executable commands. The input format is almost identical to the input executable commands. The input format is almost identical to the input
format of the DDS-BASIC interpreter. The program needs an executable C format of the DDS-BASIC interpreter. The program needs an executable C
compiler called `cc' in your path in order to work. compiler called `cc` in your path in order to work.
Program commands: ### Program commands:
variable names A to Z variables initialized to 0 on RUN
FOR var = exp TO exp NEXT variable - variable names A to Z
GOSUB exp RETURN - FOR var = exp TO exp
GOTO exp IF exp THEN exp - GOSUB exp
INPUT variable PRINT string - GOTO exp
PRINT exp var = exp - INPUT variable
REM any text END - PRINT exp
- REM any text
- variables initialized to 0 on RUN
- NEXT variable
- RETURN
- IF exp THEN exp
- PRINT string
- var = exp
- END
Expressions are the same as the expressions of the C language. Expressions are the same as the expressions of the C language.
Many system calls and C library calls can be used. Many system calls and C library calls can be used.
Input format: ### Input format:
- Free format positioning of tokens on the line. - Free format positioning of tokens on the line.
- No space is allowed before the line number. - No space is allowed before the line number.
@@ -122,19 +133,21 @@ Error checking / error reports:
The compiler silently ignores many errors. The compiler silently ignores many errors.
Other errors may produce errors in later phases of the compilation. Other errors may produce errors in later phases of the compilation.
Can you figure out how the compiler works? Hint: ### Can you figure out how the compiler works?
The compiler is NOT written in C, so this is really a meta-obfuscated Hint:
program. The C code is an intepreter for the four register, seven
instruction COGNIMP$ machine that is contained in the s string. The compiler is NOT written in C, so this is really a meta-obfuscated
(COGNIMP$ is named after the symbolic names of the seven instructions it program. The C code is an interpreter for the four register, seven
defines (Print Output Goto Match If, iNcrement and Copy). The $ sign instruction COGNIMP$ machine that is contained in the `s` string.
is used for labels.) The actual compiler is written in COGNIMP$. (COGNIMP$ is named after the symbolic names of the seven instructions it
Browsing through the COGNIMP$ code we encouriage you to examine the defines (Print Output Goto Match If, iNcrement and Copy). The `$` sign
loops for scanning the expression in the IF statement and the way a is used for labels.) The actual compiler is written in COGNIMP$.
decision tree is implemented in order to match the statements. (Of Browsing through the COGNIMP$ code we encourage you to examine the
course the 's' string is encoded by adding one to every character of it just loops for scanning the expression in the IF statement and the way a
to confuse you). decision tree is implemented in order to match the statements. (Of
course the `s` string is encoded by adding one to every character of it just
to confuse you).
## Copyright and CC BY-SA 4.0 License: ## Copyright and CC BY-SA 4.0 License:
+19 -9
View File
@@ -1,27 +1,37 @@
# Best One Liner: # Best One Liner:
Thomas A. Fine Thomas A. Fine
Ohio State University Ohio State University
Department of Computer and Information Science Department of Computer and Information Science
2036 Neil Avenue Mall 2036 Neil Avenue Mall
Columbus, Ohio 43210 Columbus, Ohio 43210
USA USA
## To build: ## To build:
make all ```sh
make all
```
## To run:
```sh
echo text | ./fine
```
## Try: ## Try:
echo "green terra ```sh
echo "green terra
vex vex
tang tang
vend onyx vend onyx
cheryl be flashy cheryl be flashy
rail rail
clerk" | ./fine clerk" | ./fine
```
## Judges' comments ## Judges' comments:
This filter, 80 chars plus a newline, fits into a single line on most This filter, 80 chars plus a newline, fits into a single line on most
terminals (unless your terminal has a line wrap mis-feature :-)). terminals (unless your terminal has a line wrap mis-feature :-)).
+17 -13
View File
@@ -1,34 +1,38 @@
# Best Game: # Best Game:
James Bonfield James Bonfield
University of Warwick University of Warwick
7 Water End, 7 Water End
Wrestlingworth, Wrestlingworth
Sandy Beds, Sandy Beds
SG19 2HA SG19 2HA
England England
## To build: ## To build:
make all ```sh
make all
```
## To run: ## To run:
./rince ```sh
./rince
```
## Judges' comments: ## Judges' comments:
This entry has been updated to allow most ANSI C compiler. This entry has been updated to allow most ANSI C compilers.
## Author's comments ## Author's comments:
This program is a simple puzzle type game. (I'll leave you to play This program is a simple puzzle type game. (I'll leave you to play
it to see the rest of it .. :-) .) The general idea was to try and it to see the rest of it .. :-) .) The general idea was to try and
write the smallest playable game, but keep the playability and write the smallest playable game, but keep the playability and
enjoyment high. enjoyment high.
Instructions (rot 13 to read). ### Instructions (rot13 to read):
==============================
Xrl gb znc:- Xrl gb znc:-
+57 -45
View File
@@ -1,77 +1,89 @@
# Grand Prize: # Grand Prize:
Brian Westley (Merlyn LeRoy on usenet) Brian Westley (Merlyn LeRoy on usenet)
DigiBoard, Inc. DigiBoard, Inc.
1026 Blair Ave. 1026 Blair Ave.
St. Paul, MN 55104 USA St. Paul, MN 55104
USA
http://www.westley.org <http://www.westley.org>
## To build: ## To build:
make all ```sh
make all
```
## To run ## To run:
Make and run as follows: Make and run as follows:
./westley [move_location] | tee nextmove.c
```sh
where the 'move_location' is a digit from 1 to 9 that represents ./westley [move_location] | tee nextmove.c
```
where the `move_location` is a digit from 1 to 9 that represents
a move on a tic-tac-toe board: a move on a tic-tac-toe board:
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
If you omit 'move_location', then the computer moves first. For your If you omit `move_location`, then the computer moves first. For your
next move, recompile `nextmove.c` and play it again: next move, recompile `nextmove.c` and play it again:
make nextmove ```sh
./nextmove move_location | tee nextmove.c make nextmove
./nextmove move_location | tee nextmove.c
```
## Judges' comments ## Judges' comments:
We have provided the shell script, ttt, to make it easier to play the game: We have provided the shell script, [ttt](ttt.sh), to make it easier to play the game:
make ttt ```sh
./ttt [first_move] <- omit first arg to have it move first make ttt
./ttt next_move ./ttt [first_move] <- omit first arg to have it move first
./ttt next_move
The shell script determines when the game is over, and automatically ```
replaces merlyn.c with an improved version after a loss. The ttt script
has two other modes: The shell script determines when the game is over, and automatically
replaces `merlyn.c` (copied from [westley.c](westley.c) with an improved version after a loss. The [ttt](ttt.sh) script
has two other modes:
./ttt quitgame <- cancel any game in process, revert to merlyn.c ```sh
./ttt clobber <- remove all game files, revert to original source ./ttt quitgame # cancel any game in process, revert to merlyn.c
./ttt clobber # remove all game files, revert to original source
Try not to cheat, the computer has not learned how to catch you doing it. ```
## Author's comments Try not to cheat, the computer has not learned how to catch you doing it.
A tic-tac-toe self-modifying program that "learns". This C program ## Author's comments:
plays standard tic-tac-toe on itself. The code is written as a
tic-tac-toe grid; moves are carried out within the code.
The human is X, the computer 0 [sic, "zero", not letter "O"]. A tic-tac-toe self-modifying program that "learns". This C program
plays standard tic-tac-toe on itself. The code is written as a
tic-tac-toe grid; moves are carried out within the code.
The program, when run, reproduces itself with both the player's The human is `X`, the computer `0` [sic, "zero", not letter "O"].
move and the computer's move added. Recompile THIS program (using
the same compile line) and repeat until the game is finished.
If the computer wins, the "straight face" in the upper right-hand The program, when run, reproduces itself with both the player's
corner ":-|" will change into a happy face ":-)". If it is a draw, move and the computer's move added. Recompile THIS program (using
the face does not change. If the computer loses, the board is the same compile line) and repeat until the game is finished.
blanked and the face changes into a sad face ":-(". If this
happens, the blank board should replace the original program; the
computer changes its play and will continue to do so until it no
longer loses games.
If you want a program that never loses, simply replace the string If the computer wins, the "straight face" in the upper right-hand
"9999999999 :-| " with "9883857753 :-| ". corner ":-|" will change into a happy face ":-)". If it is a draw,
the face does not change. If the computer loses, the board is
blanked and the face changes into a sad face ":-(". If this
happens, the blank board should replace the original program; the
computer changes its play and will continue to do so until it no
longer loses games.
If you want a program that never loses, simply replace the string
`"9999999999 :-| "` with `"9883857753 :-| "`.
### How It Works (rot13 to read):
How It Works (rot13 to read)
----------------------------
Gur iregvpny "onef" bs gur tevq ner vqragvpny shapgvbaf, jvgu gur Gur iregvpny "onef" bs gur tevq ner vqragvpny shapgvbaf, jvgu gur
anzr bs gur shapgvba nf n(), o(), be p(). Nsgre rnpu shapgvba vf anzr bs gur shapgvba nf n(), o(), be p(). Nsgre rnpu shapgvba vf
+5
View File
@@ -490,6 +490,11 @@ will be fixed in time but it's noted here for now.
# 1991 # 1991
## [1991/westley](1991/westley/westley.c) ([README.md](1991/westley/README.md))
## STATUS: compiled executable crashes - please help us fix
This program crashes. This will be worked on in the near future.
# 1992 # 1992