最近,我被介绍给了一款名为Solitaire Chess的益智游戏。我将在此处总结规则:
- 该板是一个4x4的棋盘格。
- 所有作品都使用相同的颜色(没有团队),并且所有作品都可以捕获其他任何作品。
- 每一步都必须抓住。不得搬到空方格。
- 最后必须只剩下一件。
- 所有棋子的移动都与象棋中的动作完全相同,但有一个修改:棋子可以在任何对角线方向上捕捉(从技术上讲,它像是ferz)。为了使那些可能不知道的人受益,我提供了运动图。
- 国际象棋的其他规则(例如支票,cast等)均不适用于此。全部与捕获有关。
国王(K)
K * . . | * K * . | * * * .
* * . . | * * * . | * K * .
. . . . | . . . . | * * * .
. . . . | . . . . | . . . .
女王(Q)
Q * * * | * Q * * | * * * .
* * . . | * * * . | * Q * *
* . * . | . * . * | * * * .
* . . * | . * . . | . * . *
鸦(R)
R * * * | * R * * | . * . .
* . . . | . * . . | * R * *
* . . . | . * . . | . * . .
* . . . | . * . . | . * . .
主教(B)
B . . . | . B . . | * . * .
. * . . | * . * . | . B . .
. . * . | . . . * | * . * .
. . . * | . . . . | . . . *
骑士(N)
N . . . | . N . . | . . . *
. . * . | . . . * | . N . .
. * . . | * . * . | . . . *
. . . . | . . . . | * . * .
典当(P)
P . . . | . P . . | * . * .
. * . . | * . * . | . P . .
. . . . | . . . . | * . * .
. . . . | . . . . | . . . .
输入输出
作为参考,将使用纸牌国际象棋网页上的示例拼图:
. . . .
. B . .
R P . .
. . . N
解决方案是与骑士一起当兵,然后与车子一起骑士,最后与车子一起接受主教。
输入值
输入必须采用以下三种形式之一;您可以自由选择最方便的一种。
- 一串字符,例如
.....B..RP.....N
,带有或不带有换行符。代表空格的字符可以是以外的任何字符KQRBNP
。 - 列表列表(或扁平化列表),其中元素是字符或数字,例如:
[['.', '.', '.', '.'], ['.', 'B', '.', '.'], ['R', 'P', '.', '.'], ['.', '.', '.', 'N']]
或[[0, 0, 0, 0], [0, 4, 0, 0], [3, 6, 0, 0], [0, 0, 0, 5]]
。对于前者,代表空白的字符可能是以外的任何字符KQRBNP
。对于后者,我给出了与它们在我之前的举动列表中的等级相对应的数字(1
是国王,4
是主教,6
是典当等)。您可以自由更改编号。 - 每个元素具有格式的坐标列表
[x, y, 'c']
,如下所示:[[1, 2, 'B'], [0, 1, 'R'], [1, 1, 'P'], [3, 0, 'N']]
。
如果选择基于列表的输入格式之一,则分隔符和分隔符可能是任何合理且易于理解的字符。
输出量
输出必须是一系列移动或一系列板状态。有些难题有多个解决方案。您可以输出其中之一或全部。如果选择输出一系列板状态,则每个板必须采用三种输入格式之一,并且它们之间应有合理的分隔符(例如换行符)。
如果选择输出一系列运动,则必须将它们表示为一对坐标对列表,如下所示:[[[3,0], [1,1]], [[0,1], [1,1]], [[1,1], [1,2]]]
。[0,0]
代表左下角,同样,分隔和定界字符可能是任何合理的选择。
如果给定的板不能求解,则输出任何虚假值(0
,空字符串等)。如果给定的板少于两块,则行为是不确定的。
测试用例
注意:输出仅作为一对坐标列表给出,因为其他格式应该相当容易检查正确性(而且我不希望输入所有可能的输出格式)。同样,对于具有多个解决方案的拼图,仅提供一种可能性。
输入1:
. . . N
. . . .
. R . .
. . B .
...N.....R....B.
[['.', '.', '.', 'N'], ['.', '.', '.', '.'], ['.', 'R', '.', '.'], ['.', '.', 'B', '.']]
[[0, 0, 0, 5], [0, 0, 0, 0], [0, 3, 0, 0], [0, 0, 4, 0]]
[[3, 3, 'N'], [1, 1, 'R'], [2, 0, 'B']]
输出1:
[[[2,0], [1,1]], [[1,1], [3,3]]]
输入2:
. . . .
. B . .
R P . .
. . . N
.....B..RP.....N
[['.', '.', '.', '.'], ['.', 'B', '.', '.'], ['R', 'P', '.', '.'], ['.', '.', '.', 'N']]
[[0, 0, 0, 0], [0, 4, 0, 0], [3, 6, 0, 0], [0, 0, 0, 5]]
[[1, 2, 'B'], [0, 1, 'R'], [1, 1, 'P'], [3, 0, 'N']]
输出2:
[[[3,0], [1,1]], [[0,1], [1,1]], [[1,1], [1,2]]]
输入3:
. N R .
B . . .
N . . B
. . P .
.NR.B...N..B..P.
[['.', 'N', 'R', '.'], ['B', '.', '.', '.'], ['N', '.', '.', 'B'], ['.', '.', 'P', '.']]
[[0, 5, 3, 0], [4, 0, 0, 0], [5, 0, 0, 4], [0, 0, 6, 0]]
[[1, 3, 'N'], [2, 3, 'R'], [0, 2, 'B'], [0, 1, 'N'], [3, 1, 'B'], [2, 0, 'P']]
输出3:
[[[2,0], [3,1]], [[0,1], [1,3]], [[0,2], [1,3]], [[2,3], [1,3]], [[3,1], [1,3]]]
输入4:
. . . N
. . . R
R B B .
N P P .
...N...RRBB.NPP.
[['.', '.', '.', 'N'], ['.', '.', '.', 'R'], ['R', 'B', 'B', '.'], ['N', 'P', 'P', '.']]
[[0, 0, 0, 5], [0, 0, 0, 3], [3, 4, 4, 0], [5, 6, 6, 0]]
[[3, 3, 'N'], [3, 2, 'R'], [0, 1, 'R'], [1, 1, 'B'], [2, 1, 'B'], [0, 0, 'N'], [1, 0, 'P'], [2, 0, 'P']]
输出4:
[[[2,1], [3,2]], [[1,1], [3,3]], [[3,2], [1,0]], [[3,3], [0,0]], [[0,1], [0,0]], [[0,0], [1,0]], [[1,0], [2,0]]]
输入5:
P . . .
. R . .
R . R .
. R . .
P....R..R.R..R..
[['P', '.', '.', '.'], ['.', 'R', '.', '.'], ['R', '.', 'R', '.'], ['.', 'R', '.', '.']]
[[6, 0, 0, 0], [0, 3, 0, 0], [3, 0, 3, 0], [0, 3, 0, 0]]
[[0, 3, 'P'], [1, 2, 'R'], [0, 1, 'R'], [2, 1, 'R'], [1, 0, 'R']]
输出5:
[[[0,3], [1,2]], [[1,2], [2,1]], [[2,1], [1,0]], [[1,0], [0,1]]]
输入6:
. P . N
K . . .
. . B .
. . R Q
.P.NK.....B...RQ
[['.', 'P', '.', 'N'], ['K', '.', '.', '.'], ['.', '.', 'B', '.'], ['.', '.', 'R', 'Q']]
[[0, 6, 0, 5], [1, 0, 0, 0], [0, 0, 4, 0], [0, 0, 3, 2]]
[[1, 3, 'P'], [3, 3, 'N'], [0, 2, 'K'], [2, 1, 'B'], [2, 0, 'R'], [3, 0, 'Q']]
输出6:
[[[3,0], [2,0]], [[2,0], [2,1]], [[3,3], [2,1]], [[2,1], [1,3]], [[0,2], [1,3]]]
输出1有点错误,应该是[[[[2,0],[1,1]],[[1,1],[3,3]]]
—
达米安
另外,需要特别注意的是,国王真的是一个曼恩(可以被俘获,但是具有相同的移动规则)(童话国际象棋的名字很有趣)
—
破坏的柠檬
@Damien:好地方!谢谢。
—
El'endia Starman'8
可以在输出中包含件号吗?例如:
—
Arnauld
[["R", [2, 0], [1, 1]], ["N", [1, 1], [3, 3]]]
@ Arnauld:是的,没关系。尽管有些奇怪,因为您要列出捕获的片段,而不是捕获的片段。
—
El'endia Starman'8