Makruk engines and rating list

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

User avatar
hgm
Posts: 27811
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Makruk engines and rating list

Post by hgm »

Ferdy wrote:No as there is still a pawn. That capture move has to be executed first.
That implies he always has to base his counting on the position before his move, and has no choice. (I do think this is more logical, as in the bare-King case it would never be advantageous to base it on the position after the move, as you cannot bare your King in your own move.)
The button to stop is shown, so the user at any time may stop counting. Probably the reason why a player need to stop counting when he wants to win is because the other player may have the chance to start counting himself to draw, situation is reversed.
Only one player can count? That would be important. Because when I had a pawnless win, and it was the opponent that would capture (or promote) the last Pawn, I would start counting myself to prevent him from counting. Then at 63 I would stop counting, so that I can win even if it would take me 127 moves.

Of course it would be logical to consider counting an implicit draw offer, and immediately declare draw whenever both are counting.
User avatar
hgm
Posts: 27811
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Makruk engines and rating list

Post by hgm »

I will do it like this:

When there is a bare King, the game will be adjudicated draw after the strong side makes his move, and the weak side count had reached the maximum on the previous move. (But mate is tested before counting, so if this move checkmates it is still a win.)

When there is no bare King, it will adjudicate a draw only one move later (i.e. after move number 65), to allow for the possibility that this side is not counting, and offer him one last opportunity to checkmate the opponent before the latter can claim the draw.

[Edit] OK, I pushed a patch that seems to work to the hgm.nubati.net repository.
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Makruk engines and rating list

Post by Ferdy »

hgm wrote:[Edit] OK, I pushed a patch that seems to work to the hgm.nubati.net repository.
Is there winboard exe file to try?
User avatar
hgm
Posts: 27811
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Makruk engines and rating list

Post by hgm »

Not yet. Because the virus scanner deleted Cygwin from my laptop, and a newly installed Cygwin comes with a gcc that no longer support MinGW compiles, and my modemis broken, and my desktop where I still have Cygwin is out of range of the neighbor's WiFi, compiling WinBoard is not trivial for me. But I will work on it today.
User avatar
hgm
Posts: 27811
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Makruk engines and rating list

Post by hgm »

OK, I uploaded a bare (zipped) executable to http://hgm.nubati.net/winboard.zip . It applies the counting adjudication in Makruk whenever legality checking is on, and the -ruleMoves are set >= 0. Officially you should set it to 0 in Makruk (with the risk that some games might take years). And it will consider engine draw claims in Makruk false claims even when the reversible ply counter >= 100.

Note that Fairy-Max will issue draw claims after 50 reversible moves unless you alter the setting of the "Claim draw after" option (e.g.to 1000).
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Makruk engines and rating list

Post by Ferdy »

hgm wrote:OK, I uploaded a bare (zipped) executable to http://hgm.nubati.net/winboard.zip . It applies the counting adjudication in Makruk whenever legality checking is on, and the -ruleMoves are set >= 0. Officially you should set it to 0 in Makruk (with the risk that some games might take years). And it will consider engine draw claims in Makruk false claims even when the reversible ply counter >= 100.

Note that Fairy-Max will issue draw claims after 50 reversible moves unless you alter the setting of the "Claim draw after" option (e.g.to 1000).
Adjudications on 64 move draw works so far after some tests.

I am also testing with engine claiming insufficient material. So far winboard considers kpk as:

Code: Select all

{False draw claim: 'Draw by insufficient material'}
During the test I turned off "draw if insufficient material" and "detect mates" and "verify engine claims" were turned on. ruleMoves is set to 0.
Other basic ending that can be claimed as draw:
kpkp
kqk
kqkq
kqkp
knk
knkp
User avatar
hgm
Posts: 27811
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Makruk engines and rating list

Post by hgm »

Well, KQKQ is like KBKB in chess. There are mates with unlike Q. But WinBoard should already know this. The only think it does not know is that Pawns can only promote to Q in Makruk. I guess it should count Pawns there as Q on the color of the promotion square.
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Makruk engines and rating list

Post by Ferdy »

hgm wrote:OK, I uploaded a bare (zipped) executable to http://hgm.nubati.net/winboard.zip . It applies the counting adjudication in Makruk whenever legality checking is on, and the -ruleMoves are set >= 0. Officially you should set it to 0 in Makruk (with the risk that some games might take years). And it will consider engine draw claims in Makruk false claims even when the reversible ply counter >= 100.

Note that Fairy-Max will issue draw claims after 50 reversible moves unless you alter the setting of the "Claim draw after" option (e.g.to 1000).
An example game on 64 move draw where white's claim is right because it is able to move 65 moves (after pawnless position) without being mated, but WB considered it as false claim.

Code: Select all

[Event "Computer Chess Game"]
[Site "i7-2600K"]
[Date "2017.02.24"]
[Round "50"]
[White "Bilis v2.1.11"]
[Black "Bilis v2.1.12b"]
[Result "0-1"]
[TimeControl "60+1"]
[Variant "makruk"]
[Annotator "8. +0.30   7... -0.28"]

1. e4 f5 2. Nd2 fxe4 3. fxe4 c5 4. Ngf3 Nc6 5. Mf2 Se7 6. Se2 Mc7 7. Kc2
Kf7 {-0.28/15 1.5} 8. d4 {+0.30/16 1.5} Nf6 {-0.37/15 1.5} 9. Sb2
{+0.19/16 1.5} Sb7 {-0.17/15 1.5} 10. Se3 {+0.17/16 1.5} g5 {-0.16/14 1.5}
11. a4 {+0.29/13 1.5} cxd4 {-0.05/14 1.5} 12. Nxd4 {+0.15/12 0.4} g4
{-0.05/15 1.5} 13. b4 {-0.01/15 1.5} gxh3=M {-0.10/14 1.5} 14. Rxh3
{+0.07/15 1.2} d5 {-0.05/13 1.5} 15. Nxc6 {-0.01/13 1.5} Sxc6
{-0.23/15 1.1} 16. c4 {-0.08/13 1.5} dxe4 {-0.25/14 1.5} 17. Nxe4
{+0.02/13 0.7} a5 {-0.10/16 1.4} 18. Nxf6 {+0.16/16 1.5} Sxf6
{+0.01/17 0.5} 19. Sc3 {-0.02/15 1.5} axb4 {+0.00/20 1.3} 20. Sxb4
{+0.00/15 0.4} Sg5 {-0.01/18 1.3} 21. Rhh1 {-0.05/16 1.5} Sg4
{+0.15/16 1.5} 22. Rhb1 {+0.00/17 1.5} Md6 {+0.17/17 1.5} 23. Rd1
{-0.14/15 1.5} Ke7 {+0.19/18 1.4} 24. Se4 {-0.02/16 1.4} h5 {+0.03/15 1.4}
25. Rd2 {-0.05/14 1.5} Mc5 {+0.40/15 1.4} 26. Sb5 {+0.00/16 1.2} Sxb5
{+0.14/18 1.4} 27. cxb5 {-0.25/15 0.8} Rhd8 {+0.19/17 0.9} 28. Rxd8
{-0.18/18 1.5} Rxd8 {+0.26/18 0.5} 29. Re1 {-0.19/16 1.5} Ra8
{+0.71/17 1.4} 30. Kb3 {-0.32/18 1.2} Rf8 {+0.55/18 1.4} 31. Re2
{-0.78/16 1.4} Sf3 {+0.99/19 1.4} 32. Sxf3 {-0.90/20 1.3} Rxf3+
{+0.82/18 1.0} 33. Kb2 {-1.03/19 1.4} Md4 {+1.05/18 1.4} 34. Rc2
{-0.78/18 1.3} e5 {+1.02/16 1.4} 35. Rc7+ {-0.80/17 1.4} Kd8 {+1.09/17 1.4}
36. Rc2 {-1.00/17 1.4} Ke8 {+0.71/17 1.4} 37. Rc8+ {-0.80/17 1.4} Kf7
{+1.07/17 1.4} 38. Rc7+ {-0.91/16 1.4} Kg6 {+0.91/18 1.4} 39. Rc6+
{-0.81/16 1.4} Kf5 {+0.82/17 1.1} 40. Me1 {-0.54/16 1.4} Rxg3
{+0.63/16 1.4} 41. Rxb6 {-0.58/17 1.4} Rg2+ {+0.50/17 1.4} 42. Kc1
{-0.99/16 1.4} Ra2 {+0.86/17 1.4} 43. Rh6 {-1.01/15 1.4} Kg4 {+1.15/14 1.2}
44. Ra6 {-1.04/15 1.2} Kf3 {+1.19/14 1.4} 45. a5 {-1.06/13 1.4} Ke2
{+1.36/14 1.4} 46. Kb1 {-1.19/16 1.4} Ra4 {+1.41/18 1.4} 47. Kc2
{-1.09/16 1.4} h4 {+1.26/16 1.4} 48. Kb3 {-1.08/15 1.1} Ra1 {+1.32/17 1.4}
49. Rh6 {-1.16/17 1.3} Rxa5 {+1.37/16 1.4} 50. Kb4 {-1.11/17 1.4} Ra8
{+1.37/17 1.4} 51. Rxh4 {-1.06/17 1.4} Kxe1 {+1.20/17 1.1} 52. b6=M
{-1.09/16 1.4} Rc8 {+1.20/15 1.4} 53. Ka5 {-1.20/15 1.4} Kd2 {+1.35/14 1.3}
54. Ka6 {-1.20/15 1.4} Ke2 {+1.36/15 1.4} 55. Kb7 {-1.23/14 1.4} Rc1
{+1.38/15 1.3} 56. Ka7 {-1.26/15 1.4} Kd3 {+1.61/14 1.3} 57. Rh3+
{-1.33/15 1.4} Kc4 {+1.42/15 1.3} 58. Rh4 {-1.52/16 1.3} Rg1 {+1.46/16 1.3}
59. Kb7 {-1.36/17 1.3} Rg7+ {+1.46/16 1.3} 60. Mc7 {-1.34/17 1.3} Rg6
{+1.47/18 1.1} 61. Kc8 {-1.68/17 1.3} Kd5 {+1.82/18 1.3} 62. Rh5
{-1.84/15 1.3} Kc6 {+1.85/16 1.3} 63. Rh8 {-1.90/17 1.3} e4 {+1.82/16 1.3}
64. Rd8 {-1.80/17 1.2} Me5 {+1.90/16 1.3} 65. Kb8 {-1.84/15 1.3} Rg4
{+1.82/16 1.3} 66. Re8 {-1.80/16 1.3} Rg5 {+1.85/16 1.3} 67. Re6+
{-1.77/15 1.3} Kd7 {+1.79/15 1.3} 68. Rb6 {-1.68/15 1.1} Rg1 {+1.71/15 1.3}
69. Rb4 {-1.55/15 1.3} Re1 {+1.58/15 1.3} 70. Kb7 {-1.57/16 1.2} Mf4
{+1.59/15 1.3} 71. Mb6 {-1.62/13 1.3} Kd6 {+1.58/14 1.3} 72. Ra4
{-1.72/14 1.3} Re2 {+1.59/13 1.3} 73. Rd4+ {-1.34/14 1.3} Ke6
{+1.20/15 1.1} 74. Mc5 {-1.22/16 1.3} Me5 {+1.25/16 1.3} 75. Rd1
{-1.25/16 1.3} Rh2 {+1.30/16 1.3} 76. Kc6 {-1.04/16 1.3} Rh8 {+1.01/16 1.3}
77. Re1 {-0.99/17 1.3} Rc8+ {+1.01/17 1.3} 78. Kb7 {-0.98/18 1.3} Rxc5
{+1.01/18 1.3} 79. Rxe4 {-0.98/17 1.3} Rc1 {+1.01/17 1.3} 80. Rb4
{-0.98/17 1.3} Rc3 {+1.00/16 1.3} 81. Rb6+ {-0.98/16 1.3} Kd5
{+1.00/17 1.1} 82. Kb8 {-0.98/17 1.1} Rc1 {+1.00/16 1.3} 83. Rb5+
{-0.98/16 1.3} Ke4 {+1.00/17 1.3} 84. Rb2 {-0.98/16 1.3} Rd1 {+1.00/16 1.3}
85. Re2+ {-0.98/16 1.1} Kd5 {+1.01/15 1.3} 86. Rc2 {-0.98/17 1.2} Rb1+
{+1.00/15 1.3} 87. Kc7 {-0.98/17 1.3} Ke6 {+1.00/17 1.3} 88. Rc6+
{-0.98/17 1.2} Kf5 {+1.00/17 1.3} 89. Kd7 {-0.98/15 1.1} Rd1+
{+1.00/16 1.2} 90. Ke7 {-0.98/16 1.3} Rg1 {+1.00/16 1.3} 91. Rc2
{-0.98/16 1.3} Rg7+ {+1.00/16 1.2} 92. Kd8 {-0.98/18 1.0} Ke6
{+1.00/17 1.2} 93. Rc6+ {-0.98/16 1.3} Kd5 {+1.00/17 1.2} 94. Rc7
{-0.98/15 1.3} Rg1 {+1.00/16 1.2} 95. Rc2 {-0.99/15 1.2} Rg8+
{+1.00/16 1.2} 96. Kd7 {-0.98/17 1.3} Rg7+ {+1.00/16 1.2} 97. Kc8
{-0.98/18 1.0} Ra7 {+1.00/17 1.2} 98. Rc7 {-0.98/16 1.2} Ra2 {+1.00/16 1.2}
99. Kd7 {-0.99/16 1.0} Rf2 {+1.00/16 1.2} 100. Rc3 {-0.98/14 1.2} Rf7+
{+1.00/17 1.2} 101. Kc8 {-0.99/16 1.2} Ke6 {+1.00/17 1.2} 102. Rc2
{-0.99/16 1.2} Rf8+ {+1.01/16 1.2} 103. Kc7 {-0.99/16 1.2} Rg8
{+1.00/16 1.2} 104. Rc6+ {-0.98/16 1.2} Kd5 {+1.00/17 1.2} 105. Rc1
{-0.99/15 1.2} Rg7+ {+1.00/16 1.2} 106. Kb8 {-0.99/16 1.2} Rg3
{+1.01/16 1.1} 107. Kb7 {-0.99/16 1.2} Rb3+ {+1.00/16 1.2} 108. Kc7
{-0.98/18 1.2} Ke6 {+1.00/16 1.2} 109. Rc6+ {-0.98/17 1.2} Kf5
{+1.00/17 1.2} 110. Kc8 {-0.98/17 1.2} Rd3 {+1.00/18 1.2} 111. Rc1
{-0.99/16 1.2} Rd6 {+1.00/17 1.2} 112. Rh1 {-0.98/16 1.1} Rg6
{+1.00/16 1.2} 113. Kd7 {-0.97/14 1.2} Rg7+ {+1.00/17 1.2} 114. Kc6
{-0.97/16 1.2} Ra7 {+0.99/13 1.2} 115. Rh5+ {-0.98/15 1.2} Ke4
{+0.99/15 1.0} 116. Rh2 {-0.97/15 1.2} Ra6+ {+0.99/14 1.2} 117. Kd7
{-0.96/15 1.2} Rd6+ {+0.99/14 1.2} 118. Ke7 {-0.97/15 1.2} Rb6
{+0.99/15 1.2} 119. Rd2 {-0.96/14 1.0} Rc6 {+0.99/15 1.2} 120. Kd7
{-0.96/14 1.2} Rg6 {+0.99/15 1.2} 121. Re2+ {-0.96/15 1.1} Kf4
{+0.99/16 1.1} 122. Re1 {-0.96/15 1.2} Rd6+ {+0.99/15 1.2} 123. Ke7
{-0.96/15 1.2} Rc6 {+0.99/16 1.0} 124. Rf1+ {-0.96/15 1.2} Ke4
{+0.99/16 1.2} 125. Re1+ {-0.96/15 1.2} Kd5 {+0.99/16 1.2} 126. Rd1+
{-0.96/16 1.2} Md4 {+0.98/16 1.2} 127. Re1 {-0.97/16 1.2} Ra6
{+0.99/16 1.2} 128. Rd1 {-0.96/16 1.2} Ra7+ {+0.99/16 1.2} 129. Kf6
{-0.96/16 1.2} Ra2 {+0.99/16 1.2} 130. Ke7 {-0.96/15 1.2} Rf2
{+0.99/16 1.2} 131. Ra1 {-0.96/15 1.2} Rc2 {+0.99/15 1.2} 132. Rd1
{-0.96/15 1.0} Re2+ {+0.99/16 1.2} 133. Kf7 {-0.96/15 1.2} Rf2+
{+0.99/14 1.2} 134. Ke8 {-0.96/17 1.0} Rf3 {+0.99/15 1.2} 135. Ke7
{-0.96/16 1.2} Re3+ {+0.98/14 1.2} 136. Kf6 {-0.89/13 1.2} Rc3
{+0.97/13 1.2} 137. Kf5 {+0.00/14 1.0} Rf3+ {+0.00/13 0.9} 138. Kg4
{+0.00/27 1.0} Rf2 {+0.00/25 1.0} 139. Re1 {+0.00/38 1.0} Me5
{+0.00/42 1.0} 140. Rc1 {+0.00/62 1.0} Rf8 {+0.00/100 0.6} 141. Rd1+
{+0.00/100 0.3} Ke6 {+0.00/100 0.1} 142. Rd6+ {+0.00/100 0.1} Mxd6
{+0.00/100 0.1} 143. Kg3 {+0.00/100 0.1} Me5 {+0.00/100 0.1} 144. Kg4
{+0.00/100 0.1}
{False draw claim: 'Draw by 64 move rule'} 0-1