Dada una cuadrícula de letras de 8x8 que representa el estado actual de un juego de ajedrez, la tarea de su programa es encontrar un próximo movimiento para las blancas que resulte en jaque mate (la respuesta siempre será compañero en un movimiento).
Entrada
La entrada estará en STDIN: 8 líneas de 8 caracteres cada una. Los significados de cada personaje son los siguientes:
K/k - king
Q/q - queen
B/b - bishop
N/n - knight
R/r - rook
P/p - pawn
- - empty square
Las letras mayúsculas representan piezas blancas y las minúsculas representan negro. El tablero estará orientado de modo que el blanco se juegue desde abajo y el negro desde arriba.
Salida
Un movimiento para el blanco que resulta en jaque mate, en notación algebraica . No necesita anotar cuándo se ha tomado una pieza, ni debe preocuparse por la desambiguación entre dos piezas idénticas que pueden hacer el mismo movimiento.
Entrada de muestra
Ejemplo 1
Entrada:
------R-
--p-kp-p
-----n--
--PPK---
p----P-r
B-------
--------
--------
Salida:
c6
Ejemplo 2
Entrada:
--b-r--r
ppq-kp-p
-np-pn-B
--------
---N----
--P----P
PP---PP-
R--QRBK-
Salida:
Nf5
Ejemplo 3
Entrada:
---r-nr-
-pqb-p-k
pn--p-p-
R-------
--------
-P-B-N-P
-BP--PP-
---QR-K-
Salida:
Rh5
Puede suponer que la solución no implicará enroque o pasajero.
Este es el código de golf: la solución más corta gana.
(Ejemplos tomados de mateinone.com - rompecabezas 81, 82 y 83)