给定一个表示国际象棋当前状态的8x8字母网格,您的程序的任务是找到白色的下一棋,该棋将导致死战(答案将总是一move而就)。
输入项
输入将在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)
否。我认为出于这个问题的目的,您可以假定答案将不会涉及cast回或en绕。我将更新问题。
—
加雷斯
我们应该如何处理不止一个合二为一的职位?
—
罗布
@Rob只需一个解决方案,因此输出您首先找到的解决方案。
—
Gareth
假设解决方案不涉及晋升也是安全的吗?
—
彼得·泰勒
@Peter是的,我不想使问题变得更加复杂。
—
Gareth