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·

Mensagens de exceção

Por vezes, é necessário lançar uma exceção. Quando o fazes, deves incluir sempre uma mensagem de erro significativa que indique qual é a origem do erro. Isto torna o teu código mais legível e ajuda imenso na depuração. Nas situações em que sabes que a origem do erro será de um determinado tipo, podes optar por lançar um dos tipos de erro incorporados, mas deves continuar a incluir uma mensagem significativa.

Este exercício em particular exige que uses a instrução raise para "lançar" um ValueError quando a função board() recebe uma entrada malformada. Os testes só passam se tanto fizeres raise da exception como incluíres uma mensagem com ela.

Para lançar um ValueError com uma mensagem, escreve a mensagem como argumento do tipo exception:

# when the board receives malformed input
raise ValueError("The board is invalid with current input.")
Editar via GitHub A ligação abre numa nova janela ou separador
Python Exercism

Estás pronto para começar Campo minado?

Inscreve-te no Exercism para aprenderes e dominares Python com 17 conceitos146 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.