Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Clear solution in Clear category for Berserk Rook by U.V
class State:
def __init__(self, b, enemy, n):
self.b = b
self.e = enemy.copy()
self.e.discard(b)
self.n = n
def rest(self):
return self.b, self.e, self.n
def berserk_rook(b, e):
N = n = 0
print('#'*10, b, e, '#'*10)
Q = [State(b, e, 0)]
while Q:
st = Q.pop()
#st.pState()
p,e,n = st.rest()
N = max(n, N)
n += 1
for move in available_moves(p, e):
Q.append(State(move, e, n))
return N
def available_moves(bers, figs):
Y = list('87654321')
X = list('abcdefgh')
x, y = bers
m = []
for y1 in Y[Y.index(y)::-1]:
if x + y1 in figs:
m.append(x+y1)
break
for y1 in Y[Y.index(y)+1:]:
if x + y1 in figs:
m.append((x+y1))
break
for x1 in X[X.index(x)+1:]:
if x1 + y in figs:
m.append((x1+y))
break
for x1 in X[X.index(x)::-1]:
if x1 + y in figs:
m.append((x1+y))
break
return m
Sept. 14, 2022
Comments: