Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- q = deque([])
- visited = [[[-1, -1, -1, -1] for _ in range(m)] for _ in range(len(grid))]
- for i in range(len(grid)):
- for j in range(m):
- if grid[i][j] == 'S':
- q.append((i, j, 0))
- visited[i][j][0] = 0
- q.append((i, j, 1))
- visited[i][j][1] = 0
- q.append((i, j, 2))
- visited[i][j][2] = 0
- q.append((i, j, 3))
- visited[i][j][3] = 0
- if grid[i][j] == 'F':
- xe, ye = i, j
- while q:
- x, y, direction = q.popleft()
- for xp, yp, dir_old, dir_new in [(x-1, y, 0, 0), (x, y+1, 0, 1), (x, y+1, 1, 1), (x+1, y, 1, 2),
- (x+1, y, 2, 2), (x, y-1, 2, 3), (x, y-1, 3, 3), (x-1, y, 3, 0)]:
- if dir_old == direction and grid[xp][yp] != 'X' and visited[xp][yp][dir_new] == -1:
- q.append((xp, yp, dir_new))
- visited[xp][yp][dir_new] = visited[x][y][dir_old] + 1
- print(min([elem for elem in visited[xe][ye] if elem > 0]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement