Kaloyankerr

08. Miner

Sep 27th, 2020
872
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. from collections import deque
  2.  
  3.  
  4. def get_start_position(count: int):
  5.     for x_ind in range(count):
  6.         if "s" in matrix[x_ind]:
  7.             for y_ind in range(count):
  8.                 if matrix[x_ind][y_ind] == "s":
  9.                     return [x_ind, y_ind]
  10.  
  11.  
  12. def make_a_move(move: str):
  13.     global game_over, coals_collected, current_position, row, col
  14.  
  15.     if move == "up":
  16.         if row - 1 >= 0:
  17.             current_position = [row - 1, col]
  18.  
  19.     elif move == "down":
  20.         if row + 1 < len(matrix):
  21.             current_position = [row + 1, col]
  22.  
  23.     elif move == "left":
  24.         if col - 1 >= 0:
  25.             current_position = [row, col - 1]
  26.  
  27.     elif move == "right":
  28.         if col + 1 < len(matrix):
  29.             current_position = [row, col + 1]
  30.  
  31.     if matrix[current_position[0]][current_position[1]] == "e":
  32.         game_over = True
  33.     elif matrix[current_position[0]][current_position[1]] == "c":
  34.         coals_collected += 1
  35.     matrix[current_position[0]][current_position[1]] = "*"
  36.  
  37.  
  38. n = int(input())
  39. move_commands = deque(input().split())
  40. matrix = deque([x for x in input().split()] for i in range(n))
  41. current_position = get_start_position(n)
  42.  
  43. game_over = False
  44. all_coals = sum(list(map(lambda x: x.count("c"), matrix)))
  45. coals_collected = 0
  46.  
  47. while True:
  48.     current_move = move_commands.popleft()
  49.     row = current_position[0]
  50.     col = current_position[1]
  51.  
  52.     make_a_move(current_move)
  53.  
  54.     if game_over:
  55.         print(f"Game over! ({current_position[0]}, {current_position[1]})")
  56.         break
  57.     elif coals_collected == all_coals:
  58.         print(f"You collected all coals! ({current_position[0]}, {current_position[1]})")
  59.         break
  60.     elif not move_commands:
  61.         print(f"{all_coals - coals_collected} coals left. ({current_position[0]}, {current_position[1]})")
  62.         break
  63.  
RAW Paste Data