Marienbad游戏错误XOR

时间:2014-02-05 22:25:02

标签: c artificial-intelligence xor

我实际上正在编写一个编程难题,我需要编写一个人工智能代码,它总能做出最好的当前动作来赢得游戏。

失败者是选择最后一根棍棒的人。

这是我的董事会:

|  
|||  
|||||  
|  

所以我在我的所有数字上使用XOR运算符来获取我需要删除的数量,这些数据给了我:1 XOR 3 XOR 5 XOR 1 = 6

现在我做:
    1 XOR 6 = 7(因为它增加了我们不会选择这种情况)
    3 XOR 6 = 5(因为它增加了我们不会选择这种情况)
    5 XOR 6 = 3(因为它减少了我们将通过移除2支减少5到3。

问题在于我正在玩一个游戏的“misere”版本,如果是最后一个玩家的失败者,似乎这种方法对于正常游戏来说是完美的,其中获胜者是获胜者最后一根棒。

有人可以解释一下我在这种情况下应该做些什么。

1 个答案:

答案 0 :(得分:1)

获胜策略不一定是将所有桩堆放在一起并从一堆中移除那么多棒。相反,您想要选择要移除的多个木棒,使得所有桩的XOR为零。例如,如果从包含五根木棍的桩中取出两根木棍,则剩余的XOR为1 XOR 3 XOR 3 XOR 1 = 0.

希望这有帮助!