RNA ist wie DNA ein Molekül, das in Zellen gefunden wird, die genetische Informationen kodieren. Es besteht aus Nukleotiden , die durch die Basen Adenin (A), Cytosin (C), Guanin (G) und Uracil (U) dargestellt werden. * Ein Codon ist eine Sequenz von drei Nukleotiden.
Proteine sind große Moleküle, die eine Vielzahl von Funktionen erfüllen, wie Keratin, das in Haaren und Nägeln vorkommt, und Hämoglobin, das Sauerstoff in Blutzellen transportiert. Sie bestehen aus Aminosäuren , die in RNA-Molekülen als Codons kodiert sind. Manchmal können verschiedene Codons für dieselbe Aminosäure codieren. Jede Aminosäure wird üblicherweise durch einen einzelnen Buchstaben dargestellt, zum Beispiel steht H für Histidin.
Können Sie es bei einer gegebenen Sequenz von ACGU
in den entsprechenden Proteinstring übersetzen?
* DNA besteht aus ACGT, wobei das T Thymin ist. Während der Transkription von DNA zu RNA wird Thymin durch Uracil ersetzt.
Eingang
Die Eingabe ist eine einzelne Zeichenfolge, die nur aus den Zeichen besteht ACGU
in Großbuchstaben besteht. Sie können entweder eine Funktion oder ein vollständiges Programm für diese Herausforderung schreiben.
Ausgabe
Sie können auswählen, ob eine Zeichenfolge gedruckt oder zurückgegeben werden soll (die letztere Option ist nur im Fall einer Funktion verfügbar).
Die Übersetzung sollte bei einem Start - Codon (beginnen AUG
, dargestellt als M
bei einem Stop - Codon (einer) und Ende UAA
, UAG
oder UGA
, dargestellt als *
). In vier Fällen ist die Eingabe möglicherweise ungültig:
- Die Eingabe beginnt nicht mit einem Startcodon
- Die Eingabe endet nicht mit einem Stoppcodon
- Die Länge der Eingabe ist kein Vielfaches von 3
- Die Eingabe enthält ein Stoppcodon, das nicht am Ende steht
In all diesen Fällen Error
sollte ausgegeben werden. Beachten Sie, dass im Gegensatz zu Stoppcodons Startcodons möglicherweise nach dem Anfang der Zeichenfolge angezeigt werden.
Andernfalls sollten Sie jedes Codon über die folgende RNA-Codontabelle in seine jeweilige Aminosäure umwandeln :
* 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
... und den übersetzten String ausgeben.
Beispiele
Ungültige Fälle:
<empty string> -> Error
AUG -> Error
UAA -> Error
AUGCUAG -> Error
AAAAAAA -> Error
GGGCACUAG -> Error
AUGAACGGA -> Error
AUGUAGUGA -> Error
AUGUUUGUUCCGUCGAAAUACCUAUGAACACGCUAA -> Error
Gültige Fälle:
AUGUGA -> M*
AUGAGGUGUAGCUGA -> MRCS*
AUGGGUGAGAAUGAAACGAUUUGCAGUUAA -> MGENETICS*
AUGCCAGUCGCACGAUUAGUUCACACGCUCUUGUAA -> MPVARLVHTLL*
AUGCUGCGGUCCUCGCAUCUAGCGUUGUGGUUAGGGUGUGUAACUUCGAGAACAGUGAGUCCCGUACCAGGUAGCAUAAUGCGAGCAAUGUCGUACGAUUCAUAG -> MLRSSHLALWLGCVTSRTVSPVPGSIMRAMSYDS*
AUGAAAAACAAGAAUACAACCACGACUAGAAGCAGGAGUAUAAUCAUGAUUCAACACCAGCAUCCACCCCCGCCUCGACGCCGGCGUCUACUCCUGCUUGAAGACGAGGAUGCAGCCGCGGCUGGAGGCGGGGGUGUAGUCGUGGUUUACUAUUCAUCCUCGUCUUGCUGGUGUUUAUUCUUGUUUUAA -> MKNKNTTTTRSRSIIMIQHQHPPPPRRRRLLLLEDEDAAAAGGGGVVVVYYSSSSCWCLFLF*
Bearbeiten: Weitere Testfälle hinzugefügt
Wertung
Das ist Codegolf, also gewinnt der Code mit den wenigsten Bytes.
Hinweis: Ich bin kein Experte für Molekularbiologie. Wenn ich etwas falsch angegeben habe, können Sie mich jederzeit korrigieren :)
M
und endet *
.