Trilhas
/
Python
Python
/
Exercícios
/
Pontos de sela
Pontos de sela

Pontos de sela

Fácil

Introdução

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:

  • mais alta que todas as árvores a leste e a oeste, para que você tenha a melhor vista possível dos nasceres e pores do sol.
  • mais baixa que todas as árvores ao norte e ao sul, para minimizar a quantidade de subidas nas árvores.

Instruções

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
  • A linha 2 tem os valores 5, 3, 2 e 4. O maior valor é 5.
  • A coluna 1 tem os valores 9, 5 e 6. O menor valor é 5.

Então o ponto em [2, 1] (linha: 2, coluna: 1) é um ótimo lugar para uma casa na árvore.

Mensagens de exceção

À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")
Editar via GitHub O link abre em uma nova janela ou aba
Python Exercism

Tudo pronto para começar Pontos de sela?

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