Заполнение недостающих частей вашего кода, похоже, работает:
from pprint import pprint
maze = [['#'] * 10,
['#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'],
['#', ' ', '#', ' ', '#', ' ', '#', ' ', ' ', '#'],
['#', ' ', '#', ' ', '#', '#', '#', ' ', '#', '#'],
['#', ' ', '#', '#', '#', '*', '#', ' ', ' ', '#'],
['#', ' ', '#', ' ', ' ', ' ', '#', '#', ' ', '#'],
['#', ' ', '#', ' ', '#', '#', '#', '#', ' ', '#'],
['G', ' ', '#', ' ', ' ', ' ', ' ', ' ', ' ', '#'],
['#'] * 10]
length = len(maze)
width = len(maze[0])
solution = [[0 for _ in range(width)] for _ in range(length)]
def solve_maze(x, y):
if maze[x][y] == 'G': # checking if we've reached the target
solution[x][y] = 1
return True
if x >= 0 and y >= 0 and x < length and y < width and solution[x][y] == 0 and maze[x][y] in ' *':
solution[x][y] = 1
if solve_maze(x + 1, y):
return True
if solve_maze(x, y + 1):
return True
if solve_maze(x - 1, y):
return True
if solve_maze(x, y - 1):
return True
solution[x][y] = 0
return False
solve_maze(4, 5)
pprint(solution)
Единственное, что я изменил в solve_maze
, это изменение maze[x][y] == ' '
на maze[x][y] in ' *'
, чтобы начальная позиция не изменялась.не ломайте его.
Вывод:
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 1, 0, 0, 0, 0, 0, 1, 1, 0],
[0, 1, 0, 0, 0, 0, 0, 1, 0, 0],
[0, 1, 0, 0, 0, 1, 0, 1, 1, 0],
[0, 1, 0, 1, 1, 1, 0, 0, 1, 0],
[0, 1, 0, 1, 0, 0, 0, 0, 1, 0],
[1, 1, 0, 1, 1, 1, 1, 1, 1, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
Если вы хотите узнать, что случилось с вашим кодом, вам необходимо предоставить MCVE .