AlgoDesign

Bomberman game

1def bomberMan(n, grid):
2  # Write your code here
3  if n == 1: return grid
4  
5  # all cells will be filled with bombs
6  if n % 2 == 0: return ["O"*len(grid[0]) for _ in range(len(grid))]
7  
8  # alternate states
9  n //= 2
10  
11  for q in range((n + 1) % 2 + 1):
12    newGrid = [["O" for _ in range(len(grid[0]))] for _ in range(len(grid))]
13    
14    # function for detonation
15    def detonate(x, y):
16      if 0 <= x < len(grid) and 0 <= y < len(grid[0]):
17        newGrid[x][y] = "."
18    
19    xi = [0, 0, 0, 1, -1]
20    yi = [0, -1, 1, 0, 0]
21        
22    for x in range(len(grid)):
23      for y in range(len(grid[0])):
24        # check for bomb
25        if grid[x][y] == "O":
26          # detonate the cell by calling the function
27          for i, j in zip(xi, yi):
28            detonate(x + i, y + j)
29
30    grid = newGrid
31  
32  return ["".join(x) for x in grid]