import core def transitionSequence(state1, state2, diff, limit=0): return [] class SpecGo(core.Go): def __init__(self): super().__init__() self._diff=[] def load(self,state): for (r,row) in enumerate(state): for (c,x) in enumerate(row): self.board[r][c]=x def listRelevantMoves(self,diff): res=([],[]) for d in diff: (r,c,action,color)=d colorKey=(1-color)<<1 if action!="-": res[colorKey].append((r,c)) if action!="+": self._helper.clear() self._helper.floodFill(color,r,c) res[colorKey].extend(self._helper.getLiberties()) return res class Engine: def __init__(self): self._g=SpecGo() self._diff=[] def load(self,state1,diff): self._g.load(state1) self._diff=diff def iterativelyDeepen(self,state2): for i in range(1,10): seq=self.dfs(state2,i) if seq: return seq def dfs(self,state2,limit): g=self._g for m in g.listRelevantMoves(): g.doMove(m) if g.board==state2: return m if limit>1: seq=self.dfs(state2,limit-1) if seq: seq.append(m) return seq g.undoMove(m) return False eng=Engine()