1 file changed
+38
-59
+38
-59
@@ -10,84 +10,63 @@
|
|||||||
|
|
||||||
make all
|
make all
|
||||||
|
|
||||||
|
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to work with
|
||||||
|
modern compilers. Thank you Cody!
|
||||||
|
|
||||||
|
|
||||||
### To run
|
### To run
|
||||||
|
|
||||||
To have the computer guess:
|
To have the computer guess:
|
||||||
|
|
||||||
./leo [colors]
|
./leo [colors]
|
||||||
|
|
||||||
To guess the computer's number:
|
To guess the computer's number:
|
||||||
|
|
||||||
./mind [colors]
|
./mind [colors]
|
||||||
|
|
||||||
where:
|
where:
|
||||||
|
|
||||||
colors number of possible colors (1 to 15) (default: 6)
|
colors number of possible colors (1 to 15) (default: 6)
|
||||||
|
|
||||||
## Judges' comments
|
## Judges' comments
|
||||||
|
|
||||||
By default, the number of colors if 6. You may specify a
|
By default, the number of colors if 6. You may specify a
|
||||||
value of between 1 and 15 colors. See the author's notes
|
value of between 1 and 15 colors. See the author's notes
|
||||||
for instructions of how to play.
|
for instructions of how to play.
|
||||||
|
|
||||||
We look forward to more entries from the newer members of the
|
We look forward to more entries from the newer members of the
|
||||||
International Internet community.
|
International Internet community.
|
||||||
|
|
||||||
On more modern systems we had to make the following changes to get it to
|
|
||||||
compile:
|
|
||||||
|
|
||||||
|
|
||||||
--- i/1993/leo/leo.c
|
|
||||||
+++ w/1993/leo/leo.c
|
|
||||||
@@ -1,19 +1,20 @@
|
|
||||||
#include <stdio.h>
|
|
||||||
-#include <malloc.h>
|
|
||||||
+#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
+#include <time.h>
|
|
||||||
|
|
||||||
#define A(x) (e^d)&i?e:(e+=i+i/15-d,d<<=4,i<<=4,x)
|
|
||||||
#define B b+=!((e^d)&i)&&(d|=i),i<<=4,
|
|
||||||
#define C i=15,B B B B d=d<<4|d>>12,
|
|
||||||
#define D=(d=g,b=0,C b<<=4, C C C b)
|
|
||||||
#define E if(**y)goto
|
|
||||||
#define F=a[rand()%c]
|
|
||||||
#define G unsigned short
|
|
||||||
#define H e^=a[z],a[z]^=e,e^=a[z],
|
|
||||||
|
|
||||||
-void
|
|
||||||
+int
|
|
||||||
|
|
||||||
|
|
||||||
to successfully build this entry.
|
|
||||||
|
|
||||||
## Author's comments
|
## Author's comments
|
||||||
|
|
||||||
This program plays mastermind, if you call it by a name ending by
|
This program plays mastermind, if you call it by a name ending by
|
||||||
'd', otherwise it _solves_ mastermind. Call it without parameters
|
'd', otherwise it _solves_ mastermind. Call it without parameters
|
||||||
to use 6 digits (colors), or indicate the number of possible digits
|
to use 6 digits (colors), or indicate the number of possible digits
|
||||||
(you cannot change the number of positions so easily).
|
(you cannot change the number of positions so easily).
|
||||||
|
|
||||||
The number in parentheses is the number of possible combinations,
|
The number in parentheses is the number of possible combinations,
|
||||||
based on previous questions and answers. If you solve the puzzle,
|
based on previous questions and answers. If you solve the puzzle,
|
||||||
"(1)" indicates that your previous moves are enough to give correct
|
"(1)" indicates that your previous moves are enough to give correct
|
||||||
answer. If the program acts as solver and terminates prematurely,
|
answer. If the program acts as solver and terminates prematurely,
|
||||||
it means that you have mistaken in your answers to its guesses.
|
it means that you have mistaken in your answers to its guesses.
|
||||||
Question marks indicate the number of digits you have to enter
|
Question marks indicate the number of digits you have to enter
|
||||||
(either 4 when you guess or 2 when computer guesses).
|
(either 4 when you guess or 2 when computer guesses).
|
||||||
|
|
||||||
Note that the program uses the same code for both player and
|
Note that the program uses the same code for both player and
|
||||||
solver, and the only place where it makes difference is the
|
solver, and the only place where it makes difference is the
|
||||||
interactive part. Many obfuscations have been made to achieve
|
interactive part. Many obfuscations have been made to achieve
|
||||||
this. An expression giving (bulls * 16 + cows) from two numbers
|
this. An expression giving (bulls * 16 + cows) from two numbers
|
||||||
is, however, quite straightforward :-) , as well as the arithmetic
|
is, however, quite straightforward :-) , as well as the arithmetic
|
||||||
of binary coded colors-base numbers is.
|
of binary coded colors-base numbers is.
|
||||||
|
|
||||||
Limitations: maximum number of digits (colors) is 14 (1..F).
|
### Limitations: maximum number of digits (colors) is 14 (1..F).
|
||||||
|
|
||||||
Suggestions: Use terminal (or emulator) with non-destructive
|
Suggestions: Use terminal (or emulator) with non-destructive
|
||||||
backspaces. Do "disable scrolling" on cmdtool or similar emulators.
|
backspaces. Do "disable scrolling" on cmdtool or similar emulators.
|
||||||
|
|
||||||
Bugs: Please don't type ^D at the prompt!!
|
#### Bugs: Please don't type ^D at the prompt!!
|
||||||
|
|
||||||
EXAMPLE: Suppose we think of 1234:
|
EXAMPLE: Suppose we think of 1234:
|
||||||
|
|
||||||
judges-385> leo
|
judges-385> leo
|
||||||
(1296): 6433
|
(1296): 6433
|
||||||
@@ -101,7 +80,7 @@
|
|||||||
(1): 1234
|
(1): 1234
|
||||||
?? 40 # you may enter everything there
|
?? 40 # you may enter everything there
|
||||||
|
|
||||||
EXAMPLE: Guess the computer's number:
|
EXAMPLE: Guess the computer's number:
|
||||||
|
|
||||||
judges-387> mind
|
judges-387> mind
|
||||||
(1296): ???? 1122 # my strategy isn't the best, just as example
|
(1296): ???? 1122 # my strategy isn't the best, just as example
|
||||||
|
|||||||
Reference in new issue
Block a user