Вступление
РНК является менее известным двоюродным братом ДНК. Его основная цель - контролировать производство белков в клетках с помощью процесса, называемого трансляцией . В этой задаче ваша задача - реализовать часть этого процесса, где РНК делится на кодоны .
Эта проблема тематически связана, но концентрируется на другой части процесса перевода.
кодоны
Мы будем думать о РНК как о длинной строке над алфавитом пар оснований AUCG
. В переводе РНК делится на непересекающиеся куски из трех пар оснований, называемых кодонами. Процесс начинается на старт - кодона , AUG
и заканчивается на стоп - кодон , один из UAA
, UAG
или UGA
. Каждый кодон (кроме стоп-кодонов) соответствует аминокислоте, и получающаяся последовательность аминокислот образует белок.
вход
Ваш ввод является непустой строкой РНК.
Выход
Ваш вывод - это список кодонов, в которых РНК разделена, в любом приемлемом формате. В этой упрощенной модели процесс начинается с крайнего левого стартового кодона AUG
, который включен в выходные данные. Он заканчивается, когда встречается стоп-кодон или когда у нас заканчивается РНК. Если на входе нет стартового кодона, на выходе должен быть пустой список.
Примеры
Рассмотрим последовательность ввода
ACAUGGAUGGACUGUAACCCCAUGC
Разбор начинается с самого левого вхождения AUG
, в индексе 2. Он продолжается следующим образом:
AC AUG GAU GGA CUG UAA CCCCAUGC
* ^ ^ ^ +
Кодон, помеченный знаком, *
является стартовым кодоном, и те, которые отмечены знаком ^
, также являются частью выходных данных. Стоп-кодон отмечен значком +
. Правильный вывод
AUG,GAU,GGA,CUG
Для более короткого ввода
ACAUGGAUGGACUGU
процесс идет
AC AUG GAU GGA CUG U
* ^ ^ ^
На этот раз стоп-кодон не встречается, поэтому процесс останавливается, когда у нас заканчиваются пары оснований. Вывод такой же, как указано выше.
Правила и оценки
Вы можете написать полную программу функции. Побеждает меньшее количество байтов, и стандартные лазейки запрещены.
Контрольные примеры
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