Voltar para os desafios
Médio 0 resolvidos 0% de aceitação

Minesweeper Neighbor Counts

Annotate a rectangular board.

O que você vai aprender

  • Visitar os 8 vizinhos de uma célula
  • Ficar dentro dos limites da grade
  • Montar uma cópia anotada do tabuleiro

Problema

Annotate a rectangular board. A star (*) is a mine and a dot (.) is a safe cell. For each safe cell, count mines in the eight surrounding cells, including diagonals. Replace it with the count from 1 to 8, or keep a dot if the count is zero. Preserve every mine. Cells outside the board do not exist.

Implement minesweeper_neighbor_counts(board).

Input

board: The rows from top to bottom; characters run left to right.

Output

Return the annotated rows in the same order and dimensions.

Restrições

1 ≤ rows, columns ≤ 200. Every row has the same nonzero length and contains only * and . .

Exemplos

Exemplo 1
Entrada:
board = ["*..", "...", "..*"]

Saída esperada:
expected = ["*1.", "121", ".1*"]
Entrada:
std::vector<std::string> board = {"*..", "...", "..*"};

Saída esperada:
std::vector<std::string> expected = {"*1.", "121", ".1*"};
Entrada:
string[] board = new string[] {"*..", "...", "..*"};

Saída esperada:
string[] expected = new string[] {"*1.", "121", ".1*"};

Explicação

The center touches both mines, so its count is 2. The top-right and bottom-left touch none and stay dots. Other safe cells touch one mine.

Exemplo 2
Entrada:
board = ["..."]

Saída esperada:
expected = ["..."]
Entrada:
std::vector<std::string> board = {"..."};

Saída esperada:
std::vector<std::string> expected = {"..."};
Entrada:
string[] board = new string[] {"..."};

Saída esperada:
string[] expected = new string[] {"..."};

Explicação

This one-row board has no mines. All counts are zero, so every dot remains a dot.

Como abordar

Tente sozinho primeiro e depois abra uma dica de cada vez.

Dica 1

Só as células seguras mudam; as minas ficam exatamente onde estão.

Dica 2

Para cada ponto, verifique as oito posições ao redor e conte as minas próximas.

Dica 3

Cuidado nas bordas e nos cantos para não acessar fora do tabuleiro.

Complexidade esperada

tempo O(r*c), espaço extra O(r*c)

Referências

Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.

Aprenda com outros

Soluções da comunidade

Ainda não há soluções publicadas. Resolva este desafio para compartilhar a primeira.