diff --git a/src/statebag.py b/src/statebag.py --- a/src/statebag.py +++ b/src/statebag.py @@ -16,19 +16,9 @@ So we try to find the correct crossover - remember the better variant - linearize the fork back by discarding s'_j-s preceding the crossover and s_j-s following the crossover """ -import random - -from util import EMPTY +from util import EMPTY, hashBoard from go.engine import transitionSequence -rand=random.Random() -rand.seed(361) -zobristNums=tuple( - tuple( - tuple(rand.getrandbits(32) for i in range(3)) for c in range(19) - ) for r in range(19) -) - ## Crude lower bound on edit distance between states. def estimateDistance(diff): @@ -51,11 +41,7 @@ class BoardState: self.diff2Prev=None def hash(self): - res=0 - for (r,row) in enumerate(self._board): - for (c,item) in enumerate(row): - res^=zobristNums[r][c][item+1] - return res + return hashBoard(self._board) def __iter__(self): return iter(self._board) @@ -73,8 +59,7 @@ class BoardState: return res def __eq__(self,x): - # might want to use hash - return self._board==x._board + return self.hash()==x.hash() class StateBag: