Jeu d'échecs électronique ( ChessboARDuino )

Le principe de l'algo, c'est :

Je recherche en avant

  1. si je trouve, je garde le ou les coups candidats
  2. si je ne trouve pas, je recherche en arrière
    2a) si je trouve, j'ajuste la séquence de coups qui était envisagée jusqu'ici
    2b) si je ne trouve pas, j'ignore la signature

La recherche arrière consiste à réévaluer les dernières positions connues, de la plus récente à la plus ancienne, et pour chacune d'elles voir s'il existe un coup candidat permettant d'arriver à la signature recherchée.

Pour optimiser la recherche arrière, on peut utiliser la signature de chaque position, comparée à la signature recherchée, pour limiter grandement les cas analysés.

Voilà pour la recherche arrière.

Maintenant, il y a aussi des subtilités dans la recherche avant, s'il existe plusieurs coups candidats aboutissant à la même signature. Chacun d'entre eux est conservé dans une liste de coups potentiels de même rang. Il peut donc y avoir une petite arborescence des possibles à gérer.

Cela implique aussi que la recherche arrière peut également devoir être appliquée non pas à une seule position supposée, mais à une liste de plusieurs positions candidates...
Mais toujours avec le même principe.

Pour l'instant, la seule faille que j'entrevois, concerne les doutes non levés sur une position de mat.
Par exemple :
Blancs : Ra1Tg1h1Dg6
Noirs : Rh8Tf8Pg7h7
Trait aux blancs : les deux mats possibles Dxg7 ou Dxh7 ont même signature.