Minimax函数对TicTacToe中的所有可能移动返回相同的评估

时间:2019-05-01 03:46:17

标签: python python-2.7 tic-tac-toe minimax

在主程序循环中,for循环遍历TicTacToe板上的每个空白位置,然后在每个位置上应用minimax函数以评估该特定动作。但是,对于每个基于输入的特定板配置,它针对所有空白点均返回相同的评估值。

sed -E '/^\w{20}R\w{4}$/s/^(.{12})../\1GH/' <<<UNIT56712423MP000000R0990

我希望对每个空白点的move数组的输出为[10,-10,0 ..],依此类推。相反,我的输出是:

enter image description here

1 个答案:

答案 0 :(得分:1)

让我们看看程序中的这个循环:

for spot in empty_spots:
    spot_eval = minimax(empty_spots, len(empty_spots), True)
    print(f'The spot eval for {spot} is {spot_eval}')
    moves.append(spot_eval)

请注意,在for循环的所有迭代中对minimax函数的调用都是相同的,因为它不依赖于spot变量。因此,基本上,您在此循环中对len(empty_spots)函数进行了minimax调用(它们都是相同的)。结果,moves数组填充了相同的值,该值等于 minimax(empty_spots, len(empty_spots), True)