Agora estou convencido de que a resposta de Fabian Fichter está correta. O seguinte comentário sobre a resposta de Fabian pode ajudar a convencer outras pessoas da mesma.
1. Posição que parece ser afetada pela remoção da promoção de pintinhos
Analisando os resultados publicados no Stockfish modificado, todos os jogos convergem rapidamente na seguinte posição: 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 então brinca C*a4
, largando o filhote no canto inferior esquerdo. Inicialmente, pensei que essa era uma queda bastante esbanjadora, mas, de acordo com a base da mesa, na verdade não é nada ruim.
1. C *a4
ABC
+---+
1| l | *c
2|ge |
3| E |
4|CLG|
+---+
Agora algo interessante acontece. A base da mesa concorda com o Stockfish que dar um passo ao lado do Leão é um empate, mas que tal deixar um filhote para lutar contra um filhote?
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| *
+---+
Agora, o filhote a3
está a um passo da promoção e, além disso, daria um cheque à promoção, o que forçaria o leão Sente a aceitá-lo. O único problema é que a melhor jogada envolve perder a garota a3
e também estamos muito longe de ser um xeque-mate. Portanto, tomaremos um atalho, para que possamos perder mais rapidamente, mas sem perder por outros motivos, como doar material desnecessariamente.
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
+---+
Parece que conseguimos preservar a ameaça do filhote promotor de sacrifícios, então vamos continuar!
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%)
E aí está, a garota promotora do sacrifício como a melhor jogada! Vamos ver o que acontece.
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%)
Agora vamos ver o que acontece se mudarmos esse galo para uma garota:
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%)
Nesta posição, a melhor jogada coloca o xeque-mate 88 (90-2) se afasta, o que está mais distante do xeque-mate do que a posição inicial, tornando plausível que, quando analisado, leve a outra posição que, sem promover o poder do pintinho, repentinamente está muito mais longe companheiro do que antes (ad infinitum). Se for verdade, isso tornaria a posição G / --- / le- / cG- / CLG / e (veja abaixo) um empate em vez de uma vitória sem a promoção de pintinhos .
ABC
+---+
1| | *e
2|le |
3|cG |
4|CLG|
+---+
2. Correção da pesquisa exaustiva
Supondo que o gerador de base de tabela usado seja uma pesquisa exaustiva correta, parece que o patch de Fabian deve conseguir desativar as promoções de pintinhos, já que o arquivo moves.c
é o único local POS_FLAGS
usado (exceto o uso validation.c
para verificar estruturas de posição) e, de fato, parece construído de propósito desativar promoções.
/* clear promotion bits for pieces that can't be promoted */
status &= POS_FLAGS;