Seu trabalho é traduzir sequências de RNA em proteínas.
As fitas de RNA são formadas por sequências de três nucleotídeos chamadas códons. Cada códon é traduzido em um aminoácido. Quando se unem, esses aminoácidos formam uma proteína.
No mundo real, existem 64 códons, que por sua vez correspondem a 20 aminoácidos. No entanto, neste exercício você vai usar apenas alguns dos 64 possíveis. Eles estão listados abaixo:
| Códon | 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 RNA “AUGUUUUCU” tem três códons: “AUG”, “UUU” e “UCU”. Eles correspondem a Methionine, Phenylalanine e Serine.
Você vai notar na tabela acima que existem três códons “STOP”. Se você encontrar algum desses códons, ignore o resto da sequência: a proteína está completa.
Por exemplo, “AUGUUUUCUUAAAUG” contém um códon STOP (“UAA”). Quando chegamos nesse ponto, paramos o processamento. Por isso, consideramos apenas a parte anterior a ele (ou seja, “AUGUUUUCU”), e não os códons que vêm depois (ou seja, “AUG”).
Saiba mais sobre tradução de proteínas na Wikipédia.
Os bytes 1024-1279 da memória linear são reservados para a string de entrada.
A string de entrada pode ser modificada no próprio local, se você quiser.
Os códons são entregues concatenados, sem preenchimento, como uma string.
Produza a sequência de proteínas como uma string terminada em null, com um caractere de nova linha depois de cada proteína.
Um exemplo de saída seria "Methionine\nPhenylalanine\nSerine\n"
Se a entrada for inválida, produza uma string vazia.
Crie sua conta no Exercism para aprender e dominar WebAssembly com 87 exercícios e mentoria humana de verdade, tudo de graça.
Explore 11 maneiras diferentes de resolver este exercício, incluindo abordagens imperativas, ideias funcionais como casamento de padrões, recursão e funções de ordem superior, além de um pouco de código de baixo nível em C++ e Assembly.