Ton travail consiste à traduire des séquences d'ARN en protéines.
Les brins d'ARN sont constitués de séquences de trois nucléotides appelées codons. Chaque codon se traduit par un acide aminé. Lorsqu'ils sont assemblés, ces acides aminés forment une protéine.
Dans la réalité, il existe 64 codons, qui correspondent à 20 acides aminés. Cependant, dans cet exercice, tu n'utiliseras que quelques-uns de ces 64 codons possibles. Ils sont listés ci-dessous :
| Codon | Acide aminé |
|---|---|
| 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 |
Par exemple, la string d'ARN « AUGUUUUCU » contient trois codons : « AUG », « UUU » et « UCU ». Ils correspondent à Methionine, Phenylalanine et Serine.
Tu remarqueras dans le tableau ci-dessus qu'il existe trois codons « STOP ». Si tu rencontres l'un de ces codons, ignore le reste de la séquence : la protéine est complète.
Par exemple, « AUGUUUUCUUAAAUG » contient un codon STOP (« UAA »). Une fois que l'on arrive à ce point, on arrête le traitement. On ne considère donc que la partie qui précède (c'est-à-dire « AUGUUUUCU »), et non les codons qui suivent (c'est-à-dire « AUG »).
Pour en savoir plus sur la traduction des protéines sur Wikipédia.
Affiche la séquence de protéines sous la forme d'une string terminée par un caractère nul, avec un caractère de nouvelle ligne après chaque protéine.
Un exemple de sortie serait "Methionine\nPhenylalanine\nSerine\n"
Si l'entrée est invalide, affiche une string vide.
| Registre | Utilisation | Type | Description |
|---|---|---|---|
$a0 |
entrée | adresse | string d'entrée terminée par un caractère nul |
$a1 |
entrée/sortie | adresse | string de sortie terminée par un caractère nul |
$t0-9 |
temporaire | quelconque | utilisé pour le stockage temporaire |
Inscris-toi sur Exercism pour apprendre et maîtriser MIPS Assembly avec 70 exercices, et un vrai mentorat humain, le tout gratuitement.
Explore 11 façons différentes de résoudre cet exercice, notamment des approches impératives, des idées fonctionnelles comme le filtrage par motif, la récursivité et les fonctions d'ordre supérieur, ainsi que du code de bas niveau en C++ et en assembleur.