Minesweeper
Let's play the minesweeper game.
You are given an m x n char matrix board representing the game board where:
'M'represents an unrevealed mine.'E'represents an unrevealed empty square.'B'represents a revealed blank square that has no adjacent mines, considering above, below, left, right, and all 4 diagonals.- A digit from
'1'to'8'represents how many mines are adjacent to this revealed square. 'X'represents a revealed mine.
You are also given an integer array click where click = [clickr, clickc] represents the next click position among all the unrevealed squares, either 'M' or 'E'.
Return the board after revealing this position according to the following rules:
- If a mine
'M'is revealed, then the game is over; change it to'X'. - If an empty square
'E'with no adjacent mines is revealed, then change it to a revealed blank'B', and all of its adjacent unrevealed squares should be revealed recursively. - If an empty square
'E'with at least one adjacent mine is revealed, then change it to a digit from'1'to'8'representing the number of adjacent mines. - Return the
boardwhen no more squares will be revealed.
Example 1
E E E E E E E M E E E E E E E E E E E E
Input
board = [["E","E","E","E","E"],["E","E","M","E","E"],["E","E","E","E","E"],["E","E","E","E","E"]], click = [3,0]Output
[["B","1","E","1","B"],["B","1","M","1","B"],["B","1","1","1","B"],["B","B","B","B","B"]]Clicking the unrevealed empty square at
[3, 0] reveals connected blank squares and nearby mine counts while leaving the unrevealed mine unchanged.Example 2
B 1 E 1 B B 1 M 1 B B 1 1 1 B B B B B B
Input
board = [["B","1","E","1","B"],["B","1","M","1","B"],["B","1","1","1","B"],["B","B","B","B","B"]], click = [1,2]Output
[["B","1","E","1","B"],["B","1","X","1","B"],["B","1","1","1","B"],["B","B","B","B","B"]]Clicking the unrevealed mine at
[1, 2] ends the game and changes that square from 'M' to 'X'.Constraints
- m == board.length
- n == board[i].length
- 1 <= m, n <= 50
- board[i][j] is either 'M', 'E', 'B', or a digit from '1' to '8'.
- click.length == 2
- 0 <= clickr < m
- 0 <= clickc < n
- board[clickr][clickc] is either 'M' or 'E'.