Campo minado

Campo minado

Médio

Introdução

O Minesweeper é um jogo popular no qual tens de encontrar as minas recorrendo a pistas numéricas que indicam quantas minas estão diretamente adjacentes (na horizontal, na vertical ou na diagonal) a uma casa.

Instruções

A tua tarefa é adicionar a contagem de minas às casas vazias de um tabuleiro de Campo Minado já completo. O próprio tabuleiro é um retângulo composto por casas que estão vazias (' ') ou que contêm uma mina ('*').

Para cada casa vazia, conta o número de minas que lhe são adjacentes (na horizontal, na vertical e na diagonal). Se a casa vazia não tiver minas adjacentes, deixa-a vazia. Caso contrário, substitui-a pelo número de minas adjacentes.

Por exemplo, podes receber um tabuleiro 5 x 4 como este (aqui, os espaços vazios são representados com o caráter '·' para visualização no ecrã):

·*·*·
··*··
··*··
·····

Que o teu código deve transformar neste:

1*3*1
13*31
·2*2·
·111·

Nota

As posições x,y são frequentemente representadas como um Point, o que dá origem a algumas funções úteis para pontos que podem ajudar nesta tarefa. Em alternativa, representar isto como um array bidimensional também pode ser útil. De qualquer das formas, definir alguns métodos de extensão descritivos pode tornar a tua solução muito mais legível e elegante.

Editar via GitHub A ligação abre numa nova janela ou separador
Pharo Exercism

Estás pronto para começar Campo minado?

Inscreve-te no Exercism para aprenderes e dominares Pharo com 50 exercícios, e mentoria humana real, tudo grátis.

Mergulha a fundo em Campo minado!

Exploramos ciclos for aninhados, o uso engenhoso de min/max para simplificar a verificação de limites, pipelines funcionais e a utilização de matrizes bidimensionais.