我正在编写一个奥赛罗(reversi)引擎,作为后来实施国际象棋引擎的训练。 我想计算稳定件的数量,但不知道最好的方法是什么。
我可以轻松统计'边缘稳定'的作品,但我不确定如何解释对方 那些。我正在使用一维数组代表电路板。
感谢任何提示!
答案 0 :(得分:0)
来自http://en.wikipedia.org/wiki/Reversi
“一般来说,当沿着所有四个轴(水平方向, 垂直,每个对角线),它在一个边界,一个填充的行,或 旁边是一块相同颜色的稳定作品。“
你已经提到了边界 - 只需计算一些部分就可以检查已填充的行,尽管这里可能有许多优化,例如:首先找到填充的行,然后将整行上的每个位置标记为可能稳定,而不是遍历每个位置,然后检查所有相关方向,这将导致浪费精力。
This page有更多有关计算稳定性的详细信息。
如果您对计算机奥赛罗感兴趣,请务必查看publications Logistello,这是(至少几年前)世界冠军。作者Michael Buro撰写了关于这一主题的博士论文。源代码现在可用,因此您可以检查使用的数据结构。从内存来看,我认为他使用三元数(即黑色,白色,空白值)来实现快速查找 - 并且还保持各种模式(行,列,对角线,角落等)的状态,以加快评估功能。
答案 1 :(得分:0)
嗯,我认为它属于你的数据结构。要检查某件作品是否稳定,您必须检查其旁边的所有字段(水平,垂直,对角线)是否遵循以下规则之一:
如何检查这取决于您的数据结构。 也许你可以选择一个二维数组,这样你就可以在真正的游戏板上找到一个更接近“8x8矩阵”的图片。