Java 《奥赛罗》中稳定圆盘的计数

Java 《奥赛罗》中稳定圆盘的计数,java,algorithm,reversi,Java,Algorithm,Reversi,我正在编写一个Otherlo reversi引擎,作为以后实现国际象棋引擎的训练。 我想数一数稳定的棋子的数量,但不知道最好的方法是什么 我可以很容易地计算出“边缘稳定”的部分,但我不确定如何解释其他部分 一个。我用一个一维数组来表示电路板 谢谢你的建议 来自 一般来说,当沿着所有四个水平轴, 垂直和每个对角线位于边界上、填充行中或 旁边是一块颜色相同的稳定块 您已经提到了边界-可以通过计算碎片来检查填充行,尽管这里可能有很多优化,例如,首先找到填充行,然后将整行上的每个位置标记为潜在稳定,而不

我正在编写一个Otherlo reversi引擎,作为以后实现国际象棋引擎的训练。 我想数一数稳定的棋子的数量,但不知道最好的方法是什么

我可以很容易地计算出“边缘稳定”的部分,但我不确定如何解释其他部分 一个。我用一个一维数组来表示电路板

谢谢你的建议

来自

一般来说,当沿着所有四个水平轴, 垂直和每个对角线位于边界上、填充行中或 旁边是一块颜色相同的稳定块

您已经提到了边界-可以通过计算碎片来检查填充行,尽管这里可能有很多优化,例如,首先找到填充行,然后将整行上的每个位置标记为潜在稳定,而不是遍历每个位置,然后检查所有相关方向,这将导致浪费精力

有更多关于计算稳定性的细节


如果你对电脑奥赛罗感兴趣,一定要查一下《奥赛罗》,它至少是几年前的世界冠军。作者MichaelBuro就这一主题撰写了他的博士论文。源代码现在可用,因此您可以检查所使用的数据结构。根据记忆,我认为他使用了三元数,即黑、白、空的值来实现快速查找,并且还保持了各种模式的状态—行、列、对角线、角和其他模式,以加速计算功能。

Hm,我认为它属于您的数据结构。要检查工件是否稳定,必须检查其旁边的所有字段水平、垂直和对角线是否符合以下规则之一:

这是一个界限 这是一块颜色相同的稳定块 它排满了人 如何检查这一点取决于您的数据结构。
也许你可以选择一个二维数组,这样你就有了一个更接近真实游戏板的“图片”,一个8x8矩阵。

从仔细定义你的术语“稳定块”开始,这应该会引导你沿着算法路径走下去。嗯……所以我认为没有简单的方法来计算它……所以我只计算边缘上的稳定块,这很简单。我会看看Logistello,谢谢。我可以管理边界稳定块和填充行。问题是第二种选择:在电路板中间发现稳定的部分。