Trilhas
/
Python
Python
/
Exercícios
/
Campo Minado
Campo Minado

Campo Minado

Médio

Introdução

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.

Instruções

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·

Mensagens de exceção

Às vezes, é necessário lançar uma exceção. Quando você faz isso, inclua sempre uma mensagem de erro significativa para indicar qual é a origem do erro. Isso deixa seu código mais legível e ajuda muito a depurar o código. Em situações em que você sabe que a origem do erro será de um tipo específico, você pode escolher lançar um dos tipos de erro internos, mas ainda assim deve incluir uma mensagem significativa.

Este exercício em particular exige que você use a instrução raise para "lançar" um ValueError quando a função board() receber uma entrada malformada. Os testes só vão passar se você fizer o raise da exception e incluir uma mensagem com ela.

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

# when the board receives malformed input
raise ValueError("The board is invalid with current input.")
Editar via GitHub O link abre em uma nova janela ou aba
Python Exercism

Tudo pronto para começar Campo Minado?

Crie sua conta no Exercism para aprender e dominar Python com 17 conceitos146 exercícios e mentoria humana de verdade, tudo de graça.

Mergulho profundo em Campo Minado!

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.