domino14 / macondo

A crossword board game AI, written in Go
https://domino14.github.io/macondo
GNU General Public License v3.0
48 stars 10 forks source link

using `set lexicon`, then loading a GCG does not keep the set lexicon #95

Closed domino14 closed 1 month ago

domino14 commented 4 years ago

I really thought I'd solved the endgame algorithm even if it was slow. This endgame does not solve:

macondo> endgame 10
plies 10, deepening true, simpleEval false, pruningDisabled false

   A B C D E F G H I J K L M N O                    Matthew_           498
   ------------------------------    ->                Nigel      EFL  434
 1|=   G R A N T E D     '     L
 2|  X I     "     A B B O T C Y    Bag + unseen: (1)
 3|    -       F E G     W O   A
 4|'     -     E U O U A E     M    J
 5|        -     O     D
 6|  "       " O I   " V   I "
 7|E A N     M O   '   O   N
 8|C H   Q U I R T   D u D S   =
 9|H I O I     I   '   T   T
10|I "   N A P E     " R   A "      Turn 35:
11|N       U R         Y   R        Matthew_ passed, holding a rack of J
12|G     W A I   Z       -     '
13|    -   S L E E V E E n -
14|  -       L   P   "       -
15|=     '       S T A R K E N S

{"level":"info","time":"2020-09-12T00:36:40-04:00","message":"Spread swing estimate found after 1 plies: 47"}
{"level":"info","time":"2020-09-12T00:36:40-04:00","message":"Best seq so far is [<0xc05eb2c780 action: play word: N4 ELF score: 31 tp: 3 leave:  equity: 0.000 valu: 47.000>]"}
{"level":"info","time":"2020-09-12T00:36:40-04:00","message":"Spread swing estimate found after 2 plies: 57"}
{"level":"info","time":"2020-09-12T00:36:40-04:00","message":"Best seq so far is [<0xc05eb2c8c0 action: play word: N6 FE score: 28 tp: 2 leave: L equity: 0.000 valu: 45.750> <0xc05eb2d5e0 action: pass leave: J equity: 0.000 valu: -29.000>]"}
{"level":"info","time":"2020-09-12T00:36:40-04:00","message":"Spread swing estimate found after 3 plies: 57"}
{"level":"info","time":"2020-09-12T00:36:40-04:00","message":"Best seq so far is [<0xc05eae3900 action: play word: A6 L...... score: 13 tp: 1 leave: EF equity: 0.000 valu: 37.750> <0xc05eb88780 action: pass leave: J equity: 0.000 valu: -44.000> <0xc05f078be0 action: play word: N6 FE score: 28 tp: 2 leave:  equity: 0.000 valu: 44.000>]"}
{"level":"info","time":"2020-09-12T00:36:40-04:00","message":"Spread swing estimate found after 4 plies: 57"}
{"level":"info","time":"2020-09-12T00:36:40-04:00","message":"Best seq so far is [<0xc05eae3900 action: play word: A6 L...... score: 13 tp: 1 leave: EF equity: 0.000 valu: 37.750> <0xc05eb88780 action: pass leave: J equity: 0.000 valu: -44.000> <0xc05f078be0 action: play word: N6 FE score: 28 tp: 2 leave:  equity: 0.000 valu: 44.000> <0xc05f541a40 action: pass leave: J equity: 0.000 valu: -16.000>]"}
{"level":"info","time":"2020-09-12T00:36:40-04:00","message":"Spread swing estimate found after 5 plies: 57"}
{"level":"info","time":"2020-09-12T00:36:40-04:00","message":"Best seq so far is [<0xc05eae3900 action: play word: A6 L...... score: 13 tp: 1 leave: EF equity: 0.000 valu: 37.750> <0xc05eb88780 action: pass leave: J equity: 0.000 valu: -44.000> <0xc05f078be0 action: play word: N6 FE score: 28 tp: 2 leave:  equity: 0.000 valu: 44.000> <0xc05f541a40 action: pass leave: J equity: 0.000 valu: -16.000>]"}
{"level":"info","time":"2020-09-12T00:36:41-04:00","message":"Spread swing estimate found after 6 plies: 57"}
{"level":"info","time":"2020-09-12T00:36:41-04:00","message":"Best seq so far is [<0xc05eb2c8c0 action: play word: N6 FE score: 28 tp: 2 leave: L equity: 0.000 valu: 45.750> <0xc05eb2d5e0 action: pass leave: J equity: 0.000 valu: -29.000> <0xc05f0795e0 action: play word: A6 L...... score: 13 tp: 1 leave:  equity: 0.000 valu: 29.000> <0xc05f6e8c80 action: pass leave: J equity: 0.000 valu: -16.000>]"}
{"level":"info","time":"2020-09-12T00:36:41-04:00","message":"Spread swing estimate found after 7 plies: 57"}
{"level":"info","time":"2020-09-12T00:36:41-04:00","message":"Best seq so far is [<0xc05eae3900 action: play word: A6 L...... score: 13 tp: 1 leave: EF equity: 0.000 valu: 37.750> <0xc05eb88780 action: pass leave: J equity: 0.000 valu: -44.000> <0xc05f078be0 action: play word: N6 FE score: 28 tp: 2 leave:  equity: 0.000 valu: 44.000> <0xc05f541a40 action: pass leave: J equity: 0.000 valu: -16.000>]"}
{"level":"info","time":"2020-09-12T00:36:42-04:00","message":"Spread swing estimate found after 8 plies: 57"}
{"level":"info","time":"2020-09-12T00:36:42-04:00","message":"Best seq so far is [<0xc05eb2c8c0 action: play word: N6 FE score: 28 tp: 2 leave: L equity: 0.000 valu: 45.750> <0xc05eb2d5e0 action: pass leave: J equity: 0.000 valu: -29.000> <0xc05f0795e0 action: play word: A6 L...... score: 13 tp: 1 leave:  equity: 0.000 valu: 29.000> <0xc05f6e8c80 action: pass leave: J equity: 0.000 valu: -16.000>]"}
{"level":"info","time":"2020-09-12T00:36:42-04:00","message":"Spread swing estimate found after 9 plies: 57"}
{"level":"info","time":"2020-09-12T00:36:42-04:00","message":"Best seq so far is [<0xc05eae3900 action: play word: A6 L...... score: 13 tp: 1 leave: EF equity: 0.000 valu: 37.750> <0xc05eb88780 action: pass leave: J equity: 0.000 valu: -44.000> <0xc05f078be0 action: play word: N6 FE score: 28 tp: 2 leave:  equity: 0.000 valu: 44.000> <0xc05f541a40 action: pass leave: J equity: 0.000 valu: -16.000>]"}
{"level":"info","time":"2020-09-12T00:36:43-04:00","message":"Spread swing estimate found after 10 plies: 57"}
{"level":"info","time":"2020-09-12T00:36:43-04:00","message":"Best seq so far is [<0xc05eb2c8c0 action: play word: N6 FE score: 28 tp: 2 leave: L equity: 0.000 valu: 45.750> <0xc05eb2d5e0 action: pass leave: J equity: 0.000 valu: -29.000> <0xc05f0795e0 action: play word: A6 L...... score: 13 tp: 1 leave:  equity: 0.000 valu: 29.000> <0xc05f6e8c80 action: pass leave: J equity: 0.000 valu: -16.000>]"}
{"level":"info","time":"2020-09-12T00:36:43-04:00","message":"Best spread found: 57"}
Best sequence has a spread difference of 57
Best sequence:
1) N6 FE
2) (Pass)
3) A6 L......
4) (Pass)

the correct sequence is EECHING/LEECHING/FLEECHING (with passes in between) for a total spread difference of 65

ARGH!!!!

domino14 commented 4 years ago

Even with iterative deepening and alpha-beta pruning off it gives the same result. (Is the straight minimax algorithm buggy?)

domino14 commented 4 years ago

This might actually be a set lexicon bug? The endgame tree does not seem to be generating any CSW-only plays (A6 EECHING#).

domino14 commented 1 month ago

pretty sure this is not a bug anymore