Lavori per un'agenzia governativa che ha intercettato una serie di segnali di comunicazione criptati provenienti da un gruppo di rapinatori di banche. I segnali contengono una lunga sequenza di cifre. Il tuo team deve usare diverse tecniche di elaborazione digitale dei segnali per analizzarli e individuare eventuali schemi che possano indicare la preparazione di un colpo.
Il tuo compito è cercare schemi nella lunga sequenza di cifre del segnale cifrato.
La tecnica che userai qui si chiama prodotto massimo tra le serie.
Per prima cosa, definiamo alcuni termini.
Vediamo un esempio con l'input "63915".
3, ci saranno tre serie possibili:
"639""391""915""639" è 162 (6 × 3 × 9 = 162)"391" è 27 (3 × 9 × 1 = 27)"915" è 45 (9 × 1 × 5 = 45)"63915" proviene dalla serie "639".
Quindi la risposta è 162.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 molto nel debug. Nei casi 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 in particolare richiede di usare l'istruzione raise per «lanciare» un ValueError quando la funzione largest_product() riceve un input non valido. I test passeranno solo se fai il raise dell'exception e includi un messaggio con essa. Sentiti libero di riutilizzare il codice dell'esercizio series!
Per sollevare un ValueError con un messaggio, scrivi il messaggio come argomento del tipo exception:
# span of numbers is longer than number series
raise ValueError("span must not exceed string length")
# span of number is negative
raise ValueError("span must not be negative")
# series includes non-number input
raise ValueError("digits input must only contain digits")
Iscriviti a Exercism per imparare e padroneggiare Python con 17 concetti146 esercizi e il mentoring di persone reali, tutto gratis.