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
Deves definir um tipo personalizado 'DNA' com uma função 'Counts' que devolve dois valores:
Qual é um bom tipo para uma cadeia de DNA?
Quais são os melhores tipos de Go para representar os valores de saída?
Dá uma vista de olhos pelos casos de teste para teres uma pista sobre quais poderão ser os possíveis parâmetros de entrada.
Talvez te estejas a perguntar sobre o ficheiro cases_test.go.
Explicamos isso no exercício Leap.
Inscreve-te no Exercism para aprenderes e dominares Go com 34 conceitos165 exercícios, e mentoria humana real, tudo grátis.