Advertisement
Guest User

Untitled

a guest
Apr 20th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.52 KB | None | 0 0
  1. # Complete the function below.
  2.  
  3. def step1(grid, i, j, n):
  4.     node = grid[i][j]
  5.    
  6.     if node == -1:
  7.         return
  8.     elif node == 0:
  9.         for idx in range(-1, 2):
  10.             for jdx in range(-1, 2):
  11.                 if not (idx == 0 and jdx == 0):
  12.                     ri = i + idx
  13.                     rj = j + jdx
  14.                    
  15.                     if ri >= 0 and rj >= 1 and ri < n and rj < n + 1:
  16.                         if grid[ri][rj] == -1:
  17.                             node += 1
  18.    
  19.     grid[i][j] = node
  20.  
  21. def step2(grid, i, j, n):
  22.     node = grid[i][j]
  23.     if node == -1:
  24.         if i + 1 < n:
  25.             grid[i + 1][j] = 2
  26.            
  27. def step3(grid, i, j, n):
  28.     node = grid[i][j]
  29.     if node == -1:
  30.         if j + 1 < n:
  31.             grid[i][j + 1] = 0
  32.  
  33. def step4(grid, n):
  34.     for i in range(n):
  35.         if i % 2 != 0:
  36.             if grid[i][0] == 1:
  37.                 for j in range(n):
  38.                     node = grid[i][j + 1]
  39.                    
  40.                     if node != -1:
  41.                         grid[i][j + 1] *= 3
  42.                        
  43. def step5(grid, i, j, n):
  44.     mine_found = False
  45.    
  46.     if grid[i][j] != -1:
  47.         a = [1, 1, -1, -1]
  48.         b = [1, -1, 1, 1]
  49.        
  50.         for x in range(len(a)):
  51.             if i + a[x] >= 0 and j + b[x] >= 1 and i + a[x] < n and j + b[x] < n + 1:
  52.                 if grid[i + a[x]][j + b[x]] == -1:
  53.                     mine_found = True
  54.    
  55.     if mine_found is True:
  56.         grid[i][j] *= 2
  57.  
  58. def  solve_minesweeper(puzzle_array):
  59.     n = len(puzzle_array)
  60.     grid = [None] * n
  61.    
  62.     for i in range(n):
  63.         grid[i] = list()
  64.         grid[i].append(0)
  65.        
  66.         for j in range(n):
  67.             if puzzle_array[i][j] == '.':
  68.                 grid[i].append(0)
  69.             else:
  70.                 #set extra column to indicate row with mines
  71.                 grid[i].append(-1)
  72.                 grid[i][0] = 1
  73.    
  74.     for i in range(n):
  75.         for j in range(n):
  76.             step1(grid, i, j + 1, n)
  77.            
  78.     for i in range(n):
  79.         for j in range(n):
  80.             step2(grid, i, j + 1, n)
  81.            
  82.     for i in range(n):
  83.         for j in range(n):
  84.             step3(grid, i, j + 1, n)
  85.            
  86.     step4(grid, n)
  87.     for i in range(n):
  88.         for j in range(n):
  89.             step5(grid, i, j + 1, n)
  90.    
  91.     ret = [None] * n
  92.  
  93.     for i in range(n):
  94.         ret[i] = grid[i][1:]
  95.    
  96.     # for i in range(ret):
  97.     #         print(i)
  98.    
  99.     return ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement