Complicating code in C#

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

Henk
Posts: 7216
Joined: Mon May 27, 2013 10:31 am

Re: Complicating code in C#

Post by Henk »

Already (many) months ago that Skipper won a game from Fairy-Max.
But probably lucky game. Opponent castled long and gave away a rook.
Usually Skipper gets a good position (against Fairy-Max) but gives it away in the endgame.
But if you are already a rook behind that won't go.

[pgn]
[Event "Computer Chess Game"]
[Site "LAPTOP-1FK7MTIP"]
[Date "2021.04.03"]
[Round "-"]
[White "Skipper_6"]
[Black "Fairy-Max 4.8V"]
[Result "1-0"]
[TimeControl "180+2"]
[Annotator "1. +0.17 2... +0.12"]

1. e4 {+0.17/9} c5 2. Bd3 {+0.17/8 4} Na6 {+0.12/8 5} 3. c3 {+0.65/9 4} Nc7
{+0.17/8 4} 4. Nf3 {+0.27/9 4} Nf6 {+0.09/9 17} 5. e5 {+0.50/9 4} Nfd5
{-0.08/9 6} 6. Be4 {+0.57/8 3} d6 {+0.01/8 6} 7. d4 {+0.42/7 3} f5
{+0.01/8 6} 8. Bd3 {+0.42/8 3} Be6 {-0.19/7 3} 9. dxc5 {+0.80/8 3} dxc5
{-0.44/9 7} 10. O-O {+0.67/8 3} Qd7 {-0.08/8 10} 11. Ng5 {+0.38/8 3} Bg8
{-0.03/8 3} 12. Qf3 {+0.59/6 3} g6 {+0.18/8 3} 13. Qd1 {+0.30/7 3} O-O-O
{+0.34/9 5} 14. Bc2 {+0.99/7 3} Ne6 {+0.04/9 8} 15. Nf3 {+1.32/8 3} Ndf4
{+0.03/10 9} 16. Bd2 {+1.04/8 3} Qb5 {+0.21/8 2.9} 17. b4 {+1.64/7 3} cxb4
{+0.23/6 2.7} 18. cxb4 {+1.41/7 3} Ne2+ {+0.21/7 4} 19. Kh1 {+1.65/8 3}
N6d4 {+0.12/8 4} 20. Na3 {+1.03/8 3} Qd5 {+0.16/9 5} 21. Bb3 {+1.22/8 3}
Nxb3 {-0.03/9 2.8} 22. axb3 {+0.92/8 3} Nd4 {-0.45/9 2.5} 23. Nxd4
{+1.10/9 3} Qxd4 {-1.81/9 4} 24. Qc1+ {+1.59/9 3} Kb8 {-2.64/10 9} 25. Bc3
{+1.37/8 3} Bh6 {-2.55/10 7} 26. Qb2 {+4.29/9 3} Qb6 {-2.60/9 2.4} 27. e6
{+4.83/9 3} Bxe6 {-2.81/9 4} 28. Bxh8 {+4.58/9 3} Qxb4 {-3.25/8 2.3} 29.
Be5+ {+4.79/8 3} Ka8 {-2.90/6 2.9} 30. Nc4 {+4.70/6 3} a6 {-2.77/7 5} 31.
Rfd1 {+4.89/6 3} Rxd1+ {-2.84/8 5} 32. Rxd1 {+5.22/8 2.9} Ka7 {-3.37/8 2.3}
33. Qd4+ {+5.10/8 2.9} b6 {-3.94/9 6} 34. Qd3 {+5.15/7 2.9} a5 {-3.26/8 4}
35. Bd4 {+5.19/7 2.9} Bxc4 {-3.74/8 2.4} 36. bxc4 {+5.97/8 2.9} Qd6
{-3.86/9 7} 37. Ra1 {+5.76/8 2.8} Bg7 {-3.92/9 4} 38. Rxa5+ {+6.36/9 2.8}
Kb8 {-4.48/9 2.2} 39. Rd5 {+6.45/9 2.8} Qe6 {-4.44/10 4} 40. Be3
{+6.50/8 2.8} Kc8 {-4.59/8 2.2} 41. Rd8+ {+6.45/7 2.8} Kb7 {-11.60/10 2.1}
42. Qd7+ {+7.54/9 2.8} Qxd7 {-6.00/14 2.0} 43. Rxd7+ {+7.35/11 2.8} Ka6
{-5.80/14 2.2} 44. Rxe7 {+6.81/9 2.7} Bf8 {-5.82/14 4} 45. Rxh7
{+6.91/8 2.7} Bc5 {-5.80/15 3} 46. Rg7 {+7.72/10 2.7} Ka5 {-6.33/16 2.0}
47. Bd2+ {+7.84/9 2.7} Ka4 {-5.77/15 5} 48. Rxg6 {+7.05/9 2.7} Bxf2
{-5.78/15 2.5} 49. Rf6 {+8.64/9 2.7} Kb3 {-5.80/15 5} 50. Rxf5
{+8.80/9 2.7} Bd4 {-5.95/14 1.9} 51. Rf4 {+9.35/9 2.7} Bc5 {-6.05/14 1.8}
52. g4 {+9.64/9 2.6} Kc2 {-6.13/14 3} 53. Be1 {+9.60/10 2.6} Bd6
{-6.57/13 1.9} 54. Rf6 {+9.85/8 2.6} Be5 {-6.82/13 3} 55. Rxb6
{+10.87/9 2.6} Bd4 {-7.82/14 6} 56. Rd6 {+11.62/10 2.6} Be3 {-7.30/13 2.4}
57. h4 {+11.85/9 2.6} Kb3 {-7.89/13 2.3} 58. Rd3+ {+11.93/9 2.6} Ka4
{-8.73/16 4} 59. Bg3 {+12.82/9 2.6} Bh6 {-9.60/16 6} 60. c5 {+13.59/9 2.5}
Kb5 {-9.52/16 1.9} 61. c6 {+14.48/9 2.5} Kxc6 {-10.26/17 1.7} 62. Rd6+
{+15.04/9 2.5} Kc5 {-16.58/19 3} 63. Rxh6 {+17.23/10 2.5} Kd4
{-16.58/13 1.8} 64. g5 {+22.65/9 2.5} Ke3 {-17.07/12 1.9} 65. g6
{+23.09/9 2.5} Ke2 {-79.94/14 8} 66. g7 {+23.12/9 2.5} Kd2 {-79.95/13 2.4}
67. g8=Q {+24.06/8 2.5} Kc3 {-79.96/12 1.7} 68. Qc8+ {+327.59/9 2.5} Kd4
{-79.97/17 1.9} 69. Rd6+ {+327.61/8 2.5} Ke4 {-79.98/28 0.2} 70. Qe6+
{+327.63/9 2.5} Kf3 {-79.99/28 0.2} 71. Rd3# {+327.65/10 2.4}
{Xboard adjudication: Checkmate} 1-0
[/pgn]

In the meantime already lost two games from Fairy-Max so this game is probably an exception.
Henk
Posts: 7216
Joined: Mon May 27, 2013 10:31 am

Re: Complicating code in C#

Post by Henk »

Typical how can you still lose this game:

[pgn]
[Event "Computer Chess Game"]
[Site "LAPTOP-1FK7MTIP"]
[Date "2021.04.07"]
[Round "-"]
[White "Skipper_6"]
[Black "Fairy-Max 4.8V"]
[Result "0-1"]
[TimeControl "180+2"]
[Annotator "1. +0.39 2... +0.22"]

1. d4 {+0.39/7} Nf6 2. Nc3 {-0.24/7 4} d5 {+0.22/8 4} 3. e3 {+0.47/7 4} Qd6
{+0.12/7 5} 4. Nf3 {+0.70/7 4} Nc6 {+0.10/8 8} 5. Bd3 {+0.28/6 4} Nb4
{+0.09/7 5} 6. e4 {+0.24/6 3} Nxd3+ {+0.44/7 4} 7. cxd3 {+0.66/7 3} dxe4
{+0.34/8 4} 8. dxe4 {+0.89/7 3} Qa6 {+0.36/8 5} 9. e5 {+1.24/7 3} Nh5
{+0.27/8 9} 10. Be3 {+1.39/6 3} c6 {+0.52/7 4} 11. Nd2 {+1.47/7 3} g6
{+0.44/9 9} 12. Nde4 {+1.29/7 3} Ng7 {+0.43/8 10} 13. Nc5 {+0.90/6 3} Qb6
{+0.48/9 6} 14. O-O {+0.52/6 3} Qxb2 {+1.20/9 4} 15. N3a4 {+0.22/6 3} Qb5
{+1.02/9 4} 16. Rb1 {+0.03/6 3} Qc4 {+1.08/9 5} 17. Nxb7 {-0.01/6 3} Qxa2
{+0.93/9 3} 18. Rb4 {-0.10/6 3} Nf5 {+1.20/8 4} 19. Bf4 {+0.03/6 3} Qa3
{+1.07/8 3} 20. Rb1 {-0.05/6 3} Bh6 {+1.13/9 4} 21. Bxh6 {+0.38/7 3} Nxh6
{+0.69/9 5} 22. Nbc5 {+0.14/7 3} Bf5 {+0.64/9 4} 23. Rb3 {+0.22/7 3} Qa2
{+0.97/9 4} 24. Qc1 {-0.25/6 3} Ng8 {+0.65/9 7} 25. Qd1 {-0.27/6 3} h5
{+1.07/9 6} 26. Qf3 {-0.04/6 3} Rc8 {+0.96/9 4} 27. Qe3 {-0.04/6 3} Nh6
{+0.96/8 2.7} 28. h3 {+0.00/6 3} Be6 {+0.59/8 2.7} 29. Nxe6 {+0.69/7 3}
Qxa4 {+0.02/9 4} 30. Qc3 {+1.10/8 3} c5 {-0.03/9 5} 31. Nxc5 {+1.25/5 3}
Qc6 {+0.04/9 8} 32. Ra3 {+0.89/6 3} Qa8 {-0.06/8 3} 33. Qa1 {+1.40/6 2.9}
Rc7 {-0.10/9 2.3} 34. Na6 {+0.74/6 2.9} Rd7 {-0.30/10 9} 35. Nc5
{+0.97/7 2.9} Rc7 {+0.00/12 2.0} 36. Qd1 {+1.09/5 2.9} O-O {+0.03/8 4} 37.
Rb3 {+1.20/6 2.8} Qd5 {+0.14/8 2.4} 38. Na6 {+1.02/7 2.8} Rc4 {+0.61/9 2.6}
39. Rb4 {+0.49/7 2.8} Nf5 {+0.67/11 3} 40. Rxc4 {-0.07/7 2.8} Qxc4
{+0.78/12 7} 41. Nc5 {-0.45/8 2.8} Nxd4 {+0.99/12 4} 42. Nd3 {-0.32/6 2.8}
Rd8 {+1.00/11 3} 43. h4 {-0.76/7 2.8} Nf5 {+1.62/10 2.6} 44. Nb2
{-1.10/8 2.7} Rxd1 {+1.51/12 2.4} 45. Nxc4 {-1.29/9 2.7} Rxf1+
{+1.68/14 2.9} 46. Kxf1 {-2.02/9 2.7} Nxh4 {+1.49/14 47} 47. f3
{-2.08/9 2.7} f6 {+1.54/10 1.3} 48. f4 {-2.20/9 2.7} Kf7 {+1.66/11 1.6} 49.
Na5 {-2.22/8 2.7} fxe5 {+1.56/12 3} 50. fxe5 {-2.22/9 2.6} Ke6
{+1.52/12 2.4} 51. Nc6 {-2.52/10 2.6} a6 {+1.61/12 1.5} 52. Kf2
{-2.58/10 2.6} Nf5 {+1.60/12 1.4} 53. Kf3 {-2.46/9 2.6} Kd5 {+1.58/12 2.0}
54. Nb4+ {-2.69/9 2.6} Kxe5 {+1.58/13 2.3} 55. Nxa6 {-2.92/9 2.6} g5
{+1.49/12 2.3} 56. g4 {-3.04/9 2.6} Nd4+ {+2.03/14 2.2} 57. Kg3
{-3.99/10 2.6} h4+ {+2.06/14 2.6} 58. Kh2 {-4.56/9 2.6} Kf4 {+2.56/13 1.7}
59. Kh3 {-4.87/12 2.6} e5 {+2.73/13 1.3} 60. Nc7 {-5.46/11 2.6} e4
{+3.15/14 2.6} 61. Nd5+ {-5.54/10 2.5} Kf3 {+4.11/15 2.2} 62. Nb4
{-5.43/10 2.5} Kf2 {+4.57/14 1.8} 63. Kh2 {-5.86/10 2.5} e3 {+8.26/15 2.1}
64. Nd3+ {-7.92/10 2.5} Kf1 {+9.08/15 1.9} 65. Nc1 {-8.81/10 2.5} Ke1
{+9.70/15 2.4} 66. Kg2 {-10.21/9 2.5} Kd2 {+79.88/14 1.4} 67. Na2
{-16.53/9 2.5} e2 {+79.94/15 1.4} 68. Nc3 {-17.88/8 2.5} e1=Q
{+79.95/15 1.8} 69. Nb1+ {-327.58/8 2.5} Qxb1 {+79.96/23 1.3} 70. Kh2
{-327.60/9 2.4} Qe1 {+79.97/28 0.2} 71. Kg2 {-327.62/9 2.4} Nf3
{+79.98/28 0.2} 72. Kxf3 {-327.64/10 2.4} Qe2# {+79.99/28 0.2}
{Xboard adjudication: Checkmate} 0-1
[/pgn]

35. Qd1 instead of 35. e6
Henk
Posts: 7216
Joined: Mon May 27, 2013 10:31 am

Re: Complicating code in C#

Post by Henk »

Ok. Finally another win.


[pgn]
[Event "Computer Chess Game"]
[Site "LAPTOP-1FK7MTIP"]
[Date "2021.04.07"]
[Round "-"]
[White "Skipper_6"]
[Black "Fairy-Max 4.8V"]
[Result "1-0"]
[TimeControl "180+2"]
[Annotator "1. +0.23 5... +0.02"]

1. Nf3 {+0.23/7} c5 2. e4 {+0.20/8 4} e6 3. c4 {+0.36/7 4} Nc6 4. Nc3
{+0.15/7 4} Nf6 5. d3 {+0.14/7 4} d6 {+0.02/8 6} 6. Be3 {+0.32/7 4} Be7
{+0.05/8 6} 7. Be2 {+0.13/7 3} O-O {+0.10/9 6} 8. O-O {+0.26/7 3} Ng4
{+0.11/9 6} 9. Bd2 {+0.26/7 3} Bd7 {+0.06/8 3} 10. a3 {+0.41/6 3} f5
{+0.02/8 4} 11. Rb1 {+0.80/6 3} Qb6 {-0.04/7 4} 12. b4 {+0.85/6 3} Rab8
{-0.10/7 6} 13. bxc5 {+0.94/6 3} Qd8 {-0.69/8 4} 14. cxd6 {+1.47/6 3} Bxd6
{-0.75/8 6} 15. Bg5 {+1.21/6 3} Qa5 {-0.78/8 13} 16. Nb5 {+1.95/6 3} Bc5
{-0.84/8 7} 17. d4 {+2.43/6 3} Bb6 {-1.10/7 4} 18. c5 {+2.55/5 3} Bd8
{-1.51/8 7} 19. Bd2 {+2.75/6 3} Qa6 {-1.89/8 5} 20. exf5 {+2.50/6 3} Rxf5
{-2.06/6 2.9} 21. Nd6 {+5.07/7 3} Qxa3 {-4.04/9 4} 22. Nxf5 {+4.76/6 3} b6
{-4.47/8 12} 23. Ne3 {+7.63/6 3} Nxe3 {-4.47/9 4} 24. Bxe3 {+7.61/7 3} Qa2
{-4.46/8 5} 25. Rb3 {+7.56/5 3} Bf6 {-4.44/7 2.6} 26. cxb6 {+7.17/7 3} axb6
{-4.47/9 7} 27. Bd3 {+7.04/6 3} Ne7 {-4.47/8 4} 28. Bf4 {+7.29/5 3} Rb7
{-4.54/9 10} 29. Rb1 {+7.15/6 3} Qa8 {-4.67/8 12} 30. Be5 {+7.01/6 3} h5
{-4.55/8 3} 31. Bxf6 {+7.35/7 3} gxf6 {-4.63/9 3} 32. Be4 {+7.41/6 3} Nd5
{-4.95/10 5} 33. Ra1 {+7.09/6 2.9} Qe8 {-4.50/9 2.5} 34. Ra3 {+7.15/6 2.9}
f5 {-4.44/9 2.2} 35. Bc2 {+6.90/7 2.9} Qf8 {-4.49/9 3} 36. Ra1
{+6.90/6 2.9} Bc6 {-4.53/9 4} 37. Ne5 {+6.99/7 2.9} Bb5 {-4.53/9 2.2} 38.
Re1 {+7.02/7 2.9} Rg7 {-4.53/8 2.9} 39. Qd2 {+7.02/6 2.8} Qe8 {-4.54/8 3}
40. Reb1 {+6.99/6 2.8} Nc7 {-4.63/8 4} 41. Rb2 {+7.12/6 2.8} h4
{-4.52/8 2.7} 42. Kh1 {+6.96/6 2.7} Qd8 {-4.52/8 2.2} 43. Rab1
{+7.12/6 2.7} Qa8 {-5.16/8 2.1} 44. f3 {+7.26/7 2.8} Qd5 {-5.17/9 2.3} 45.
Rb4 {+7.21/6 2.8} Rh7 {-5.17/9 2.3} 46. Qg5+ {+8.33/6 2.7} Rg7 {-5.85/9 3}
47. Qxh4 {+7.97/6 2.7} Rh7 {-5.90/10 5} 48. Qg3+ {+8.20/5 2.7} Rg7
{-5.80/8 2.3} 49. Qe1 {+8.19/6 2.7} Be8 {-5.34/8 2.2} 50. Bd3 {+8.16/6 2.7}
b5 {-5.21/7 2.1} 51. Rc1 {+8.02/6 2.7} Qd8 {-5.13/9 4} 52. Rc2
{+7.78/6 2.7} Nd5 {-5.17/9 7} 53. Rb3 {+8.12/6 2.6} Nc7 {-5.27/9 4} 54. Rd2
{+8.08/6 2.6} Qxd4 {-5.16/9 2.6} 55. Bxb5 {+8.20/6 2.6} Qc5 {-5.23/9 3} 56.
Bd3 {+8.34/6 2.6} Qa5 {-5.18/8 4} 57. Rb8 {+8.29/5 2.6} Qa7 {-5.30/9 2.1}
58. Rd8 {+8.44/5 2.6} Qa3 {-5.42/8 1.8} 59. Bc4 {+8.34/6 2.6} Qe7
{-5.79/8 5} 60. Nc6 {+8.41/5 2.6} Qf6 {-6.11/9 3} 61. Bd3 {+8.61/4 2.6} Rf7
{-5.23/8 6} 62. Bc4 {+8.59/5 2.5} Rg7 {-0.01/15 1.6} 63. Rb8 {+8.48/4 2.5}
Kh7 {-5.44/8 2.2} 64. Ne5 {+8.30/6 2.5} Qh6 {-5.20/8 1.7} 65. Rd4
{+8.44/6 2.5} Qf6 {-5.59/7 1.8} 66. Rh4+ {+8.37/6 2.5} Kg8 {-6.05/9 4} 67.
Nc6 {+8.40/6 2.5} Qg6 {-6.05/10 6} 68. Qe2 {+8.36/5 2.5} Rd7 {-5.95/8 2.0}
69. Ne5 {+10.49/6 2.5} Qf6 {-9.07/10 2.5} 70. Nxd7 {+11.77/6 2.5} Qxh4
{-9.97/10 4} 71. Bxe6+ {+10.41/6 2.5} Kh7 {-14.43/9 2.8} 72. Bxf5+
{+12.12/7 2.4} Bg6 {-18.22/9 4} 73. Nf8+ {+15.40/7 2.4} Kh6 {-14.08/9 3}
74. Nxg6 {+15.27/7 2.4} Qd4 {-14.47/10 3} 75. Be4 {+15.39/6 2.4} Ne6
{-9.89/8 2.3} 76. Ne7 {+15.27/6 2.4} Qc3 {-12.04/8 4} 77. Nf5+
{+15.48/6 2.4} Kg6 {-10.38/8 8} 78. Nd6+ {+15.64/6 2.4} Kf6 {-10.24/7 1.6}
79. Qd1 {+15.42/6 2.4} Nd4 {-10.23/8 2.6} 80. Rf8+ {+15.92/7 2.4} Ke7
{-10.38/9 1.8} 81. Rc8 {+16.04/7 2.4} Qe3 {-12.40/9 2.3} 82. Nc4
{+16.05/7 2.4} Qc3 {-10.63/10 4} 83. f4 {+16.50/7 2.4} Qb4 {-12.75/9 2.1}
84. Ne3 {+16.51/6 2.4} Qa5 {-12.45/8 2.0} 85. Ra8 {+17.67/6 2.4} Qxa8
{-14.72/10 10} 86. Bxa8 {+21.29/8 2.4} Ne6 {-16.45/13 2.4} 87. f5
{+21.94/7 2.3} Ng7 {-15.93/12 1.3} 88. Bc6 {+22.57/7 2.4} Kf7
{-17.47/12 1.2} 89. Qd8 {+23.08/7 2.4} Ne6 {-79.95/14 1.3} 90. Bd5
{+32.99/8 2.3} Kg7 {-79.96/20 1.3} 91. Qd7+ {+327.59/7 2.3} Kh6
{-79.97/28 0.5} 92. Qxe6+ {+327.61/9 2.3} Kg5 {-79.98/28 0.2} 93. Qg6+
{+327.63/8 2.3} Kf4 {-79.99/28 0.2} 94. Qg3# {+327.65/9 2.3}
{Xboard adjudication: Checkmate} 1-0
[/pgn]
Henk
Posts: 7216
Joined: Mon May 27, 2013 10:31 am

Re: Complicating code in C#

Post by Henk »

Changed a lot today but maybe only 7% speed gain. Disappointing.
Often when you optimize code getting less clear or more ugly.
Henk
Posts: 7216
Joined: Mon May 27, 2013 10:31 am

Re: Complicating code in C#

Post by Henk »

Current figures:

Code: Select all

 
   1      42            9              4    d2d4
   2       0           12            139    d2d4  d7d5
   3      42           15            619    d2d4  d7d5  c1e3
   4       4           18           2015    d2d4  d7d5  c1e3  g8f6
   5      42           41          13852    d2d4  d7d5  c1e3  g8f6  b1c3
   6       5           70          33130    d2d4  d7d5  b1c3  g8f6  c1e3  c8e6
   7      37          136         100296    d2d4  d7d5  c1e3  g8f6  b1c3  c8e6  g1f3
   8       4          243         226199    d2d4  d7d5  c1e3  g8f6  b1c3  b8c6  g1f3
   9      12          490         517742    d2d4  d7d5  b1c3  g8f6  c1f4  c8e6  g1f3  b8c6  e2e3
   9      18          768         807161    e2e4  e7e5  b1c3  g8f6  f1d3  f8d6  g1f3  e8g8  e1g1
  10      -9         1542        1717112    e2e4  e7e5  b1c3  g8f6  f1d3  f8d6  c3b5  d6b4  c2c3  b4c5
  10       7         1732        1948706    d2d4  d7d5  b1c3  g8f6  c1f4  c8e6  e2e3  c7c6  f1d3  b8d7
  11       8         3481        3778436    d2d4  d7d5  b1c3  g8f6  c1f4  c8e6  e2e3  b8c6  f1d3  c6b4  d3e2
  12       8         8873        9075014    d2d4  d7d5  b1c3  g8f6  c1f4  c8e6  g1f3  b8c6  a1c1
  13      10        22336       20959482    d2d4  d7d5  b1c3  g8f6  c1f4  c8e6  g1f3  b8c6  a1c1  f6h5  f4e3  h5f6  b2b3
  
Henk
Posts: 7216
Joined: Mon May 27, 2013 10:31 am

Re: Complicating code in C#

Post by Henk »

I think I fixed the bug in movecount.
Now it is back to normal. That is less than 80kn/sec.

Code: Select all

   1      48            8              4    d2d4
   2       5           11            129    d2d4  g8f6
   3      48           13            616    d2d4  g8f6  g1f3
   4       7           15           1353    d2d4  b8c6  g1f3  g8f6
   5      50           37          11813    d2d4  b8c6  g1f3  g8f6  b1c3
   6      11           60          24771    d2d4  g8f6  b1c3  b8c6  g1f3  d7d5
   7      51          101          58692    d2d4  g8f6  b1c3  b8c6  g1f3  d7d5  c1e3
   8      15          140          98123    d2d4  g8f6  g1f3  d7d5  b1c3  c8e6  c1e3  b8c6
   9      30          293         216667    d2d4  g8f6  b1c3  d7d5  g1f3  b8c6  c1f4
  10      22          911         709620    d2d4  g8f6  b1c3  d7d5  g1f3  b8c6  e2e3  a8b8  f1d3  c8e6
  11      30         2653        2152557    d2d4  g8f6  b1c3  d7d5  g1f3  b7b6  c1e3  b8c6  f3e5  c8b7  f2f4
  12      21         4150        3608862    d2d4  g8f6  b1c3  d7d5  c1f4  c8e6  g1f3  b8c6  g2g3
  13      28        11522        8016578    d2d4  d7d5  b1c3  b8c6  f2f3  f7f5  c1f4  a7a6  e2e3  g8f6  a1c1  c8e6  f1d3
  14      25        57321       37683014    d2d4  g8f6  c2c4  c7c6  g1f3  d7d5  e2e3  c8f5  b1c3  e7e6  c4d5  e6d5  f1d3  f5d3
 
Henk
Posts: 7216
Joined: Mon May 27, 2013 10:31 am

Re: Complicating code in C#

Post by Henk »

Creepy optimizations.

I had in DoMove something like this.

Code: Select all

Pieces[kind] ^= endBitCoord;
Pieces[kind] ^= moveBB;
So I thought it would be equal to this:

Code: Select all

Pieces[(kind] ^= endBitCoord | moveBB;
But no it should be:

Code: Select all

Pieces[(kind] ^= endBitCoord ^ moveBB;
Fortunately perft test detected it.

By the way this optimization only useful when capture of same kind. Say pawn captures pawn or rook captures rook etc.
Sven
Posts: 4052
Joined: Thu May 15, 2008 9:57 pm
Location: Berlin, Germany
Full name: Sven Schüle

Re: Complicating code in C#

Post by Sven »

What is the meaning of endBitCoord and moveBB?
Sven Schüle (engine author: Jumbo, KnockOut, Surprise)
Henk
Posts: 7216
Joined: Mon May 27, 2013 10:31 am

Re: Complicating code in C#

Post by Henk »

Sven wrote: Tue Apr 13, 2021 7:05 pm What is the meaning of endBitCoord and moveBB?

Code: Select all

  var endBitCoord = UBit(move.End.Index); // = (End).ToBitBoardValue();
  var moveBB = move.BitBoardValue;          // = (Start.ToBitBoardValue() | (End).ToBitBoardValue();  
That would mean: endBitCoord ^ moveBB == ((Start.ToBitBoardValue() | (End).ToBitBoardValue()) ^ (End).ToBitBoardValue();


(A | B) ^ B <=> A

So I better write

Code: Select all

copyPieces[(int)kind] ^= move.Start.Index.ToBitBoardValue();
O wait maybe better assign move.StartBB to each precomputed move just like I did with move.BitBoardValue.
Henk
Posts: 7216
Joined: Mon May 27, 2013 10:31 am

Re: Complicating code in C#

Post by Henk »

So again making it unnecessarily complex.

(Perhaps Ni in 6th slot. See MBTI John Beebe 8 function model)