Syzygy Endgame Explorer v. 0.2 has been released!
Besides bugfixes, it includes some new features like searching for symmetrical positions. SEE now also accepts a pgn file as an input so it can search e.g. the van der Heijden database for anticipations.
You can find the download link here.
Added new features:
- Comments after any line are allowed
- Any "sq1-sq2" combination (e.g. "a1-a4", "a1-e1", or "a1-c3") can be used to give a set of squares along a file, rank or diagonal
- A rectangular region can be given by four squares (e.g. "c5-f5-f3-c3")
- Use "~e4", "~fileD", "~rank4" to exclude some squares
- The [BlackKing], [BlackQueen], ..., [WhitePawn] keywords now can use all square collections just like [Piece1], ..., [Piece7]. Additionally, they can use the initial squares of the pieces ("sq1", "sq2",..., "sq7" or "~sq1", "~sq2", ..., "~sq7")
- New keyword [Symmetry] for setting various symmetry axes
- New keywords [Identical] and [Different] . These are replacing the functionality of [RememberFEN], [RepeatPosition] and [NotRepeatPosition] which were removed (see the modified Example 22).
- [InputTXT] was changed to [Input] and now it accepts both text (FEN lists) and pgn files.
- Now [FEN] and [FENList] accepts both stripped and standard FENs
- New [Eval] values like "not_draw" and "loss/loss"
- [OutputScreen "diag"] will output the found positions not only with FENs but also in ASCII diagrams
Example 28
******ex28.txt*******
[Tablebase "KPkp"]
[Position "1"]
[Eval "loss/loss"] //full point mutual zugzwangs
********************
Example 29
******ex29.txt*******
[Tablebase "KPkp"]
[OutputScreen "diag"]
[Position "1w"]
[Eval "win"]
[OnlyMove "yes"]
[MovedPiece "K"]
[Capture "no"]
[Check "no"]
[Position "1b"]
[Position "2w"]
[Eval "win"]
[OnlyMove "yes"]
[MovedPiece "K"]
[Capture "no"]
[Position "2b"]
[WhiteKing "sq1"] //Switchback
********************
1. Kc6! a5 2. Kb5! +-
Example 30
******ex30.txt*******
//Place interchange
[Tablebase "KPkp"]
[Position "1w"]
[Piece1 "half"]
[Eval "win"]
[OnlyMove "yes"]
[Position "1b"]
[Position "2w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "2b"]
[Position "3w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "3b"]
[WhiteKing "sq2"]
[WhitePawn "sq1"]
********************
1. Kb5! e5 2. c5 e4 3. Kc4! +- Compared to the initial position, the white king and pawn have switched positions.
Example 31
******ex31.txt*******
//During the solution, all white pieces should move.
[Tablebase "KPk"]
[Position "1w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "1b"]
[Position "2w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "2b"]
[WhiteKing "~sq1"] The white king has left its initial square.
[WhitePawn "~sq2"] The white pawn also has left its initial square.
********************
1. Kg7! Kf5 2. h5 +-
Example 32
******ex32.txt*******
//Duplex Excelsior
[Tablebase "KPkp"]
[Position "1w"]
[Piece2 "rank2"]
[Symmetry "d5-e5-e4-d4"] //We are looking for a point symmetric position.
[Eval "win"]
[OnlyMove "yes"]
[Position "1b"]
[Position "2w"]
[WhitePawn "rank4"]
[Eval "win"]
[OnlyMove "yes"]
[Position "2b"]
[Position "3w"]
[WhitePawn "rank5"]
[Eval "win"]
[OnlyMove "yes"]
[Position "3b"]
[Position "4w"]
[WhitePawn "rank6"]
[Eval "win"]
[OnlyMove "yes"]
[Position "4b"]
[Position "5w"]
[WhitePawn "rank7"]
[Eval "win"]
[OnlyMove "yes"]
[Position "5b"]
[WhiteQueen "rank8"] //Excelsior to queen
********************
White to move:
1. b4 g5 2. b5 g4 3. b6 g3 4. b7 g2 5. b8=Q g1=Q 6. Qh8+ Kg6 7. Qg8+ +-
Black to move:
1... g5 2. b4 g4 3. b5 g3 4. b6 g2 5. b7 g1=Q 6. b8=Q Qa1+ 7. Kb3 Qb1+ -+
Example 33
******ex33.txt*******
// Finding Saavedra
[Tablebase "KPkr"]
[Input "heijden.pgn"]
[Position "1w"]
[Piece1 "b6"]
[Piece2 "c6"]
[Piece3 "a1"]
[Piece4 "d5"]
********************
With ordinary pgn files, only the initial positions will be searched. One needs a specially prepared pgn file which can be searched everywhere. This has a fen string added as a comment after each move. Use pgn-extract with --fencomments and --commentlines to prepare such a pgn file.
[Event "Glasgow Weekly Citizen#414 (m)"]
[Site "?"]
[Date "1895.05.04"]
[Round "?"]
[White "Saavedra=F Barbier=G"]
[Black "(+0300.10b6a1)"]
[Result "1-0"]
[EventDate "1895.??.??"]
[SetUp "1"]
[FEN "8/8/1KP5/3r4/8/8/8/k7 w - - 0 1"]
[PlyCount "13"]
1. c7
{ 8/2P5/1K6/3r4/8/8/8/k7 b - - 0 1 }
1... Rd6+
{ 8/2P5/1K1r4/8/8/8/8/k7 w - - 1 2 }
2. Kb5
{ 8/2P5/3r4/1K6/8/8/8/k7 b - - 2 2 }
(2. Kb7 $2
{ 8/1KP5/3r4/8/8/8/8/k7 b - - 2 2 }
2... Rd7 $11
{ 8/1KPr4/8/8/8/8/8/k7 w - - 3 3 }
) 2... Rd5+
{ 8/2P5/8/1K1r4/8/8/8/k7 w - - 3 3 }
3. Kb4
{ 8/2P5/8/3r4/1K6/8/8/k7 b - - 4 3 }
3... Rd4+
{ 8/2P5/8/8/1K1r4/8/8/k7 w - - 5 4 }
4. Kb3
{ 8/2P5/8/8/3r4/1K6/8/k7 b - - 6 4 }
(4. Kc3
{
{ 8/2P5/8/8/3r4/2K5/8/k7 b - - 6 4 }
4... Rd1
{ 8/2P5/8/8/8/2K5/8/k2r4 w - - 7 5 }
5. Kc2
{ 8/2P5/8/8/8/8/2K5/k2r4 b - - 8 5 }
) 4... Rd3+
{ 8/2P5/8/8/8/1K1r4/8/k7 w - - 7 5 }
5. Kc2
{ 8/2P5/8/8/8/3r4/2K5/k7 b - - 8 5 }
5... Rd4
{ 8/2P5/8/8/3r4/8/2K5/k7 w - - 9 6 }
6. c8=R $1
{ 2R5/8/8/8/3r4/8/2K5/k7 b - - 0 6 }
(6. c8=Q $2
{ 2Q5/8/8/8/3r4/8/2K5/k7 b - - 0 6 }
6... Rc4+ $1
{ 2Q5/8/8/8/2r5/8/2K5/k7 w - - 1 7 }
7. Qxc4
{ stalemate }
{ 8/8/8/8/2Q5/8/2K5/k7 b - - 0 7 }
) 6... Ra4
{ 2R5/8/8/8/r7/8/2K5/k7 w - - 1 7 }
7. Kb3
{ 2R5/8/8/8/r7/1K6/8/k7 b - - 2 7 }
1-0
With a file prepared like this, the search will find two additional examples in the van der Heijden database where the Saavedra position was reached during play.
******ex34.txt*******// Finding the Conrady positions
[Tablebase "KRknp"]
[OutputPGN "KRknp_D23.pgn"]
Move 1:
[Position "1w"]
[Piece5 "h6"]
[Eval "win"]
[OnlyMove "yes"]
[Position "1b"]
[Eval "loss"]
Move 2:
[Position "2w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "2b"]
[Eval "loss"]
Move 3:
[Position "3w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "3b"]
[Eval "loss"]
Move 4:
[Position "4w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "4b"]
[Eval "loss"]
Move 5:
[Position "5w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "5b"]
[Eval "loss"]
Move 6:
[Position "6w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "6b"]
[Eval "loss"]
Move 7:
[Position "7w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "7b"]
[Eval "loss"]
Move 8:
[Position "8w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "8b"]
[Eval "loss"]
Move 9:
[Position "9w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "9b"]
[Eval "loss"]
Move 10:
[Position "10w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "10b"]
[Eval "loss"]
Move 11:
[Position "11w"]
[Piece1 "half"]
[Eval "win"]
[OnlyMove "yes"]
[Position "11b"]
[Eval "loss"]
Move 12:
[Position "12w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "12b"]
[Eval "loss"]
Move 13:
[Position "13w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "13b"]
[Eval "loss"]
Move 14:
[Position "14w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "14b"]
[Eval "loss"]
Move 15:
[Position "15w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "15b"]
[Eval "loss"]
Move 16:
[Position "16w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "16b"]
[Eval "loss"]
Move 17:
[Position "17w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "17b"]
[Eval "loss"]
Move 18:
[Position "18w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "18b"]
[Eval "loss"]
Move 19:
[Position "19w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "19b"]
[Eval "loss"]
Move 20:
[Position "20w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "20b"]
[Eval "loss"]
Move 21:
[Position "21w"]
[Piece1 "half"]
[Eval "win"]
[OnlyMove "yes"]
[Position "21b"]
[Eval "loss"]
Move 22:
[Position "22w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "22b"]
[Eval "loss"]
Move 23:
[Position "23w"]
[Eval "win"]
[OnlyMove "yes"]
[Position "23b"]
[Eval "loss"]
********************
6 positions were found:
8/8/7p/7n/3R4/8/k7/2K5 w - - 0 1
8/8/7p/7n/3R4/8/k7/3K4 w - - 0 1
8/8/7p/7n/k7/8/2K5/3R4 w - - 0 1
8/8/7p/7n/k7/8/2KR4/8 w - - 0 1
8/8/7p/7n/k7/3R4/2K5/8 w - - 0 1
3R4/8/7p/7n/k7/8/2K5/8 w - - 0 1
One of them is what Helmut Conrady has published in 2003 (Computer Schach und Spiele, Vol. 2, No. iv-v) as being the longest AUM (absolutely unique move) sequence in the tablebases up to 5 men:
1. Rd4+ Ka3 2. Kd3 Kb3 3. Rd6 Kb4 4. Kd4 Nf4 5. Rb6+ Ka5 6. Rf6 Ne2+ 7. Kc4 Ng3 8. Rg6 Ne4 9. Kd4 Nd2 10. Rg2 Nf3+ 11. Kc5 Ka6 12. Rg6+ Kb7 13. Kd5 h5 14. Rh6 h4 15. Rf6 Ne1 16. Rf1 Nc2 17. Rb1+ Ka6 18. Rb2 Ne1 19. Ke4 h3 20. Rb1 Nc2 21. Kd3 Na3 22. Ra1 h2 23. Rxa3+ +-
No comments:
Post a Comment