Minesweeper é um jogo popular no qual o jogador precisa encontrar as minas usando dicas numéricas que indicam quantas minas estão diretamente adjacentes (na horizontal, na vertical ou na diagonal) a uma casa.
Sua tarefa é adicionar a contagem de minas às casas vazias de um tabuleiro de Campo Minado já completo.
O tabuleiro em si é um retângulo composto de casas que são vazias (' ') ou que contêm uma mina ('*').
Para cada casa vazia, conte quantas minas são adjacentes a ela (na horizontal, na vertical e na diagonal). Se a casa vazia não tiver minas adjacentes, deixe-a vazia. Caso contrário, substitua seu conteúdo pela quantidade de minas adjacentes.
Por exemplo, você pode receber um tabuleiro 5 x 4 como este (aqui, os espaços vazios são representados pelo caractere '·' para exibição na tela):
·*·*·
··*··
··*··
·····
E seu código deve transformá-lo nisto:
1*3*1
13*31
·2*2·
·111·
Localizações x,y costumam ser representadas por um Point, o que leva a algumas funções de ponto úteis que podem ajudar nisso. Como alternativa, representar isso como um Array 2D também pode ser útil. De qualquer forma, definir alguns métodos de extensão descritivos que podem deixar sua solução muito mais legível e elegante.
Crie sua conta no Exercism para aprender e dominar Pharo com 50 exercícios e mentoria humana de verdade, tudo de graça.
Vamos explorar laços for aninhados, o uso inteligente de min/max para simplificar a verificação de limites, pipelines funcionais e o uso de matrizes bidimensionais.