forked from UNN/2026-rff_mp
27 lines
722 B
Python
27 lines
722 B
Python
class DFSStrategy:
|
|
def find_path(self, maze, start, exit_):
|
|
stack = [start]
|
|
parent = {start: None}
|
|
visited = {start}
|
|
|
|
while stack:
|
|
cur = stack.pop()
|
|
|
|
if cur == exit_:
|
|
return self._reconstruct(parent, start, exit_), visited
|
|
|
|
for n in maze.get_neighbors(cur):
|
|
if n not in visited:
|
|
visited.add(n)
|
|
parent[n] = cur
|
|
stack.append(n)
|
|
|
|
return None, visited
|
|
|
|
def _reconstruct(self, parent, start, exit_):
|
|
path = []
|
|
cur = exit_
|
|
while cur:
|
|
path.append(cur)
|
|
cur = parent[cur]
|
|
return list(reversed(path)) |