Je suis maintenant convaincu que la réponse de Fabian Fichter est correcte. Le commentaire suivant sur la réponse de Fabian peut aider à convaincre les autres de la même chose.
1. Position qui semble être affectée par la suppression de la promotion des poussins
En analysant les résultats affichés du Stockfish modifié, tous les jeux convergent assez rapidement sur la position suivante: S / -l- / ge - / - E - / - LG / cC.
$ ./dobutsu -vs900
Loading tablebase... done
1. setup S/-l-/ge-/-E-/-LG/cC
1. show board
ABC
+---+
1| l | c
2|ge |
3| E |
4| LG| *C
+---+
1. show lines
Eb3xa2 : #-72 (67.13%)
C *a4 : #-70 (32.87%) <--- apparently quite strong
Gc4-c3 : #-46 ( 0.00%)
C *c2 : #-36 ( 0.00%)
C *c1 : #-28 ( 0.00%)
Eb3-a4 : #-26 ( 0.00%)
Lb4-a4 : #-26 ( 0.00%)
C *a1 : #-24 ( 0.00%)
C *c3 : #-22 ( 0.00%)
C *a3 : #-20 ( 0.00%)
Eb3-c2 : #-12 ( 0.00%)
Lb4-c3 : #-2 ( 0.00%)
Lb4-a3 : #-2 ( 0.00%)
Sente joue ensuite C*a4
, laissant tomber son poussin dans le coin inférieur gauche. Au début, je pensais que c'était une goutte assez inutile, mais selon la base de la table, ce n'est en fait pas mal du tout.
1. C *a4
ABC
+---+
1| l | *c
2|ge |
3| E |
4|CLG|
+---+
Maintenant, quelque chose d'intéressant se produit. La base de la table convient avec Stockfish que marcher sur le Lion est un tirage au sort, mais qu'en est-il de laisser tomber un poussin pour combattre un poussin?
2. show lines
C *a3 : #69 (99.57%) <--- winning chick drop
C *c2 : #91 ( 0.21%)
C *c1 : #91 ( 0.21%)
C *a1 : 0 ( 0.00%)
Ga2-a1 : 0 ( 0.00%)
Eb2-c1 : 0 ( 0.00%)
Eb2-a1 : 0 ( 0.00%)
Lb1-a1 : 0 ( 0.00%) <--- draws the game
C *c3 : #-28 ( 0.00%)
Lb1-c1 : #-22 ( 0.00%)
Eb2-c3 : #-20 ( 0.00%)
Eb2-a3 : #-20 ( 0.00%)
Ga2-a3 : #-18 ( 0.00%)
Lb1-c2 : #-2 ( 0.00%)
2. C *a3
ABC
+---+
1| l |
2|ge |
3|cE |
4|CLG| *
+---+
Maintenant, le poussin a3
est à un pas de la promotion et donnerait en outre un chèque sur la promotion, ce qui forcerait le lion Sente à le prendre. Le seul problème est que le meilleur coup consiste à perdre le poussin a3
et aussi que nous sommes encore assez loin d'un échec et mat. Par conséquent, nous allons prendre un peu de raccourci, de sorte que nous perdons plus rapidement, mais sans perdre pour d'autres raisons telles que donner du matériel inutilement.
3. show lines
Ca4xa3 : #-68 (92.84%) <--- catches chick about to promote
Gc4-c3 : #-62 ( 7.16%)
Eb3xa2 : #-32 ( 0.00%) <--- shortcut
Eb3-c2 : #-8 ( 0.00%) <--- give away elephant
Lb4-c3 : #-2 ( 0.00%) <--- stupid
Lb4xa3 : #-2 ( 0.00%) <--- stupid
3. Eb3xa2
ABC
+---+
1| l | *
2|Ee |
3|c |
4|CLG| G
+---+
4. show lines
Lb1xa2 : #31 (100.00%)
Lb1-c2 : #-10 ( 0.00%)
Lb1-c1 : #-6 ( 0.00%)
Lb1-a1 : #-6 ( 0.00%)
Ca3xa4+: #-2 ( 0.00%)
Eb2-c3 : #-2 ( 0.00%)
Eb2-c1 : #-2 ( 0.00%)
Eb2-a1 : #-2 ( 0.00%)
4. Lb1xa2
ABC
+---+
1| | e
2|le |
3|c |
4|CLG| *G
+---+
Nous semblons avoir réussi à préserver la menace du poussin de promotion sacrificiel, alors continuons!
5. show lines
G *b3 : #-30 (100.00%)
G *a1 : #-24 ( 0.00%)
G *c3 : #-20 ( 0.00%)
Gc4-c3 : #-18 ( 0.00%)
G *c2 : #-14 ( 0.00%)
G *c1 : #-10 ( 0.00%)
G *b1 : #-10 ( 0.00%)
Ca4xa3 : #-8 ( 0.00%)
Lb4-c3 : #-2 ( 0.00%)
Lb4-b3 : #-2 ( 0.00%)
Lb4xa3 : #-2 ( 0.00%)
5. G *b3
ABC
+---+
1| | *e
2|le |
3|cG |
4|CLG|
+---+
6. show lines
Ca3xa4+: #29 (100.00%) <--- sacrificial promoting chick check
E *c3 : #-30 ( 0.00%)
E *c1 : #-28 ( 0.00%)
Eb2-c1 : #-28 ( 0.00%)
Eb2-a1 : #-28 ( 0.00%)
La2-b1 : #-28 ( 0.00%)
La2-a1 : #-28 ( 0.00%)
E *c2 : #-26 ( 0.00%)
E *a1 : #-24 ( 0.00%)
E *b1 : #-12 ( 0.00%)
Eb2-c3 : #-12 ( 0.00%)
La2xb3 : #-2 ( 0.00%)
Et voilà, le poussin de promotion sacrificiel est le meilleur coup! Voyons ce qui se passe.
6. Ca3xa4+:
ABC
+---+
1| | ce
2|le |
3| G |
4|rLG| *
+---+
7. show lines
Lb4xa4 : #-28 (100.00%) <--- take chick (forced if promoted)
Gc4-c3 : #-2 ( 0.00%)
Gb3-c3 : #-2 ( 0.00%)
Gb3-a3 : #-2 ( 0.00%)
Gb3xb2 : #-2 ( 0.00%)
Lb4-c3 : #-2 ( 0.00%)
Lb4-a3 : #-2 ( 0.00%)
Voyons maintenant ce qui se passe si nous changeons ce coq en poussin:
7. setup S/---/le-/-G-/cLG/ec
1. show board
ABC
+---+
1| | ce
2|le |
3| G |
4|cLG| *
+---+
1. show lines
Gc4-c3 : #-90 (100.00%)
Gb3xb2 : #-30 ( 0.00%)
Lb4xa4 : #-28 ( 0.00%)
Gb3-c3 : #-10 ( 0.00%)
Gb3-a3 : #-8 ( 0.00%)
Lb4-c3 : #-2 ( 0.00%)
Lb4-a3 : #-2 ( 0.00%)
Dans cette position, le meilleur mouvement éloigne le mat 88 (90-2), qui est plus éloigné du mat que la position de départ, ce qui rend plausible que lorsqu'il est analysé, il conduira à une autre position qui, sans promouvoir la puissance du poussin, est soudainement beaucoup plus éloignée de mate qu'avant (ad infinitum). Si c'est vrai, cela ferait de la position G / --- / le- / cG- / CLG / e (voir ci-dessous) un match nul au lieu d'une victoire sans promotion de poussin .
ABC
+---+
1| | *e
2|le |
3|cG |
4|CLG|
+---+
2. Exactitude de la recherche exhaustive
En supposant que le générateur de base de table utilisé est une recherche exhaustive correcte, il semble que le correctif de Fabian devrait réussir à désactiver les promotions de poussins car le fichier moves.c
est le seul endroit POS_FLAGS
utilisé (sauf pour une utilisation dans validation.c
pour vérifier les structures de position) et semble en effet conçu à cet effet pour désactiver les promotions.
/* clear promotion bits for pieces that can't be promoted */
status &= POS_FLAGS;