我有点理解minimax算法如何适用于Tic Tac Toe python,但我不知道如何在Python中实际编码...这是我到目前为止所做的:
from copy import deepcopy
class TicTacToeBrain :
def __init__(self, player = "x") :
self._squares = {}
self._copySquares = {}
self._winningCombos = (
[0, 1, 2], [3, 4, 5], [6, 7, 8],
[0, 3, 6], [1, 4, 7], [2, 5, 8],
[0, 4, 8], [2, 4, 6])
def createBoard(self) :
for i in range(9) :
self._squares[i] = None
print(self._squares)
def showBoard(self) :
print(self._squares[0], self._squares[1], self._squares[2])
print(self._squares[3], self._squares[4], self._squares[5])
print(self._squares[6], self._squares[7], self._squares[8])
def getAvailableMoves(self) :
self._availableMoves = [] …Run Code Online (Sandbox Code Playgroud) 我正在尝试比较两个__m256i(4 个打包的 64 位整数)。为此,我使用_mm256_cmpgt_epi64函数。
除了一些比较之外,该函数按预期工作,就好像该函数没有考虑 64 位整数的最大位一样。如下图第二次和第三次对比。
这里是一个 MCVE,我期望每个 64 位整数 from 都a大于其对等整数b(因此cp应该是0xFFF...FFF):
#include <immintrin.h>
#include <x86intrin.h>
#include <stdio.h>
#include <inttypes.h>
// gcc mcve.c -mavx2 -madx && ./a.out
int print_avx2_hex256(__m256i ymm)
{
const size_t n = sizeof(__m256i) / sizeof(u_int64_t);
u_int64_t buffer[n];
_mm256_storeu_si256((__m256i*)buffer, ymm);
for (int i=0; i<n; ++i)
printf("%016"PRIx64" ", buffer[i]);
printf("\n");
return 0;
}
int compare(__m256i a, __m256i b)
{
__m256i cp = _mm256_cmpgt_epi64(a,b);
print_avx2_hex256(cp); // Comparison …Run Code Online (Sandbox Code Playgroud)