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.
Por convenção, as sequências ordenadas de valores em Rust têm seu conteúdo numerado ("indexado") a partir de 0. Isso vale independentemente do que o restante da descrição do exercício neste README diz, como referências a índices que começam em 1, então você vai precisar subtrair 1 para converter esses números de índice nos números de índice do Rust.
Este exercício usa um vector of vectors para armazenar o conteúdo das matrizes. Embora este exercício tenha sido criado para ajudar os estudantes a entender conceitos básicos sobre vectors, como a indexação, e que tipos de dados aninhados são válidos, o vector of vectors não é a melhor escolha para álgebra matricial de alto desempenho nem para qualquer processamento eficiente de grandes volumes de dados.
A explicação detalhada dessa ineficiência está além do escopo deste exercício e desta trilha de aprendizagem em geral. Esse aspecto é conhecido como localidade de cache e você pode encontrar uma boa introdução a ele clicando nesse link, caso queira saber mais sobre os detalhes de uma arquitetura de computadores moderna.
Crie sua conta no Exercism para aprender e dominar Rust com 99 exercícios e mentoria humana de verdade, tudo de graça.