Advertisement
Guest User

suca

a guest
Apr 21st, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.97 KB | None | 0 0
  1. def printBoard(board):
  2.     for i in board:
  3.         print(i, "\n")
  4.     print("\n")
  5.    
  6.  
  7. def sht_pth(sx, sy, maze):
  8.     w = len(maze[0])
  9.     h = len(maze)
  10.     board = [[0 for i in range(w)] for i in range(h)]
  11.     board[sx][sy] = 1
  12.  
  13.     arr = [(sx, sy)]
  14.     while arr:
  15.         x, y = arr.pop(0)
  16.         for i in [[-1,0],[1,0],[0,-1],[0,1]]:
  17.           nx, ny = x + i[0], y + i[1]
  18.           if 0 <= nx < h and 0 <= ny < w:
  19.             if board[nx][ny] == 0:
  20.                 board[nx][ny] = board[x][y] + 1
  21.                
  22.                 if maze[nx][ny] == 1 :
  23.                   continue
  24.                 arr.append((nx, ny))
  25.                
  26.        
  27.  
  28.                  
  29.     return board
  30.  
  31. def answer(maze):
  32.   w = len(maze[0])
  33.   h = len(maze)
  34.   tb = sht_pth(0, 0, maze)
  35.   printBoard(tb)
  36.   bt = sht_pth(h-1, w-1, maze)
  37.   printBoard(bt)
  38.   board = []
  39.  
  40.   ans = 2 ** 32-1
  41.   for i in range(h):
  42.       for j in range(w):
  43.           if tb[i][j] and bt[i][j]:
  44.               print(tb[i][j] + bt[i][j] - 1)
  45.               ans = min(tb[i][j] + bt[i][j] - 1, ans)
  46.              
  47.              
  48.   return ans
  49.  
  50. #maze = [[0, 1, 1, 0], [0, 0, 0, 1], [1, 1, 0, 0], [1, 1, 1, 0]] #Answer 7
  51. maze = [[0,1,0,0,0],[0,0,0,1,0],[1,1,1,1,0]] #Answer 7
  52. #maze = [[0,1,1,1],[0,1,0,0],[1,0,1,0],[1,1,0,0]] #Answer 7
  53. #maze = [[0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0]] #Answer 11
  54. if __name__ == "__main__":
  55.  
  56.     print(answer([[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  57.               [1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
  58.               [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  59.               [1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
  60.               [1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
  61.               [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  62.               [1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
  63.               [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  64.               [0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
  65.               [0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
  66.               [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  67.               [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
  68.               [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  69.               [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1],
  70.               [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1],
  71.               [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  72.               [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0],
  73.               [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  74.               [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
  75.               [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement