fix 2020/endoh1 Makefile and README.md
This commit is contained in:
1 parent
34e612b95a
commit
345f82c99b
2 files changed
+54
-35
No files matched your search
+10
-8
@@ -102,7 +102,7 @@ CINCLUDE=
|
||||
#CINCLUDE= -include stdio.h
|
||||
#CINCLUDE= -include stdlib.h -include stdio.h
|
||||
#CINCLUDE= -I ${X11_INCDIR}
|
||||
#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2
|
||||
#CINCLUDE= `${SDL2_CONFIG} --cflags`
|
||||
|
||||
# Optimization
|
||||
#
|
||||
@@ -126,7 +126,7 @@ CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT}
|
||||
#LIBS=
|
||||
LIBS= -lncurses
|
||||
#LIBS= -L ${X11_LIBDIR} -lX11
|
||||
#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL
|
||||
#LIBS= `${SDL2_CONFIG} --libs`
|
||||
|
||||
# C compiler to use
|
||||
#
|
||||
@@ -166,11 +166,12 @@ ENTRY= endoh1
|
||||
PROG= prog
|
||||
#
|
||||
OBJ= ${PROG}.o
|
||||
DATA=
|
||||
DATA= hilbert16x8.txt hilbert2x2.txt hilbert4x4.txt hilbert8x8.txt ioccc.txt \
|
||||
megumin.txt unwinnable.txt
|
||||
TARGET= ${PROG}
|
||||
#
|
||||
ALT_OBJ= ${PROG}.orig.o
|
||||
ALT_TARGET= ${PROG}.orig
|
||||
ALT_OBJ= ${PROG}.alt.o
|
||||
ALT_TARGET= ${PROG}.alt
|
||||
|
||||
|
||||
#################
|
||||
@@ -187,14 +188,14 @@ all: data ${TARGET}
|
||||
${PROG}: ${PROG}.c
|
||||
${CC} ${CFLAGS} $< -o $@ ${LIBS}
|
||||
|
||||
${PROG}.alt: ${PROG}.alt.c
|
||||
${CC} ${CFLAGS} $< -o $@ ${LIBS}
|
||||
|
||||
# alternative executable
|
||||
#
|
||||
alt: data ${ALT_TARGET}
|
||||
@${TRUE}
|
||||
|
||||
${PROG}.alt: ${PROG}.alt.c
|
||||
${CC} ${CFLAGS} $< -o $@ ${LIBS}
|
||||
|
||||
# data files
|
||||
#
|
||||
data: ${DATA}
|
||||
@@ -329,3 +330,4 @@ pluto: charon
|
||||
@echo "dwarf is a type of planet"
|
||||
@echo "therefore, $@ is a planet"
|
||||
@echo "having lots of planets is good feature because supernovae can help ${MAKE} a lot of them"
|
||||
|
||||
+44
-27
@@ -1,25 +1,34 @@
|
||||
# Most explosive
|
||||
|
||||
```
|
||||
Yusuke Endoh
|
||||
Twitter: @mametter
|
||||
```
|
||||
|
||||
## To build:
|
||||
|
||||
make all
|
||||
```sh
|
||||
make
|
||||
```
|
||||
|
||||
### To run
|
||||
### To run:
|
||||
|
||||
./prog
|
||||
```sh
|
||||
./prog
|
||||
```
|
||||
|
||||
### Try:
|
||||
|
||||
# Try resizing the terminal window before the first click.
|
||||
```sh
|
||||
|
||||
# Try resizing the terminal window after the first click.
|
||||
# Try resizing the terminal window before the first click.
|
||||
|
||||
./prog ioccc.txt
|
||||
# Try resizing the terminal window after the first click.
|
||||
|
||||
./prog unwinnable.txt
|
||||
./prog ioccc.txt
|
||||
|
||||
./prog unwinnable.txt
|
||||
```
|
||||
|
||||
### Alternate code
|
||||
|
||||
@@ -27,7 +36,9 @@ An alternate version of this entry, prog.alt.c, is provided. This alternate cod
|
||||
|
||||
To compile this alternate version:
|
||||
|
||||
make alt
|
||||
```sh
|
||||
make alt
|
||||
```
|
||||
|
||||
Use `prog.alt` as you would `prog` above.
|
||||
|
||||
@@ -59,8 +70,10 @@ All you have to do is (A). You can test if you are lucky or not.
|
||||
|
||||
It uses ncurses:
|
||||
|
||||
$ gcc -o prog prog.c -lncurses
|
||||
$ ./prog
|
||||
```sh
|
||||
gcc -o prog prog.c -lncurses
|
||||
./prog
|
||||
```
|
||||
|
||||
You will see a terminal-wide field of a minesweeper. Probe a cell by mouse click.
|
||||
If a cell turns out to have a mine (or not), the program determines whether its neighbors have a mine or not, and automatically probes (or flags) the cell.
|
||||
@@ -81,9 +94,9 @@ If the number of a cell is equal to the count of the flagged neighbors, all the
|
||||
Example:
|
||||
|
||||
```
|
||||
? ? ? . . .
|
||||
? 3 ? => . 3 .
|
||||
! ! ! ! ! !
|
||||
? ? ? . . .
|
||||
? 3 ? => . 3 .
|
||||
! ! ! ! ! !
|
||||
```
|
||||
|
||||
Note that `?` is a unprobed cell (it is unknown whether the cell has a mine or not); `!` is a flagged cell (it is already known that the cell has a mine); and `.` is a probed cell (it is already known that the cell has no mine).
|
||||
@@ -95,9 +108,9 @@ If the number of a cell is equal to the count of the unprobed or flagged neighbo
|
||||
Example:
|
||||
|
||||
```
|
||||
. ? ? . ! !
|
||||
. 4 ? => . 4 !
|
||||
. 2 ! . 2 !
|
||||
. ? ? . ! !
|
||||
. 4 ? => . 4 !
|
||||
. 2 ! . 2 !
|
||||
```
|
||||
|
||||
#### Rule 3
|
||||
@@ -107,10 +120,10 @@ Consider two number cells A and B. If A is equal to the difference of B and the
|
||||
Example:
|
||||
|
||||
```
|
||||
? ? ? . . .
|
||||
? 1 ? ? => . 1 ? ?
|
||||
? ? 4 . . ? 4 .
|
||||
? . ! ? . !
|
||||
? ? ? . . .
|
||||
? 1 ? ? => . 1 ? ?
|
||||
? ? 4 . . ? 4 .
|
||||
? . ! ? . !
|
||||
```
|
||||
|
||||
A and B are probed cells whose numbers are, respectively, 1 and 4. The count of B's unprobed and flagged neighbors that are not A's neighbors is three (one `!` and two `?`s). Since A (1) == B (4) - the count (3), the left and top unprobed cells are probed.
|
||||
@@ -120,9 +133,9 @@ A and B are probed cells whose numbers are, respectively, 1 and 4. The count of
|
||||
Consider two number cells A and B. If B is equal to the difference of A and the count of A's unprobed and flagged neighbors that are not B's neighbors, all A's unprobed neighbors that are not B's neighbors are flagged.
|
||||
|
||||
```
|
||||
? ? ? ? ! ? ? ?
|
||||
? 3 1 2 => ! 3 1 2
|
||||
2 2 . . 2 2 . .
|
||||
? ? ? ? ! ? ? ?
|
||||
? 3 1 2 => ! 3 1 2
|
||||
2 2 . . 2 2 . .
|
||||
```
|
||||
|
||||
A and B are probed cells whose numbers are, respectively, 3 and 1. The count of A's unprobed and flagged neighbors that are not B's neighbors is two (left `?`s). Since B (1) == A (3) - the count (2), the left unprobed cells are flagged.
|
||||
@@ -135,11 +148,15 @@ Interestingly, these complex rules can be integrated to one simple rule. Analyz
|
||||
|
||||
You can also play with a prepared map.
|
||||
|
||||
$ ./prog ioccc.txt
|
||||
```sh
|
||||
./prog ioccc.txt
|
||||
```
|
||||
|
||||
The format of the text is:
|
||||
|
||||
width height number-of-mines priorities-of-each-cell...
|
||||
```
|
||||
width height number-of-mines priorities-of-each-cell...
|
||||
```
|
||||
|
||||
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.)
|
||||
@@ -153,10 +170,10 @@ Ilya Kurdyukov also pointed out a warning "ignoring return value of 'fscanf'" on
|
||||
|
||||
Don Yang (omoikane) contributed another example map "megumin.txt" which is the Explosion Arch-Wizard.
|
||||
|
||||
-----------------------------------------------------------------------------------------------------
|
||||
## Copyright:
|
||||
|
||||
(c) Copyright 1984-2020, [Leo Broukhis, Simon Cooper, Landon Curt Noll][judges] - All rights reserved
|
||||
This work is licensed under a [Creative Commons Attribution-ShareAlike 3.0 Unported License][cc].
|
||||
|
||||
[judges]: http://www.ioccc.org/judges.html
|
||||
[cc]: http://creativecommons.org/licenses/by-sa/3.0/
|
||||
-----------------------------------------------------------------------------------------------------
|
||||
Reference in new issue
Block a user