Вступ
РНК - менш відомий двоюрідний брат ДНК. Його головне призначення - контролювати вироблення білків у клітинах за допомогою процесу, який називається трансляцією . У цьому виклику ваше завдання полягає в тому, щоб реалізувати частину цього процесу, де РНК розбита на кодони .
Цей виклик є тематично пов'язаним, але зосереджений на іншій частині процесу перекладу.
Кодони
Ми будемо думати про РНК у вигляді довгого рядка над алфавітом базових пар, 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