-
Notifications
You must be signed in to change notification settings - Fork 0
/
tt.py
37 lines (29 loc) · 1.01 KB
/
tt.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import random
import sys
from faza1 import *
class TranspositionTable:
def __init__(self, n: int, m: int):
self.table = {}
self.hits = 0
self.key = [[[random.randint(0, sys.maxsize) for _ in range(
m)] for _ in range(n)] for _ in range(2)]
self.misses = 0
def store(self, board: list[list[int]], best_move: tuple[Move, int], depth: int) -> None:
self.table[self.cache_key(board)] = best_move, depth
def retrieve(self, board: list[list[int]]):
key = self.cache_key(board)
if key in self.table:
self.hits += 1
return self.table[key]
self.misses += 1
return None
def cache_key(self, board: list[list[int]]) -> int:
hash = 0
for i in range(len(board)):
for j in range(len(board)):
if (board[i][j] != 0):
hash = hash ^ self.key[board[i][j] - 1][i][j]
return hash
i = 1000000000000000000000000
a = 5555555555555555555555555
print(i ^ a)