Hai in programma di costruire una casa sull'albero nel bosco vicino a dove abiti, così da poter ammirare albe e tramonti.
Hai ottenuto da una società di rilevamento locale dei dati che mostrano l'altezza di ogni albero in ciascuna sezione rettangolare della mappa. Devi analizzare ogni griglia della mappa per trovare gli alberi adatti alla casa sull'albero.
Un buon albero deve soddisfare entrambe le condizioni:
Il tuo compito è trovare gli alberi potenziali su cui potresti costruire la tua casa sull'albero.
L'azienda di dati fornisce i dati sotto forma di griglie che mostrano l'altezza degli alberi. Le righe della griglia rappresentano la direzione est-ovest, mentre le colonne rappresentano la direzione nord-sud.
Un albero accettabile sarà il più grande della sua riga, pur essendo il più piccolo della sua colonna.
Una griglia potrebbe non avere affatto alberi validi. Oppure potrebbe averne uno, o addirittura diversi.
Ecco una griglia con esattamente un albero candidato.
↓
1 2 3 4
|-----------
1 | 9 8 7 8
→ 2 |[5] 3 2 4
3 | 6 6 7 1
Quindi il punto in [2, 1] (riga: 2, colonna: 1) è un ottimo posto per una casa sull'albero.
Per convenzione, il contenuto delle sequenze ordinate di valori in Rust è numerato («indicizzato») a partire da 0. Questo vale a prescindere da ciò che dice il resto della descrizione dell'esercizio in questo README, per esempio i riferimenti a indici che partono da 1: dovrai quindi sottrarre 1 per tradurre quei numeri di indice in indici di Rust.
Questo esercizio usa un vettore di vettori per memorizzare il contenuto delle matrici. Sebbene questo esercizio sia pensato per aiutare gli studenti a capire concetti di base sui vettori, come l'indicizzazione, e che i tipi di dati annidati sono legittimi, il vettore di vettori è una scelta non ottimale per l'algebra matriciale ad alte prestazioni e per qualsiasi elaborazione efficiente di grandi quantità di dati.
La spiegazione dettagliata di questa inefficienza va oltre lo scopo di questo esercizio e, più in generale, di questo percorso di apprendimento. Questo aspetto è noto come località della cache e, se vuoi saperne di più sui dettagli dell'architettura di un computer moderno, cliccando quel link troverai una buona introduzione.
Iscriviti a Exercism per imparare e padroneggiare Rust con 99 esercizi e il mentoring di persone reali, tutto gratis.