Monday, 15 April 2019

Syzygy Endgame Explorer v. 0.2

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
********************


full point mutual zugzwang

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
********************


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
********************


Win (DUPLEX)

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:

Helmut Conrady
Computerschach und Spiele
2003

White wins

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: