A tua tarefa é traduzir sequências de ARN em proteínas.
As cadeias de ARN são constituídas por sequências de três nucleótidos chamadas codões. Cada codão traduz-se num aminoácido. Quando se unem, esses aminoácidos formam uma proteína.
No mundo real existem 64 codões, que por sua vez correspondem a 20 aminoácidos. No entanto, neste exercício só vais usar alguns dos 64 possíveis. Estão listados a seguir:
| Codão | Aminoácido |
|---|---|
| AUG | Methionine |
| UUU, UUC | Phenylalanine |
| UUA, UUG | Leucine |
| UCU, UCC, UCA, UCG | Serine |
| UAU, UAC | Tyrosine |
| UGU, UGC | Cysteine |
| UGG | Tryptophan |
| UAA, UAG, UGA | STOP |
Por exemplo, a string de ARN “AUGUUUUCU” tem três codões: “AUG”, “UUU” e “UCU”. Estes correspondem a Methionine, Phenylalanine e Serine.
Repara que, na tabela acima, há três codões “STOP”. Se encontrares algum destes codões, ignora o resto da sequência: a proteína está completa.
Por exemplo, “AUGUUUUCUUAAAUG” contém um codão STOP (“UAA”). Assim que chegamos a esse ponto, deixamos de processar. Por isso, só consideramos a parte anterior a ele (ou seja, “AUGUUUUCU”), e não os codões que vêm depois (ou seja, “AUG”).
Sabe mais sobre tradução de proteínas na Wikipédia.
Escreve a sequência de proteínas como uma string terminada em null, com um caráter de nova linha depois de cada proteína.
Um exemplo de saída seria "Methionine\nPhenylalanine\nSerine\n"
Se os dados de entrada forem inválidos, escreve uma string vazia.
| Registo | Utilização | Tipo | Descrição |
|---|---|---|---|
$a0 |
entrada | endereço | string de entrada terminada em null |
$a1 |
entrada/saída | endereço | string de saída terminada em null |
$t0-9 |
temporário | qualquer | usado para armazenamento temporário |
Inscreve-te no Exercism para aprenderes e dominares MIPS Assembly com 70 exercícios, e mentoria humana real, tudo grátis.
Explora 11 formas diferentes de resolver este exercício, incluindo abordagens imperativas, ideias funcionais como a correspondência de padrões, a recursão e as funções de ordem superior, e ainda algum código de baixo nível em C++ e Assembly.