Advertisement
exDotaPro

radioactive_mutate_vampire_bunnies

Sep 24th, 2020
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.92 KB | None | 0 0
  1. def find_player(matrix):
  2.     for i in range(len(matrix)):
  3.         for j in range(len(matrix[i])):
  4.             if matrix[i][j] == 'P':
  5.                 return i, j
  6.  
  7.  
  8. def valid_range(row, col, matrix):
  9.     return row in range(len(matrix)) and col in range(len(matrix[row]))
  10.  
  11.  
  12. def mutate_bunnies(matrix, steps):
  13.     player_pos = find_player(matrix)
  14.     directions = {
  15.         'U': [-1, 0],
  16.         'L': [0, -1],
  17.         'R': [0, 1],
  18.         'D': [1, 0]
  19.     }
  20.     for step in range(len(steps)):
  21.         current_move = steps[step]
  22.         new_matrix = [['.' for _ in range(len(matrix[0]))] for _ in range(len(matrix))]
  23.         for i in range(len(matrix)):
  24.             for j in range(len(matrix[i])):
  25.                 if matrix[i][j] == 'B':
  26.                     new_matrix[i][j] = 'B'
  27.                     for _, value in directions.items():
  28.                         step = [i + value[0], j + value[1]]
  29.                         if valid_range(step[0], step[1], matrix):
  30.                             if new_matrix[step[0]][step[1]] == '.':
  31.                                 new_matrix[step[0]][step[1]] = 'B'
  32.         player_move = [player_pos[0] + directions[current_move][0], player_pos[1] + directions[current_move][1]]
  33.         matrix_output = '\n'.join([''.join([str(x) for x in new_matrix[i]]) for i in range(len(new_matrix))])
  34.         if valid_range(player_move[0], player_move[1], matrix):
  35.             if new_matrix[player_move[0]][player_move[1]] == 'B':
  36.                 return matrix_output + f'\ndead: {player_move[0]} {player_move[1]}'
  37.             else:
  38.                 new_matrix[player_move[0]][player_move[1]] = 'P'
  39.                 player_pos = player_move
  40.                 matrix = new_matrix
  41.         else:
  42.             return matrix_output + f'\nwon: {player_pos[0]} {player_pos[1]}'
  43.  
  44.  
  45. playground = [[x for x in input()] for _ in range([int(x) for x in input().split()][0])]
  46. print(mutate_bunnies(playground, input()))
  47.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement