Ognuno di noi eredita dai propri genitori biologici una serie di istruzioni chimiche note come DNA, che influenzano il modo in cui il nostro corpo è costruito. Tutta la vita conosciuta dipende dal DNA!
Nota: non hai bisogno di capire nulla di nucleotidi o DNA per completare questo esercizio.
Il DNA è una lunga catena di altre sostanze chimiche, e le più importanti sono i quattro nucleotidi: adenina, citosina, guanina e timina. Una singola catena di DNA può contenere miliardi di questi quattro nucleotidi, e l'ordine in cui compaiono è importante! Chiamiamo l'ordine di questi nucleotidi in un tratto di DNA una «sequenza di DNA».
Rappresentiamo una sequenza di DNA come una raccolta ordinata di questi quattro nucleotidi, e un modo comune per farlo è una stringa di caratteri come "ATTACG" per una sequenza di DNA di 6 nucleotidi. 'A' per l'adenina, 'C' per la citosina, 'G' per la guanina e 'T' per la timina.
Data una stringa che rappresenta una sequenza di DNA, conta quanti nucleotidi di ciascun tipo sono presenti. Se la stringa contiene caratteri che non sono A, C, G o T, allora non è valida e devi segnalare un errore.
Per esempio:
"GATTACA" -> 'A': 3, 'C': 1, 'G': 1, 'T': 2
"INVALID" -> error
Ci sono situazioni in cui devi gestire problemi imprevisti che si verificano durante l'esecuzione del codice. In Dart, puoi usare le eccezioni per gestire queste situazioni.
Per lanciare un'eccezione in Dart, usa la parola chiave throw seguita da un'istanza dell'eccezione specifica che vuoi lanciare.
Ad esempio, throw Exception() lancia un'istanza del tipo base Exception.
In questo esercizio, dovrai definire un'eccezione personalizzata chiamata InvalidNucleotideException.
Questa eccezione dovrebbe essere lanciata quando si incontra un nucleotide non valido.
La suite di test controlla solo che venga passata un'istanza di InvalidNucleotideException, quindi sei libero di implementarla come preferisci, purché venga lanciata correttamente.
Per maggiori informazioni sulle eccezioni in Dart, puoi consultare la documentazione sulle eccezioni. Le eccezioni personalizzate si possono creare implementando l'interfaccia Exception.
Iscriviti a Exercism per imparare e padroneggiare Dart con 78 esercizi e il mentoring di persone reali, tutto gratis.