how to probe egtb from console?

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

syzygy
Posts: 5557
Joined: Tue Feb 28, 2012 11:56 pm

Re: how to probe egtb from console?

Post by syzygy »

elcabesa wrote:I'll try.
I have just noticed that Python chess now has the access to egtb
https://github.com/niklasf/python-chess

Code: Select all

>>> import chess.syzygy

>>> tablebases = chess.syzygy.Tablebases("data/syzygy")

>>> # Black to move is losing in 53 half moves (distance to zero) in this
>>> # KNBvK endgame.
>>> board = chess.Board("8/2K5/4B3/3N4/8/8/4k3/8 b - - 0 1")
>>> tablebases.probe_dtz(board)
-53

>>> tablebases.close()
I'm impressed!
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Re: how to probe egtb from console?

Post by sje »

bob wrote:One simple thing I have done in the past is to feed Crafty a FEN, then send the "egtb" command and it will return the PV if the game is won or lost, or just a draw score and drawing move otherwise.
Symbolic spits out the candidate moves with scores. I should add the auto PV in a separate command.

Code: Select all

[] sf 8/2K5/4B3/3N4/8/8/4k3/8 b - - 0 1
[] dmtb
Kd1 LoseIn26
Kd2 LoseIn26
Kd3 LoseIn27
Ke1 LoseIn26
Kf1 LoseIn26
Kf2 LoseIn26
Kf3 LoseIn26
[] sf 7k/8/8/8/8/3R4/1P6/r5K1 w - - 0 1
[] dmtb
Kf2 MateIn74
Kg2 Even
Kh2 Even
Rd1 LoseIn19
Daniel Shawul
Posts: 4185
Joined: Tue Mar 14, 2006 11:34 am
Location: Ethiopia

Re: how to probe egtb from console?

Post by Daniel Shawul »

elcabesa wrote:are thre some egtb that could be probled from console? i'd like to probe them from a python script
Scorpio egbbs are usable from python right out of the box

Code: Select all

>>> from ctypes import * 
>>> egbb = cdll.LoadLibrary("egbbso.so") 
>>> egbb.load_egbb_xmen("./",4194304,1) 
EgbbProbe 4.1 by Daniel Shawul 
10 egbbs loaded !      
-2050454970 
>>> egbb.probe_egbb_fen("2R5/8/8/4k3/8/8/6K1/8 w - -") 
5609 
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Display Auto PV command

Post by sje »

bob wrote:One simple thing I have done in the past is to feed Crafty a FEN, then send the "egtb" command and it will return the PV if the game is won or lost, or just a draw score and drawing move otherwise.
The Display Auto PV command has been added to Symbolic:

Code: Select all

[] sf 8/2Q4K/8/1q6/8/3P4/8/7k w - - 0 1
[] dapv
1. Qc3 Qg5 2. Kh8 Qe7 3. Kg8 Qe8+ 4. Kg7 Qe7+ 5. Kg6 Qe6+ 6. Kg5 Qe3+ 7. Kf5 Kg2 8. Qc4 Qf3+ 9. Kg6 Qg3+ 10. Kf7 Qf2+ 11. Ke7 Qa7+ 12. Ke6 Qb6+ 13. Kf5 Qf2+ 14. Qf4 Qc5+ 15. Qe5 Qf8+ 16. Qf6 Qc5+ 17. Ke4 Qc2 18. Qd4 Kf1 19. Kd5 Qa2+ 20. Kd6 Qg8 21. Kc7 Qf7+ 22. Qd7 Qf4+ 23. Qd6 Qf7+ 24. Kc6 Qf3+ 25. Qd5 Qf6+ 26. Kd7 Qg7+ 27. Ke8 Qh8+ 28. Ke7 Qh4+ 29. Kd7 Qa4+ 30. Kd6 Qf4+ 31. Qe5 Qf8+ 32. Kc7 Qf7+ 33. Kc6 Qf3+ 34. Qe4 Qf8 35. Kb7 Qf7+ 36. Ka6 Qa2+ 37. Kb5 Qb2+ 38. Kc4 Qa2+ 39. Kd4 Qb2+ 40. Kd5 Qb5+ 41. Kd6 Qb8+ 42. Ke7 Qc7+ 43. Ke6 Qc8+ 44. Kf7 Qc7+ 45. Kg6 Qg3+ 46. Kf6 Qd6+ 47. Kf5 Qf8+ 48. Kg4 Qg7+ 49. Kf3 Qf6+ 50. Qf4 Qc3 51. Ke4+ Ke2 52. Qe3+ Kd1 53. d4 Qc6+ 54. Kf5 Qd7+ 55. Kg6 Qd6+ 56. Kh5 Qd5+ 57. Qe5 Qf3+ 58. Kg5 Qg2+ 59. Kf6 Qa8 60. Qc5 Qd8+ 61. Kf5 Qd7+ 62. Kf4 Qf7+ 63. Qf5 Qc4 64. Qe4 Qc7+ 65. Kf3 Qc3+ 66. Kg2 Qb2+ 67. Kg1 Qb6 68. Qd3+ Ke1 69. Qe3+ Kd1 70. Kf2 Qa7 71. Qd3+ Kc1 72. Ke3 Qe7+ 73. Qe4 Qg5+ 74. Kf2 Qf6+ 75. Ke2 Qa6+ 76. Kf3 Qf1+ 77. Kg4 Qc4 78. Kf4 Qf7+ 79. Qf5 Qg7 80. d5 Qd4+ 81. Kg5 Qg7+ 82. Kh4 Qc7 83. Kg4 Kd1 84. Qd3+ Kc1 85. Qd4 Qc8+ 86. Kf4 Qf8+ 87. Ke4 Qa8 88. Kd3 Qa3+ 89. Qc3+ Kb1 90. Kd4 Qa4+ 91. Ke3 Qd7 92. Qc6 Qa7+ 93. Kd3 Qa3+ 94. Kc4 Qa2+ 95. Kb5 Qb2+ 96. Ka5 Qa3+ 97. Kb6 Qe3+ 98. Qc5 Qb3+ 99. Kc7 Ka1 100. Qd4+ Ka2 101. d6 Qg3 102. Kb6 Qb3+ 103. Ka5 Qg8 104. Qa4+ Kb1 105. Qb5+ Kc1 106. d7 Qd8+ 107. Ka6 Qa8+ 108. Kb6 Qb8+ 109. Kc6 Qa8+ 110. Kc7 Qa7+ 111. Qb7 Qa5+ 112. Qb6 Qe5+ 113. Kb7 Qe7 114. Qc7+ Kb1 115. d8=Q Qe4+ 116. Qc6 Qb4+ 117. Ka6 Qa3+ 118. Qa5 Kb2 119. Qb5+ Ka2 120. Qxa3+ Kxa3 121. Ka5 Ka2 122. Ka4 Ka1 123. Kb3 Kb1 124. Qf1#