给定一个任意的钉子纸牌配置,计算导致“游戏结束”位置的任何一系列移动的最有效方法是什么。
例如,标准起始位置是:
..***..
..***..
*******
***O***
*******
..***..
..***..
而“结束游戏”的位置是:
..OOO..
..OOO..
OOOOOOO
OOO*OOO
OOOOOOO
..OOO..
..OOO..
Peg solitare 在这里有更详细的描述:维基百科,我们正在考虑“英语板”变体。
我很确定在一台合理的计算机上,比如一台 P4 3Ghz,可以在几秒钟内解决任何给定的起始板。
目前这是我最好的策略:
def solve:
for every possible move:
make the move.
if we haven't seen a rotation or flip of this board before:
solve()
if solved: return
undo the move.