Biorąc pod uwagę siatkę 8x8 liter reprezentujących aktualny stan gry w szachy, Twoim programem jest znalezienie następnego ruchu dla białych, który skutkuje matą (odpowiedź zawsze będzie wiązana w jednym ruchu).
Wejście
Dane wejściowe będą na STDIN - 8 linii po 8 znaków każdy. Znaczenie każdego znaku jest następujące:
K/k - king
Q/q - queen
B/b - bishop
N/n - knight
R/r - rook
P/p - pawn
- - empty square
Wielkie litery oznaczają białe elementy, a małe - czarny. Plansza zostanie ustawiona w taki sposób, że biel będzie odgrywać od dołu, a czerń od góry.
Wynik
Ruch dla bieli, który powoduje mat, w zapisie algebraicznym . Nie musisz notować, kiedy kawałek został zabrany, ani nie musisz się martwić rozróżnieniem dwóch identycznych elementów, które mogą wykonać ten sam ruch.
Przykładowe dane wejściowe
Przykład 1
Wejście:
------R-
--p-kp-p
-----n--
--PPK---
p----P-r
B-------
--------
--------
Wynik:
c6
Przykład 2
Wejście:
--b-r--r
ppq-kp-p
-np-pn-B
--------
---N----
--P----P
PP---PP-
R--QRBK-
Wynik:
Nf5
Przykład 3
Wejście:
---r-nr-
-pqb-p-k
pn--p-p-
R-------
--------
-P-B-N-P
-BP--PP-
---QR-K-
Wynik:
Rh5
Możesz założyć, że rozwiązanie nie będzie wiązało się z kastracją ani en-pasywacją.
To jest golf golfowy - wygrywa najkrótsze rozwiązanie.
(Przykłady zaczerpnięte z mateinone.com - puzzle 81, 82 i 83)