Pontos de sela

Pontos de sela

Médio

Introdução

Planeias construir uma casa na árvore num bosque perto da tua casa, para poderes ver o nascer e o pôr do sol.

Obtiveste dados de uma empresa de topografia local que mostram a altura de cada árvore em cada secção retangular do mapa. Precisas de analisar cada grelha do mapa para encontrares boas árvores para a tua casa na árvore.

Uma boa árvore é, ao mesmo tempo:

  • mais alta do que qualquer árvore a leste e a oeste, para teres a melhor vista possível do nascer e do pôr do sol.
  • mais baixa do que qualquer árvore a norte e a sul, para minimizares a quantidade de vezes que tens de trepar às árvores.

Instruções

A tua tarefa é encontrar as árvores potenciais onde podes construir a tua casa na árvore.

A empresa de dados fornece os dados em grelhas que mostram as alturas das árvores. As linhas da grelha representam a direção este-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 grelha pode não ter nenhuma árvore boa. Ou pode ter uma, ou até várias.

Eis uma grelha 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.

Portanto, o ponto em [2, 1] (linha: 2, coluna: 1) é um excelente sítio para uma casa na árvore.

Instruções específicas do percurso

Formato dos dados de entrada

Os dados de entrada serão apresentados no formato de uma string. Para que este exercício continue acessível a quem está a começar, não precisas de contar com números com vários algarismos.

Os bytes 64 a 191 da memória linear estão reservados para a string de entrada.

Formato dos dados de saída

Espera-se que os dados de saída sejam pares de linha e coluna na forma de u8, concatenados diretamente.

Por exemplo, se houver três pontos de sela

linha: 2, coluna: 1 linha: 2, coluna: 2 linha: 2, coluna: 3

então os dados de saída esperados seriam os valores u8 2, 1, 2, 2, 2, 3

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

Estás pronto para começar Pontos de sela?

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