Учитывая сетку букв 8x8, представляющую текущее состояние игры в шахматы, задача вашей программы состоит в том, чтобы найти следующий ход для белых, который приводит к мату (ответ всегда будет матом за один ход).
вход
Ввод будет осуществляться через STDIN - 8 строк по 8 символов в каждой. Значения каждого символа следующие:
K/k - king
Q/q - queen
B/b - bishop
N/n - knight
R/r - rook
P/p - pawn
- - empty square
Буквы в верхнем регистре обозначают белые части, а строчные - в черном. Доска будет ориентирована так, чтобы белые играли снизу вверх, а черные сверху вниз.
Выход
Ход белых, который приводит к мату, в алгебраической нотации . Вам не нужно отмечать, когда фигура взята, и вам не нужно беспокоиться о неоднозначности между двумя одинаковыми фигурами, которые могут сделать один и тот же ход.
Пример ввода
Пример 1
Входные данные:
------R-
--p-kp-p
-----n--
--PPK---
p----P-r
B-------
--------
--------
Выход:
c6
Пример 2
Входные данные:
--b-r--r
ppq-kp-p
-np-pn-B
--------
---N----
--P----P
PP---PP-
R--QRBK-
Выход:
Nf5
Пример 3
Входные данные:
---r-nr-
-pqb-p-k
pn--p-p-
R-------
--------
-P-B-N-P
-BP--PP-
---QR-K-
Выход:
Rh5
Вы можете предположить, что решение не будет включать рокировку или проход.
Это код-гольф - выигрывает самое короткое решение.
(Примеры взяты с сайта mateinone.com - пазлы 81, 82 и 83)