bl00dt3ars

03. Kate's Way Out (backtracking)

Jun 16th, 2021 (edited)
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.21 KB | None | 0 0
  1. def isSafe(maze, x, y, sol):
  2.     if 0 <= x < row and 0 <= y < col and maze[x][y] != "#" and sol[x][y] == 0:
  3.         return True
  4.     return False
  5.  
  6.  
  7. def solveMaze(maze):
  8.     sol = [[0 for j in range(col)] for i in range(row)]
  9.     if not solveMazeUtil(maze, x, y, sol):
  10.         return "Kate cannot get out"
  11.     else:
  12.         moves = sum([1 for r in range(row) for c in range(col) if sol[r][c] == 1])
  13.         return f"Kate got out in {moves} moves"
  14.  
  15.  
  16. def solveMazeUtil(maze, x, y, sol):
  17.     if isSafe(maze, x, y, sol):
  18.         if x == row - 1 or y == col - 1 or x == 0 or y == 0:
  19.             sol[x][y] = 1
  20.             return True
  21.         sol[x][y] = 1
  22.         if solveMazeUtil(maze, x + 1, y, sol):
  23.             return True
  24.         if solveMazeUtil(maze, x, y + 1, sol):
  25.             return True
  26.         if solveMazeUtil(maze, x - 1, y, sol):
  27.             return True
  28.         if solveMazeUtil(maze, x, y - 1, sol):
  29.             return True
  30.         sol[x][y] = 0
  31.         return False
  32.  
  33.  
  34. row = int(input())
  35. maze = [list(input()) for i in range(row)]
  36. col = len(maze[0])
  37. x = sum([r for r in range(row) if "k" in maze[r]])
  38. y = sum([c for c in range(len(maze[x])) if "k" == maze[x][c]])
  39.  
  40. print(solveMaze(maze))
Add Comment
Please, Sign In to add comment