Individua i prodotti palindromi in un intervallo dato.
Un numero palindromo è un numero che rimane uguale quando si invertono le sue cifre.
Per esempio, 121 è un numero palindromo, mentre 112 non lo è.
Dato un intervallo di numeri, trova il palindromo più grande e quello più piccolo tra quelli che sono prodotti di due numeri all'interno di quell'intervallo.
La soluzione deve restituire il palindromo più grande e quello più piccolo, insieme ai fattori di ciascuno all'interno dell'intervallo. Se il palindromo più grande o quello più piccolo ha più di una coppia di fattori all'interno dell'intervallo, restituisci tutte le coppie.
Dato l'intervallo [1, 9] (estremi inclusi)...
E dato l'elenco di tutti i possibili prodotti all'interno di questo intervallo:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 15, 21, 24, 27, 20, 28, 32, 36, 25, 30, 35, 40, 45, 42, 48, 54, 49, 56, 63, 64, 72, 81]
I prodotti palindromi sono tutti numeri a una cifra (in questo caso):
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Il prodotto palindromo più piccolo è 1.
I suoi fattori sono (1, 1).
Il prodotto palindromo più grande è 9.
I suoi fattori sono (1, 9) e (3, 3).
Dato l'intervallo [10, 99] (estremi inclusi)...
Il prodotto palindromo più piccolo è 121.
I suoi fattori sono (11, 11).
Il prodotto palindromo più grande è 9009.
I suoi fattori sono (91, 99).
smallest e largest:Entrambe le funzioni devono accettare due argomenti per parola chiave:
max_factor: intmin_factor: int, predefinito a 0Il valore restituito da entrambe deve essere un tuple -- (value, factors) dove value è il palindromo stesso e factors è un iterable che contiene entrambi i fattori del palindromo in ordine arbitrario.
A volte è necessario sollevare un'eccezione. Quando lo fai, dovresti sempre includere un messaggio di errore significativo per indicare qual è l'origine dell'errore. Questo rende il codice più leggibile e aiuta notevolmente il 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 particolare esercizio richiede che tu usi la istruzione raise per «lanciare» un ValueError quando la funzione largest() o smallest() riceve una coppia di fattori che non sono nell'intervallo corretto. I test passeranno solo se fai entrambe le cose: usi raise per l'exception e includi un messaggio con essa.
Per sollevare un ValueError con un messaggio, scrivi il messaggio come argomento del tipo exception:
# if the max_factor is less than the min_factor
raise ValueError("min must be <= max")
Iscriviti a Exercism per imparare e padroneggiare Python con 17 concetti146 esercizi e il mentoring di persone reali, tutto gratis.