RNA , podobnie jak DNA, jest cząsteczką występującą w komórkach kodujących informację genetyczną. Składa się z nukleotydów , które są reprezentowane przez zasady adeniny (A), cytozyny (C), guaniny (G) i uracylu (U). * Kodon to sekwencja trzech nukleotydów.
Białka to duże cząsteczki, które spełniają szeroki wachlarz funkcji, takich jak keratyna występująca we włosach i paznokciach oraz hemoglobina przenosząca tlen w komórkach krwi. Składają się z aminokwasów , które są kodowane jako kodony w cząsteczkach RNA. Czasami różne kodony mogą kodować ten sam aminokwas. Każdy aminokwas jest zwykle reprezentowany przez jedną literę, na przykład H oznacza histydynę.
Biorąc pod uwagę sekwencję ACGU
, czy możesz przetłumaczyć go na odpowiedni ciąg białka?
* DNA składa się z ACGT, gdzie T oznacza tyminę. Podczas transkrypcji DNA na RNA tyminę zastępuje się uracylem.
Wejście
Dane wejściowe będą pojedynczym ciągiem znaków składającym się wyłącznie z ACGU
wielkich liter. Możesz napisać funkcję lub pełny program dla tego wyzwania.
Wynik
Możesz wybrać wyjście poprzez wydrukowanie lub zwrócenie ciągu (ten ostatni wybór jest dostępny tylko w przypadku funkcji).
Tłumaczenie powinno rozpoczynać się od kodonu startu ( AUG
, reprezentowane M
) i na końcu w kodon stop (jeden UAA
, UAG
lub UGA
, reprezentowane *
). Istnieją cztery przypadki, w których dane wejściowe mogą być nieprawidłowe:
- Wejście nie zaczyna się od kodonu start
- Wejście nie kończy się kodonem stop
- Długość wejścia nie jest wielokrotnością 3
- Dane wejściowe zawierają kodon stop w innym miejscu niż na końcu
We wszystkich tych przypadkach Error
powinny być generowane. Zauważ, że w przeciwieństwie do kodonów stop, kodony start mogą pojawić się po rozpoczęciu łańcucha.
W przeciwnym razie należy przekonwertować każdy kodon na odpowiedni aminokwas za pomocą następującej tabeli kodonów RNA :
* 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
... i wyślij przetłumaczony ciąg.
Przykłady
Nieprawidłowe przypadki:
<empty string> -> Error
AUG -> Error
UAA -> Error
AUGCUAG -> Error
AAAAAAA -> Error
GGGCACUAG -> Error
AUGAACGGA -> Error
AUGUAGUGA -> Error
AUGUUUGUUCCGUCGAAAUACCUAUGAACACGCUAA -> Error
Ważne przypadki:
AUGUGA -> M*
AUGAGGUGUAGCUGA -> MRCS*
AUGGGUGAGAAUGAAACGAUUUGCAGUUAA -> MGENETICS*
AUGCCAGUCGCACGAUUAGUUCACACGCUCUUGUAA -> MPVARLVHTLL*
AUGCUGCGGUCCUCGCAUCUAGCGUUGUGGUUAGGGUGUGUAACUUCGAGAACAGUGAGUCCCGUACCAGGUAGCAUAAUGCGAGCAAUGUCGUACGAUUCAUAG -> MLRSSHLALWLGCVTSRTVSPVPGSIMRAMSYDS*
AUGAAAAACAAGAAUACAACCACGACUAGAAGCAGGAGUAUAAUCAUGAUUCAACACCAGCAUCCACCCCCGCCUCGACGCCGGCGUCUACUCCUGCUUGAAGACGAGGAUGCAGCCGCGGCUGGAGGCGGGGGUGUAGUCGUGGUUUACUAUUCAUCCUCGUCUUGCUGGUGUUUAUUCUUGUUUUAA -> MKNKNTTTTRSRSIIMIQHQHPPPPRRRRLLLLEDEDAAAAGGGGVVVVYYSSSSCWCLFLF*
Edycja: Dodano więcej przypadków testowych
Punktacja
To jest kod golfowy, więc kod w najmniejszej liczbie bajtów wygrywa.
Uwaga: nie jestem ekspertem w dziedzinie biologii molekularnej, więc możesz mnie poprawić, jeśli coś źle przedstawiłem :)
M
i kończy dekodowana sekwencja *
.