L'ARN , comme l'ADN, est une molécule trouvée dans les cellules codant pour l'information génétique. Il se compose de nucléotides , qui sont représentés par les bases adénine (A), cytosine (C), guanine (G) et uracile (U). * Un codon est une séquence de trois nucléotides.
Les protéines sont de grosses molécules qui remplissent une vaste gamme de fonctions, comme la kératine qui se trouve dans les cheveux et les ongles et l'hémoglobine qui transporte l'oxygène dans les cellules sanguines. Ils sont constitués d' acides aminés , qui sont codés en tant que codons dans les molécules d'ARN. Parfois, différents codons peuvent coder pour le même acide aminé. Chaque acide aminé est généralement représenté par une seule lettre, par exemple H représente l'histidine.
Étant donné une séquence de ACGU
, pouvez-vous la traduire dans la chaîne de protéines correspondante?
* L'ADN est constitué d'ACGT, où le T est la thymine. Lors de la transcription de l'ADN en ARN, la thymine est remplacée par l'uracile.
Contribution
L'entrée sera une chaîne unique composée uniquement des caractères ACGU
en majuscules. Vous pouvez écrire une fonction ou un programme complet pour ce défi.
Production
Vous pouvez choisir de sortir via l'impression ou le retour d'une chaîne (ce dernier choix n'est disponible que dans le cas d'une fonction).
La traduction devrait commencer à un codon de départ ( AUG
représenté comme M
) et se terminent à un codon stop (un UAA
, UAG
ou UGA
, comme représenté *
). Il y a quatre cas où l'entrée peut être invalide:
- L'entrée ne commence pas par un codon de démarrage
- L'entrée ne se termine pas par un codon d'arrêt
- La longueur de l'entrée n'est pas un multiple de 3
- L'entrée contient un codon d'arrêt ailleurs qu'à la fin
Dans tous ces cas, Error
devrait être sorti. Notez que, contrairement aux codons d'arrêt, les codons de démarrage peuvent apparaître après le début de la chaîne.
Sinon, vous devez convertir chaque codon en son acide aminé respectif via le tableau de codon d'ARN suivant :
* UAA UAG UGA
A GCU GCC GCA GCG
C UGU UGC
D GAU GAC
E GAA GAG
F UUU UUC
G GGU GGC GGA GGG
H CAU CAC
I AUU AUC AUA
K AAA AAG
L UUA UUG CUU CUC CUA CUG
M AUG
N AAU AAC
P CCU CCC CCA CCG
Q CAA CAG
R CGU CGC CGA CGG AGA AGG
S UCU UCC UCA UCG AGU AGC
T ACU ACC ACA ACG
V GUU GUC GUA GUG
W UGG
Y UAU UAC
... et sortir la chaîne traduite.
Exemples
Cas non valides:
<empty string> -> Error
AUG -> Error
UAA -> Error
AUGCUAG -> Error
AAAAAAA -> Error
GGGCACUAG -> Error
AUGAACGGA -> Error
AUGUAGUGA -> Error
AUGUUUGUUCCGUCGAAAUACCUAUGAACACGCUAA -> Error
Cas valides:
AUGUGA -> M*
AUGAGGUGUAGCUGA -> MRCS*
AUGGGUGAGAAUGAAACGAUUUGCAGUUAA -> MGENETICS*
AUGCCAGUCGCACGAUUAGUUCACACGCUCUUGUAA -> MPVARLVHTLL*
AUGCUGCGGUCCUCGCAUCUAGCGUUGUGGUUAGGGUGUGUAACUUCGAGAACAGUGAGUCCCGUACCAGGUAGCAUAAUGCGAGCAAUGUCGUACGAUUCAUAG -> MLRSSHLALWLGCVTSRTVSPVPGSIMRAMSYDS*
AUGAAAAACAAGAAUACAACCACGACUAGAAGCAGGAGUAUAAUCAUGAUUCAACACCAGCAUCCACCCCCGCCUCGACGCCGGCGUCUACUCCUGCUUGAAGACGAGGAUGCAGCCGCGGCUGGAGGCGGGGGUGUAGUCGUGGUUUACUAUUCAUCCUCGUCUUGCUGGUGUUUAUUCUUGUUUUAA -> MKNKNTTTTRSRSIIMIQHQHPPPPRRRRLLLLEDEDAAAAGGGGVVVVYYSSSSCWCLFLF*
Modifier: Ajout de plus de cas de test
Notation
C'est le code golf, donc le code dans le moins d'octets gagne.
Remarque: je ne suis pas un expert en biologie moléculaire, alors n'hésitez pas à me corriger si j'ai quelque chose d'anormal :)
M
et se termine par *
.