挑战:
给定棋盘格,如果可能的话,输出将花费最少的移动量(假设黑色根本不移动)为红色棋子。
规则:
红色的一面总是在底部,但是它们的碎片可以从任何行开始(甚至需要到达国王的行)。黑色棋子是静止的,这意味着它们不会在红色棋子之间移动,而在捕获时会从棋盘上移开。请注意,片段可以在板上的任何空间开始,包括彼此相邻。这不是播放普通跳棋的方式,但是您的程序必须能够解决这些问题。(请参阅输入5)但是,方格件只能对角移动(请参阅输入3)。如果第一个捕获在链中是向前的,则允许向后捕获(请参见输入7)。
输入:
一个8x8的棋盘格,其棋盘空间定义为以下字符(只要它们是一致的,可以随意使用替代项):
。-空
R-红色件
B-黑色件
输出:
的最小的移动号码,将采取一个红色片是“kinged”通过输入在板(黑侧)的顶行王的行,0如果不需要移动(开始红色片上王的行),或如果不可能加红色,则为负数(即黑色占据整个第一行)。
输入1:
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .
输出1:
7
输入2:
. . . . . . . .
. . . . . . . .
. . . . . B . .
. . . . . . . .
. . . B . . . .
. . . . . . . .
. B . . . . . .
R . . . . . . .
输出2:
2
输入3:
. B . B . B . B
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .
输出3:
-1
输入4:
. . . . . . . R
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .
输出4:
0
输入5:
. . . . . . . .
. . . . . . . .
. . . . . . . .
. B . . B . . .
B . . . . B . .
. B . B . . . .
. . B . . B . .
. . . R R . . .
输出5:
4
输入6:
. . . . . . . .
. . . . . . . .
. B . . . . . .
. . B . . . . .
. B . B . . . .
. . . . R . . .
. . . B . . . .
. . . . R . . .
输出6:
2
输入7:
. . . . . . . .
. . . . . . . .
. . B . . . . .
. . . . . . . .
. . B . . . . .
. B . B . B . .
. . . . B . . .
. . . . . R . R
输出7:
4
得分:
这是代码高尔夫球,因此以字节为单位的最短代码获胜。
1
第二个测试用例是否应该为2,因为您可以进行双跳/三跳?
—
詹姆斯
整数数组的状态数组是否可以输入?
—
乔纳森·艾伦
我添加了另一个证明很困难的测试用例。它涉及多次跳跃,多次跳跃和向后跳跃,以实现最佳解决方案。
—
orlp
@orlp嗯,我要说的是,红色棋子都不是向后移动的,因为它们都不是国王(因此,挑战的重点),但是似乎有些人在玩一些规则,其中非红色棋子允许向后捕捉如果第一次抓捕是前进的,则加盖。我将其添加到规则中,因为我以前没有意识到这一点。
—
Yodle
ooooooooh,您不必只选择一件红色的东西,他们可以合作!我明白了
—
Greg Martin