Deine Aufgabe ist es, RNA-Sequenzen in Proteine zu übersetzen.
RNA-Stränge bestehen aus Sequenzen von drei Nukleotiden, den sogenannten Codons. Jedes Codon steht für eine Aminosäure. Aneinandergereiht bilden diese Aminosäuren ein Protein.
In der Realität gibt es 64 Codons, die wiederum 20 Aminosäuren entsprechen. Für diese Übung verwendest du jedoch nur einige der 64 Möglichkeiten. Sie sind unten aufgeführt:
| Codon | Aminosäure |
|---|---|
| AUG | Methionine |
| UUU, UUC | Phenylalanine |
| UUA, UUG | Leucine |
| UCU, UCC, UCA, UCG | Serine |
| UAU, UAC | Tyrosine |
| UGU, UGC | Cysteine |
| UGG | Tryptophan |
| UAA, UAG, UGA | STOP |
Zum Beispiel hat der RNA-String „AUGUUUUCU“ drei Codons: „AUG“, „UUU“ und „UCU“. Diese stehen für Methionine, Phenylalanine und Serine.
In der Tabelle oben siehst du, dass es drei „STOP“-Codons gibt. Wenn du auf eines dieser Codons stößt, ignoriere den Rest der Sequenz: Das Protein ist vollständig.
Zum Beispiel enthält „AUGUUUUCUUAAAUG“ ein STOP-Codon („UAA“). Sobald wir an diese Stelle gelangen, hören wir mit der Verarbeitung auf. Wir betrachten also nur den Teil davor (d. h. „AUGUUUUCU“) und keine weiteren Codons danach (d. h. „AUG“).
Mehr über Proteinbiosynthese erfährst du auf Wikipedia.
Die Bytes 1024 bis 1279 des linearen Speichers sind für den Eingabe-String reserviert.
Der Eingabe-String kann bei Bedarf an Ort und Stelle geändert werden.
Die Codons werden als String aneinandergehängt und ohne Padding übergeben.
Gib die Proteinsequenz als nullterminierten String aus, mit einem Zeilenumbruch nach jedem Protein.
Eine Beispielausgabe wäre "Methionine\nPhenylalanine\nSerine\n"
Wenn die Eingabe ungültig ist, gib einen leeren String aus.
Melde dich bei Exercism an, um WebAssembly mit 87 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.
Entdecke 11 verschiedene Lösungswege für diese Übung, darunter imperative Ansätze, funktionale Ideen wie Pattern Matching, Rekursion und Funktionen höherer Ordnung sowie etwas Programmierung auf niedriger Ebene in C++ und Assembler.