0

我正在尝试在 Python 中为井字游戏编写一个极小极大算法。
我不需要代码帮助,只需要算法...... :-)
我试图在没有递归的情况下做到这一点,为了更好地理解它,我看看这个答案

所以,我的算法是这样的:
假设这em是棋盘上所有空方格的列表。
'x' - 是人类(或计算机),'o' - 是树(极小极大算法)。
所以,算法的输入是一个井字棋盘,输出是下一步棋的平方...

我还对每个空方格使用字典,将分数放在那里以决定下一步。我们将其称为map...

算法

  1. em采用大小的所有排列len(em)
  2. 对于每个排列,请执行以下操作:
  3. 从排列的第一个元素开始,放入“x”或“o”,例如,如果排列是(2,4,6,7)这样,算法会将“o”放在 2 处(因为它是树转),然后将“x”放在 4 处,依此类推.. .

  4. 如果'x'在排列中获胜(它可以在中间,我们不需要填充它直到最后)map[the_first_element_at_the_permutation]-=10

  5. 如果 'o' 在排列中获胜:map[the_first_element_at_the_permutation]+=10

毕竟 - 我们正在寻找map得分最高的元素,并将其作为下一步的正方形返回......

不幸的是 - 它不起作用......它适用于许多情况,但很少有它不起作用的情况......
例如:
x.. .o. ..x
现在轮到树了,它会在此处输入“o” :
x.. .o. o.x
这不好,因为我可以把'x'放在右上角,我会赢....


你建议我做什么?为什么我的算法不起作用?(我工作了几天,我不知道该怎么办......)

4

0 回答 0