introduzione
L'RNA è il cugino meno famoso del DNA. Il suo scopo principale è controllare la produzione di proteine nelle cellule attraverso un processo chiamato traduzione . In questa sfida, il tuo compito è implementare una parte di questo processo in cui l'RNA è suddiviso in codoni .
Questa sfida è tematicamente correlata, ma si concentra su un'altra parte del processo di traduzione.
codoni
Penseremo di RNA come una lunga stringa su l'alfabeto di coppie di basi, AUCG. Nella traduzione, l'RNA è suddiviso in blocchi non sovrapposti di tre coppie di basi, chiamati codoni. Il processo inizia in un codone di inizio , AUGe termina in un codone di stop , uno UAA, UAGo UGA. Ogni codone (eccetto i codoni di stop) corrisponde a un amminoacido e la risultante serie di amminoacidi costituisce la proteina.
Ingresso
Il tuo input è una stringa non vuota di RNA.
Produzione
L'output è l'elenco di codoni in cui l'RNA è suddiviso, in qualsiasi formato ragionevole. In questo modello semplificato, il processo inizia dal codone di avvio più a sinistraAUG , incluso nell'output. Termina quando viene rilevato un codone di arresto o quando si esaurisce l'RNA. Se l'input non contiene alcun codone di avvio, l'output deve essere un elenco vuoto.
Esempi
Considera la sequenza di input
ACAUGGAUGGACUGUAACCCCAUGC
L'analisi inizia all'occorrenza più a sinistra di AUG, all'indice 2. Continua come segue:
AC AUG GAU GGA CUG UAA CCCCAUGC
* ^ ^ ^ +
Il codone contrassegnato con *è il codone iniziale e anche quelli contrassegnati con ^fanno parte dell'output. Il codone di arresto è contrassegnato da +. L'output corretto è
AUG,GAU,GGA,CUG
Per un input più breve
ACAUGGAUGGACUGU
il processo procede
AC AUG GAU GGA CUG U
* ^ ^ ^
Questa volta, non viene rilevato un codone di arresto, quindi il processo si interrompe quando si esauriscono le coppie di basi. L'output è lo stesso di sopra.
Regole e punteggio
È possibile scrivere un programma completo di una funzione. Vince il conteggio di byte più basso e non sono consentite scappatoie standard.
Casi test
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