Einführung
RNA ist der weniger berühmte Cousin der DNA. Sein Hauptzweck besteht darin, die Produktion von Proteinen in Zellen durch einen Prozess zu steuern, der als Translation bezeichnet wird . In dieser Herausforderung besteht Ihre Aufgabe darin, einen Teil dieses Prozesses zu implementieren, bei dem die RNA in Codons aufgeteilt wird .
Diese Herausforderung ist thematisch verwandt, konzentriert sich jedoch auf einen anderen Teil des Übersetzungsprozesses.
Codons
Wir werden uns RNA als eine lange Kette über dem Alphabet der Basenpaare vorstellen AUCG
. Bei der Translation wird RNA in nicht überlappende Stücke von drei Basenpaaren, sogenannte Codons, aufgeteilt. Der Prozess beginnt bei einem Start - Codon , AUG
und endet an einem Stopp - Codon , einen UAA
, UAG
oder UGA
. Jedes Codon (mit Ausnahme der Stoppcodons) entspricht einer Aminosäure, und die resultierende Aminosäuresequenz bildet das Protein.
Eingang
Ihre Eingabe ist ein nicht leerer RNA-String.
Ausgabe
Ihre Ausgabe ist die Liste der Codons, in die die RNA in einem angemessenen Format aufgeteilt ist. In diesem vereinfachten Modell beginnt der Prozess mit dem Startcodon ganz linksAUG
, das in der Ausgabe enthalten ist. Es endet, wenn ein Stopcodon auftritt oder wenn die RNA ausgeht. Wenn die Eingabe kein Startcodon enthält, muss die Ausgabe eine leere Liste sein.
Beispiele
Beachten Sie die Eingabereihenfolge
ACAUGGAUGGACUGUAACCCCAUGC
Das Parsen beginnt ganz links AUG
bei Index 2. Es wird wie folgt fortgesetzt:
AC AUG GAU GGA CUG UAA CCCCAUGC
* ^ ^ ^ +
Das mit gekennzeichnete Codon *
ist das Startcodon, und die mit gekennzeichneten Codons ^
sind ebenfalls Teil der Ausgabe. Das Stoppcodon ist mit gekennzeichnet +
. Die korrekte Ausgabe ist
AUG,GAU,GGA,CUG
Für die kürzere Eingabe
ACAUGGAUGGACUGU
Der Prozess geht
AC AUG GAU GGA CUG U
* ^ ^ ^
Dieses Mal ist kein Stoppcodon aufgetreten, sodass der Prozess stoppt, wenn die Basenpaare ausgehen. Die Ausgabe ist die gleiche wie oben.
Regeln und Wertung
Sie können ein vollständiges Programm einer Funktion schreiben. Die niedrigste Byteanzahl gewinnt, und Standardlücken sind nicht zulässig.
Testfälle
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