Advertisement
serega1112

zmey

Mar 27th, 2021
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.01 KB | None | 0 0
  1. q = deque([])
  2. visited = [[[-1, -1, -1, -1] for _ in range(m)] for _ in range(len(grid))]
  3.  
  4. for i in range(len(grid)):
  5.     for j in range(m):
  6.         if grid[i][j] == 'S':
  7.             q.append((i, j, 0))
  8.             visited[i][j][0] = 0
  9.             q.append((i, j, 1))
  10.             visited[i][j][1] = 0
  11.             q.append((i, j, 2))
  12.             visited[i][j][2] = 0
  13.             q.append((i, j, 3))
  14.             visited[i][j][3] = 0
  15.         if grid[i][j] == 'F':
  16.             xe, ye = i, j
  17.                
  18.            
  19. while q:
  20.     x, y, direction = q.popleft()
  21.  
  22.     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),
  23.         (x+1, y, 2, 2), (x, y-1, 2, 3), (x, y-1, 3, 3), (x-1, y, 3, 0)]:
  24.  
  25.         if dir_old == direction and grid[xp][yp] != 'X' and visited[xp][yp][dir_new] == -1:
  26.             q.append((xp, yp, dir_new))
  27.             visited[xp][yp][dir_new] = visited[x][y][dir_old] + 1
  28.  
  29.        
  30. print(min([elem for elem in visited[xe][ye] if elem > 0]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement