Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Complete the function below.
- def step1(grid, i, j, n):
- node = grid[i][j]
- if node == -1:
- return
- elif node == 0:
- for idx in range(-1, 2):
- for jdx in range(-1, 2):
- if not (idx == 0 and jdx == 0):
- ri = i + idx
- rj = j + jdx
- if ri >= 0 and rj >= 1 and ri < n and rj < n + 1:
- if grid[ri][rj] == -1:
- node += 1
- grid[i][j] = node
- def step2(grid, i, j, n):
- node = grid[i][j]
- if node == -1:
- if i + 1 < n:
- grid[i + 1][j] = 2
- def step3(grid, i, j, n):
- node = grid[i][j]
- if node == -1:
- if j + 1 < n:
- grid[i][j + 1] = 0
- def step4(grid, n):
- for i in range(n):
- if i % 2 != 0:
- if grid[i][0] == 1:
- for j in range(n):
- node = grid[i][j + 1]
- if node != -1:
- grid[i][j + 1] *= 3
- def step5(grid, i, j, n):
- mine_found = False
- if grid[i][j] != -1:
- a = [1, 1, -1, -1]
- b = [1, -1, 1, 1]
- for x in range(len(a)):
- if i + a[x] >= 0 and j + b[x] >= 1 and i + a[x] < n and j + b[x] < n + 1:
- if grid[i + a[x]][j + b[x]] == -1:
- mine_found = True
- if mine_found is True:
- grid[i][j] *= 2
- def solve_minesweeper(puzzle_array):
- n = len(puzzle_array)
- grid = [None] * n
- for i in range(n):
- grid[i] = list()
- grid[i].append(0)
- for j in range(n):
- if puzzle_array[i][j] == '.':
- grid[i].append(0)
- else:
- #set extra column to indicate row with mines
- grid[i].append(-1)
- grid[i][0] = 1
- for i in range(n):
- for j in range(n):
- step1(grid, i, j + 1, n)
- for i in range(n):
- for j in range(n):
- step2(grid, i, j + 1, n)
- for i in range(n):
- for j in range(n):
- step3(grid, i, j + 1, n)
- step4(grid, n)
- for i in range(n):
- for j in range(n):
- step5(grid, i, j + 1, n)
- ret = [None] * n
- for i in range(n):
- ret[i] = grid[i][1:]
- # for i in range(ret):
- # print(i)
- return ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement