Advertisement
KNenov96

Untitled

Oct 25th, 2022
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.62 KB | None | 0 0
  1. def finding_kate(maze):
  2.     k_row = 0
  3.     k_position = 0
  4.     for index, row in enumerate(maze):
  5.         for searching in row:
  6.             if searching == "k":
  7.                 k_row, k_position = index, row.index(searching)
  8.     return k_row, k_position
  9.  
  10.  
  11. def moving_up(maze, k_row, k_position):
  12.     if maze[k_row - 1][k_position] == " ":
  13.         return True
  14.     return False
  15.  
  16.  
  17. def moving_down(maze, k_row, k_position):
  18.     if maze[k_row + 1][k_position] == " ":
  19.         return True
  20.     return False
  21.  
  22.  
  23. def moving_right(maze, k_row, k_position):
  24.     if maze[k_row][k_position + 1] == " ":
  25.         return True
  26.     return False
  27.  
  28.  
  29. def moving_left(maze, k_row, k_position):
  30.     if maze[k_row][k_position - 1] == " ":
  31.         return True
  32.     return False
  33.  
  34.  
  35. def kate_all_ways(maze, k_row, k_position):
  36.     if maze[k_row][k_position - 1] != " " and maze[k_row][k_position + 1] != " " \
  37.             and maze[k_row + 1][k_position] != " " and maze[k_row - 1][k_position] != " ":
  38.         return False
  39.     return True
  40.  
  41.  
  42. amount_rows = int(input())
  43. start_maze = []
  44. row_maze = []
  45.  
  46. for making_maze in range(amount_rows):
  47.     row_maze = [x for x in input()]
  48.     row_maze.append("B")
  49.     row_maze.insert(0, "B")
  50.     start_maze.append(row_maze)
  51. start_maze.append(["B"] * (len(row_maze)))
  52. start_maze.insert(0, ["B"] * (len(row_maze)))
  53.  
  54.  
  55. kate_row, kate_position = finding_kate(start_maze)
  56. kate_main_row, kate_main_position = kate_row, kate_position
  57. turns = 0
  58. longest_way = 0
  59. kate_is_out = False
  60.  
  61. while True:
  62.  
  63.     if moving_right(start_maze, kate_row, kate_position):
  64.         kate_position += 1
  65.         start_maze[kate_row][kate_position] = "#"
  66.         turns += 1
  67.  
  68.     elif moving_left(start_maze, kate_row, kate_position):
  69.         kate_position -= 1
  70.         start_maze[kate_row][kate_position] = "#"
  71.         turns += 1
  72.  
  73.     elif moving_up(start_maze, kate_row, kate_position):
  74.         kate_row -= 1
  75.         start_maze[kate_row][kate_position] = "#"
  76.         turns += 1
  77.  
  78.     elif moving_down(start_maze, kate_row, kate_position):
  79.         kate_row += 1
  80.         start_maze[kate_row][kate_position] = "#"
  81.         turns += 1
  82.  
  83.     if kate_position == 1 or kate_position == len(start_maze[kate_row]) - 2 or kate_row == len(start_maze) - 2 or kate_row == 1:
  84.         kate_row, kate_position = kate_main_row, kate_main_position
  85.         if turns > longest_way:
  86.             longest_way = turns
  87.         turns = 0
  88.         kate_is_out = True
  89.  
  90.     if not kate_all_ways(start_maze, kate_row, kate_position):
  91.         break
  92.  
  93. if kate_is_out:
  94.     print(f"Kate got out in {longest_way + 1} moves")
  95. else:
  96.     print(f"Kate cannot get out")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement