In the popular Minesweeper game you have a board with some mines and those cells that don't contain a mine have a number in it that indicates the total number of mines in the neighboring cells. Starting off with some arrangement of mines we want to create a Minesweeper game setup.
Example
For
matrix = [[true, false, false],
[false, true, false],
[false, false, false]]
the output should be
minesweeper(matrix) = [[1, 2, 1],
[2, 1, 1],
[1, 1, 1]]
Check out the image below for better understanding:
我的解答:
def minesweeper(matrix): ret = [] w = len(matrix[0]) dic = {True:1, False:0} newMatrix = [] newMatrix.append([]) newMatrix.append([]) for x in range(len(matrix[0])+2): newMatrix[0].insert(0,False) newMatrix[1].append(False) for y in matrix: y.append(False) y.insert(0,False) newMatrix.insert(-1,y) for i in range(len(matrix)): ret.append([]) for j in range(w): print(newMatrix[i+2][j+2]) k = int(dic[newMatrix[i][j]]) + int(dic[newMatrix[i][j+1]]) + int(dic[newMatrix[i][j+2]]) + int(dic[newMatrix[i+1][j]]) + int(dic[newMatrix[i+1][j+2]]) + int(dic[newMatrix[i+2][j]]) + int(dic[newMatrix[i+2][j+1]]) + int(dic[newMatrix[i+2][j+2]]) ret[i].append(k) return ret
def minesweeper(matrix): r = [] for i in range(len(matrix)): r.append([]) for j in range(len(matrix[0])): l = -matrix[i][j] for x in [-1, 0, 1]: for y in [-1, 0, 1]: if 0 <= i + x < len(matrix) and 0 <= j + y < len(matrix[0]): l += matrix[i + x][j + y] r[i].append(l) return r