Работа вам нужна срочно. Не волнуйтесь, уложимся!
Заполните, пожалуйста, данные для автора:
- 22423 авторов готовы помочь тебе.
- 2402 онлайн
Код
Требования:
Объяснение: По сути, для данного задания вам потребуется реализовать алгоритм для нахождения кратчайшего пути в графе (представленном в виде лабиринта). Один из предложенных алгоритмов — **Алгоритм Ли** (волновой алгоритм) — на основе поиска в ширину вполне подходит для данной задачи.
from collections import deque
# Модель лабиринта, где 1 — это стена, 0 — это свободный проход
maze = [
[1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 1, 1, 0, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 1],
[1, 0, 1, 0, 1, 0, 0, 1],
[1, 0, 0, 0, 0, 1, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1]
]
# Координаты начала (входа)
start_x, start_y = 1, 1
# Координаты финиша (выхода)
end_x, end_y = 5, 6
# Поиск путей (алгоритм BFS)
def bfs(maze, start, goal):
rows, cols = len(maze), len(maze[0])
queue = deque([start])
distances = [[-1] * cols for _ in range(rows)]
distances[start[0]][start[1]] = 0
directions = [(0,1), (1,0), (0,-1), (-1,0)] # Право, Вниз, Лево, Вверх
while queue:
x, y = queue.popleft()
if (x, y) == goal: break
for dx, dy in directions:
nx, ny = x + dx, y + dy
if 0