验证Connect Four游戏的有效方法

时间:2014-08-01 08:00:53

标签: performance algorithm

我正在使用opencv将Connect Four游戏扫描到类似于this one (by John Tromp)的数据结构中。基本上它使用7 x 7 bitboard(顶行只有零),每个玩家能够使用大多数bithift运算符快速检查胜利者,而且没有循环。

有许多好的算法可以检查获胜者,但我找不到一个来检查董事会本身是否代表有效职位。

这些是Victor Allis in his Masters thesis所述的有效排名标准:

  1. “如果给定位置的占用方格总数是奇数,则白人的数量比黑人的数量多一个。如果占用的方格总数是偶数,则这些数字相等。”
  2. “此外,如果列包含空方块,则高于此方块的所有方块也都为空。”
  3. “如果一个位置包含四个连接的人,则该位置结束游戏。由于最后一个移动结束了游戏,所以连接组中的四个方格中的至少一个必须是其列中最高的填充方格。如果是不是这样的,或者两个球员都有四个男人,这个位置是非法的。“
  4. “如果一个玩家拥有多个连接组,则只有当这些组合共享一个包含最后一名玩家的方格时,此位置才合法。”
  5. 此外,在严格应用所有规则时,有些位置是不可能的。这是一个简单的例子:

    . . . . . . . 
    . . . . . . . 
    . . . . . . . 
    . . . . . . . 
    . . . x . . .
    . . . o . . .  (where x plays first)
    

    鉴于上面提到的数据结构,有没有办法在没有昂贵的循环或递归调用的情况下检查所有这些条件(特别是3和4)?

0 个答案:

没有答案