Files
@ 7f1984280936
Branch filter:
Location: OneEye/src/go/engine.py - annotation
7f1984280936
1.1 KiB
text/x-python
Engine draft for exploring move sequences
7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 7f1984280936 | 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()
|