23 lines
635 B
Python
23 lines
635 B
Python
from Strategies.strat import PathFindingStrategy
|
|
from path import restore
|
|
from collections import deque
|
|
|
|
class BFS(PathFindingStrategy):
|
|
def findPath(self, maze, start, exit):
|
|
queue = deque([start])
|
|
visited = {start}
|
|
parent = {}
|
|
|
|
while queue:
|
|
current = queue.popleft()
|
|
|
|
if current == exit:
|
|
break
|
|
|
|
for n in maze.get_neigbors(current):
|
|
if n not in visited:
|
|
visited.add(n)
|
|
parent[n] = current
|
|
queue.append(n)
|
|
|
|
return self.restore(parent, start, exit), len(visited) |