Étant donné une grille de lettres 8x8 représentant l'état actuel d'une partie d'échecs, la tâche de votre programme est de trouver un prochain coup pour les blancs qui se traduit par échec et mat (la réponse sera toujours mate en un coup).
Contribution
L'entrée se fera sur STDIN - 8 lignes de 8 caractères chacune. Les significations de chaque caractère sont les suivantes:
K/k - king
Q/q - queen
B/b - bishop
N/n - knight
R/r - rook
P/p - pawn
- - empty square
Les lettres majuscules représentent des morceaux blancs et les minuscules représentent le noir. Le plateau sera orienté de façon à ce que le blanc joue vers le haut et le noir vers le bas.
Production
Un coup pour le blanc qui se traduit par échec et mat, en notation algébrique . Vous n'avez pas besoin de noter quand une pièce a été prise, ni de vous soucier de lever l'ambiguïté entre deux pièces identiques qui peuvent faire le même mouvement.
Exemple d'entrée
Exemple 1
Contribution:
------R-
--p-kp-p
-----n--
--PPK---
p----P-r
B-------
--------
--------
Production:
c6
Exemple 2
Contribution:
--b-r--r
ppq-kp-p
-np-pn-B
--------
---N----
--P----P
PP---PP-
R--QRBK-
Production:
Nf5
Exemple 3
Contribution:
---r-nr-
-pqb-p-k
pn--p-p-
R-------
--------
-P-B-N-P
-BP--PP-
---QR-K-
Production:
Rh5
Vous pouvez supposer que la solution n'impliquera pas de roque ou en passant.
C'est le code-golf - la solution la plus courte l'emporte.
(Exemples tirés de mateinone.com - puzzles 81, 82 et 83)