Introdução
O RNA é o primo menos famoso do DNA. Seu principal objetivo é controlar a produção de proteínas nas células através de um processo chamado tradução . Nesse desafio, sua tarefa é implementar uma parte desse processo em que o RNA é dividido em códons .
Esse desafio está relacionado tematicamente, mas se concentra em outra parte do processo de tradução.
Codons
Pensaremos no RNA como uma longa corda sobre o alfabeto dos pares de bases AUCG
. Na tradução, o RNA é dividido em pedaços não sobrepostos de três pares de bases, chamados códons. O processo começa com um codão de iniciação , AUG
e as extremidades a um codão de paragem , um dos UAA
, UAG
ou UGA
. Cada códon (exceto os códons de parada) corresponde a um aminoácido, e a cadeia resultante de aminoácidos forma a proteína.
Entrada
Sua entrada é uma sequência não vazia de RNA.
Resultado
Sua saída é a lista de códons em que o RNA é dividido, em qualquer formato razoável. Nesse modelo simplificado, o processo começa no códon de início mais à esquerdaAUG
, incluído na saída. Ele termina quando um códon de parada é encontrado ou quando o RNA fica vazio. Se a entrada não contiver um códon inicial, a saída será uma lista vazia.
Exemplos
Considere a sequência de entrada
ACAUGGAUGGACUGUAACCCCAUGC
A análise começa na ocorrência mais à esquerda de AUG
, no índice 2. Continua da seguinte forma:
AC AUG GAU GGA CUG UAA CCCCAUGC
* ^ ^ ^ +
O códon marcado com *
é o códon inicial e os marcados com ^
também fazem parte da saída. O codão de parada é marcado com +
. A saída correta é
AUG,GAU,GGA,CUG
Para a entrada mais curta
ACAUGGAUGGACUGU
o processo continua
AC AUG GAU GGA CUG U
* ^ ^ ^
Desta vez, um códon de parada não é encontrado, portanto, o processo para quando ficamos sem pares de bases. A saída é a mesma que acima.
Regras e pontuação
Você pode escrever um programa completo de uma função. A menor contagem de bytes vence e as brechas padrão não são permitidas.
Casos de teste
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