Você planeja construir uma casa na árvore num bosque perto da sua casa, para poder ver o sol nascer e se pôr.
Você conseguiu dados de uma empresa local de levantamento topográfico que mostram a altura de cada árvore em cada seção retangular do mapa. Você precisa analisar cada grade do mapa para encontrar boas árvores para a sua casa na árvore.
Uma boa árvore é as duas coisas:
Sua tarefa é encontrar as árvores em potencial onde você poderia construir sua casa na árvore.
A empresa de dados fornece os dados na forma de grades que mostram as alturas das árvores. As linhas da grade representam a direção leste-oeste, e as colunas representam a direção norte-sul.
Uma árvore aceitável é a maior da sua linha e, ao mesmo tempo, a menor da sua coluna.
Uma grade pode não ter nenhuma árvore boa. Ou pode ter uma, ou até várias.
Veja uma grade que tem exatamente uma árvore candidata.
↓
1 2 3 4
|-----------
1 | 9 8 7 8
→ 2 |[5] 3 2 4
3 | 6 6 7 1
Então o ponto em [2, 1] (linha: 2, coluna: 1) é um ótimo lugar para uma casa na árvore.
Às vezes é necessário lançar uma exceção. Quando você faz isso, deve sempre incluir uma mensagem de erro significativa para indicar qual é a origem do erro. Isso deixa seu código mais legível e ajuda muito na depuração. Em situações nas quais você sabe que a origem do erro será de um determinado tipo, você pode optar por lançar um dos tipos de erro embutidos, 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 se a matrix for irregular. Os testes só passarão se você lançar a exception com raise e incluir uma mensagem junto com ela.
Para lançar um ValueError com uma mensagem, escreva a mensagem como um argumento do tipo exception:
# if the matrix is irregular
raise ValueError("irregular matrix")
Crie sua conta no Exercism para aprender e dominar Python com 17 conceitos146 exercícios e mentoria humana de verdade, tudo de graça.