Cada um de nós herda dos nossos pais biológicos um conjunto de instruções químicas conhecidas como DNA que influenciam a forma como os nossos corpos são construídos. Toda a vida conhecida depende do DNA!
Nota: não precisas de perceber nada sobre nucleótidos ou DNA para completar este exercício.
O DNA é uma longa cadeia de outros químicos e os mais importantes são os quatro nucleótidos: adenina, citosina, guanina e timina. Uma única cadeia de DNA pode conter milhares de milhões destes quatro nucleótidos e a ordem em que ocorrem é importante! Chamamos "sequência de DNA" à ordem destes nucleótidos num pedaço de DNA.
Representamos uma sequência de DNA como uma coleção ordenada destes quatro nucleótidos e uma forma comum de o fazer é com uma string de carateres, como "ATTACG" para uma sequência de DNA de 6 nucleótidos. 'A' de adenina, 'C' de citosina, 'G' de guanina e 'T' de timina.
Dada uma string que representa uma sequência de DNA, conta quantos de cada nucleótido estão presentes. Se a string contiver carateres que não sejam A, C, G ou T, então é inválida e deves assinalar um erro.
Por exemplo:
"GATTACA" -> 'A': 3, 'C': 1, 'G': 1, 'T': 2
"INVALID" -> error
Há alturas em que precisas de lidar com problemas inesperados que surgem durante a execução do código. Em Dart, podes usar exceções para lidar com estas situações.
Para lançar uma exceção em Dart, usa a palavra-chave throw seguida de uma instância da exceção específica que queres lançar.
Por exemplo, throw Exception() lança uma instância do tipo base Exception.
Neste exercício, precisas de definir uma exceção personalizada chamada InvalidNucleotideException.
Esta exceção deve ser lançada quando se encontra um nucleótido inválido.
Os testes só verificam que é lançada uma instância de InvalidNucleotideException, por isso és livre de a implementar como quiseres, desde que seja lançada corretamente.
Para mais informações sobre exceções em Dart, consulta a documentação sobre exceções. Podes criar exceções personalizadas implementando a interface Exception.
Inscreve-te no Exercism para aprenderes e dominares Dart com 78 exercícios, e mentoria humana real, tudo grátis.