背景
Mu Torere是一款游戏,是欧洲毛病爆发前新西兰毛利人玩过的仅有的两种游戏之一。这使其成为一个非常独特的游戏,因为它具有与现有大多数其他游戏不同的“客观获胜标准”和游戏规则。
游戏玩法:
木板是一个八边形。每个相邻顶点之间都有连接,并且有一个中心节点连接到所有顶点。在任何时间点,九个节点中的八个都被石头占据。刚开始时,有四个白色的石头和四个黑色的石头,它们分别占据八角形的一半,而中心节点为空。黑先。
玩家每回合可以将其石头之一沿16个边之一从一个节点移动到空节点。如果石头位于对手的石头旁边,则只能将石头从外部节点移动到中心节点。
玩家无法进行合法移动时会输,这是因为没有边缘将石头连接到空节点时发生。
这是一个解释规则(带有图表)并提供一些分析的网站。
挑战
您面临的挑战是编写最短的程序,以与人类对手玩一个完美的Mu Torere游戏。您的程序应该能够显示和更新游戏板,进行移动并接收来自人类对手的移动。最重要的是,它应该扮演一个完美的游戏。
完美的游戏?
是的,完美的游戏。我一直在进行一些游戏分析,发现如果双方完美玩法,游戏将持续无限长的时间。这意味着您的程序永远不会丢失。同样,只要人类对手犯下允许程序强制胜利的错误,您的程序就应该能够强制胜利。至于您的程序如何找到理想的动作,这取决于您。
细节
每次移动之后(以及游戏开始时),您的程序都应打印游戏板。但是,无论您选择显示板,它都必须显示所有节点并已完全连接(所有16条连接线均应绘制成无交叉线)。在开始时,木板应具有正确的开始位置。实现此目的的一种方法是将游戏板做成正方形。
w-w-w
|\|/|
b-o-w
|/|\|
b-b-b
这两种颜色是黑白或暗/浅。棋盘必须显示哪个节点被哪个玩家的棋子占据,例如用“ b”或“ w”标记它们,以及哪个节点是空的。鼓励(但不是必须)使游戏板更具图形效果,而不是纯文本格式。
您的游戏板应该具有一个编号系统,该编号系统为每个节点分配一个唯一的编号。您可以选择自己喜欢的方式给木板编号,但应在答案中或程序中说明。方板可以编号如下:
1-2-3
|\|/|
4-5-6
|/|\|
7-8-9
人是第一个移动的人。他的输入将是一个数字。这将是当前移动的石头所在节点的编号。如果我想将结石从节点4移动到空节点5,我将输入a 4
。暗含5,因为它是唯一的空节点。
假设人类将始终采取法律行动。
在人类行动之后,应打印更新的木板。程序决定采取合法行动后,它应该打印另一个更新的标牌,然后等待人员输入其他行动。
程序一旦获胜,应终止。
笔记
应用标准的代码高尔夫规则,不访问外部文件等,等等。此外,我将为程序执行每个动作施加15秒的灵活时限(在合理的机器上)。如上所述,该游戏有可能形成无限循环,我不希望深度优先搜索进入无限循环。