Todos heredamos de nuestros padres biológicos un conjunto de instrucciones químicas conocidas como ADN que influyen en cómo se construyen nuestros cuerpos. ¡Toda la vida conocida depende del ADN!
Nota: No necesitas entender nada sobre los nucleótidos ni el ADN para completar este ejercicio.
El ADN es una larga cadena de otras sustancias químicas, y las más importantes son los cuatro nucleótidos: adenina, citosina, guanina y timina. ¡Una sola cadena de ADN puede contener miles de millones de estos cuatro nucleótidos, y el orden en que aparecen es importante! Al orden de estos nucleótidos en un fragmento de ADN lo llamamos «secuencia de ADN».
Representamos una secuencia de ADN como una colección ordenada de estos cuatro nucleótidos, y una forma común de hacerlo es con un string de caracteres como «ATTACG» para una secuencia de ADN de 6 nucleótidos. «A» para la adenina, «C» para la citosina, «G» para la guanina y «T» para la timina.
Dado un string que representa una secuencia de ADN, cuenta cuántos hay de cada nucleótido. Si el string contiene caracteres que no son A, C, G o T, entonces no es válido y debes indicar un error.
Por ejemplo:
"GATTACA" -> 'A': 3, 'C': 1, 'G': 1, 'T': 2
"INVALID" -> error
Hay ocasiones en las que necesitas manejar problemas inesperados que surgen durante la ejecución del código. En Dart, puedes usar excepciones para manejar estas situaciones.
Para lanzar una excepción en Dart, usa la palabra clave throw seguida de una instancia de la excepción específica que quieras lanzar.
Por ejemplo, throw Exception() lanza una instancia del tipo base Exception.
En este ejercicio, necesitas definir una excepción personalizada llamada InvalidNucleotideException.
Esta excepción debe lanzarse cuando se encuentre un nucleótido no válido.
El conjunto de pruebas solo verifica que se pase una instancia de InvalidNucleotideException, así que tienes la libertad de implementarla como mejor te parezca, siempre que se lance correctamente.
Para obtener más información sobre las excepciones en Dart, puedes consultar la documentación de excepciones. Las excepciones personalizadas se pueden crear implementando la interfaz Exception.
Regístrate en Exercism para aprender y dominar Dart con 78 ejercicios y mentoría humana real, todo gratis.