Wprowadzenie
RNA jest mniej znanym kuzynem DNA. Jego głównym celem jest kontrola produkcji białek w komórkach poprzez proces zwany translacją . W tym wyzwaniu Twoim zadaniem jest wdrożenie części tego procesu, w której RNA jest dzielony na kodony .
To wyzwanie jest powiązane tematycznie, ale koncentruje się na innej części procesu tłumaczenia.
Codons
Będziemy myśleć RNA jako długi ciąg nad alfabetem par bazowych AUCG
. W tłumaczeniu RNA dzieli się na niepochodzące na siebie fragmenty trzech par zasad, zwane kodonami. Proces rozpoczyna się w kodonie startowym , AUG
i kończy się kodonem stop , jednego UAA
, UAG
albo UGA
. Każdy kodon (oprócz kodonów stop) odpowiada aminokwasowi, a powstały ciąg aminokwasów tworzy białko.
Wejście
Twoje dane wejściowe to niepusty ciąg RNA.
Wynik
Twój wynik to lista kodonów, w których RNA jest podzielony, w dowolnym rozsądnym formacie. W tym uproszczonym modelu proces rozpoczyna się od lewego kodonu start AUG
, który jest zawarty w wyjściu. Kończy się, gdy napotkamy kodon stop lub skończy nam się RNA. Jeśli dane wejściowe nie zawierają kodonu początkowego, dane wyjściowe powinny być pustą listą.
Przykłady
Rozważ sekwencję wejściową
ACAUGGAUGGACUGUAACCCCAUGC
Analiza rozpoczyna się przy wystąpieniu skrajnie po lewej stronie AUG
indeksu 2. Kontynuuje się w następujący sposób:
AC AUG GAU GGA CUG UAA CCCCAUGC
* ^ ^ ^ +
Kodon oznaczony *
jest kodonem start, a te oznaczone jako ^
są również częścią wyniku. Kodon stop jest oznaczony +
. Prawidłowe wyjście to
AUG,GAU,GGA,CUG
Dla krótszych danych wejściowych
ACAUGGAUGGACUGU
proces idzie
AC AUG GAU GGA CUG U
* ^ ^ ^
Tym razem kodon stop nie został napotkany, więc proces zatrzymuje się, gdy zabraknie par zasad. Dane wyjściowe są takie same jak powyżej.
Zasady i punktacja
Możesz napisać pełny program funkcji. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Przypadki testowe
GGUACGGAUU ->
GGCGAAAUCGAUGCC -> AUG
ACAUGGAUGGACUGU -> AUG,GAU,GGA,CUG
AUGACGUGAUGCUUGA -> AUG,ACG
UGGUUAGAAUAAUGAGCUAG -> AUG,AGC
ACAUGGAUGGACUGUAACCCCAUGC -> AUG,GAU,GGA,CUG
CUAAGAUGGCAUGAGUAAUGAAUGGAG -> AUG,GCA
AAUGGUUUAAUAAAUGUGAUAUGAUGAUA -> AUG,GUU
UGUCACCAUGUAAGGCAUGCCCAAAAUCAG -> AUG
UAUAGAUGGUGAUGAUGCCAUGAGAUGCAUGUUAAU -> AUG,GUG,AUG,AUG,CCA
AUGCUUAUGAAUGGCAUGUACUAAUAGACUCACUUAAGCGGUGAUGAA -> AUG,CUU,AUG,AAU,GGC,AUG,UAC
UGAUAGAUGUAUGGAUGGGAUGCUCAUAGCUAUAAAUGUUAAAGUUAGUCUAAUGAUGAGUAGCCGAUGGCCUAUGAUGCUGAC -> AUG,UAU,GGA,UGG,GAU,GCU,CAU,AGC,UAU,AAA,UGU