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.
A volte è necessario sollevare un'eccezione. Quando lo fai, dovresti sempre includere un messaggio di errore significativo che indichi qual è l'origine dell'errore. Questo rende il codice più leggibile ed aiuta notevolmente in fase di debug. Nelle situazioni in cui sai che l'origine dell'errore sarà di un certo tipo, puoi scegliere di sollevare uno dei tipi di errore predefiniti, ma dovresti comunque includere un messaggio significativo.
Questo esercizio richiede di usare l'istruzione raise per «lanciare» una ValueError se la matrix non è regolare. I test passeranno solo se fai entrambe le cose: usi raise ed includi un messaggio insieme a exception.
Per sollevare una ValueError con un messaggio, scrivi il messaggio come argomento del tipo di eccezione:
# if the matrix is irregular
raise ValueError("irregular matrix")
Iscriviti a Exercism per imparare e padroneggiare Python con 17 concetti146 esercizi e il mentoring di persone reali, tutto gratis.