Η δουλειά σου είναι να μεταφράσεις αλληλουχίες RNA σε πρωτεΐνες.
Τα μόρια RNA αποτελούνται από αλληλουχίες τριών νουκλεοτιδίων που ονομάζονται κωδικόνια. Κάθε κωδικόνιο μεταφράζεται σε ένα αμινοξύ. Όταν ενωθούν μεταξύ τους, αυτά τα αμινοξέα σχηματίζουν μια πρωτεΐνη.
Στον πραγματικό κόσμο υπάρχουν 64 κωδικόνια, τα οποία με τη σειρά τους αντιστοιχούν σε 20 αμινοξέα. Ωστόσο, σε αυτή την άσκηση θα χρησιμοποιήσεις μόνο λίγα από τα 64 πιθανά. Αναφέρονται παρακάτω:
| Κωδικόνιο | Αμινοξύ |
|---|---|
| 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 |
Για παράδειγμα, η αλληλουχία RNA "AUGUUUUCU" έχει τρία κωδικόνια: "AUG", "UUU" και "UCU". Αυτά αντιστοιχούν σε Methionine, Phenylalanine και Serine.
Θα παρατηρήσεις από τον παραπάνω πίνακα ότι υπάρχουν τρία κωδικόνια "STOP". Αν συναντήσεις κάποιο από αυτά τα κωδικόνια, αγνόησε την υπόλοιπη αλληλουχία: η πρωτεΐνη είναι πλήρης.
Για παράδειγμα, η αλληλουχία "AUGUUUUCUUAAAUG" περιέχει ένα κωδικόνιο STOP ("UAA"). Μόλις φτάσουμε σε εκείνο το σημείο, σταματάμε την επεξεργασία. Επομένως λαμβάνουμε υπόψη μόνο το τμήμα πριν από αυτό (δηλαδή "AUGUUUUCU") και όχι τα επόμενα κωδικόνια μετά από αυτό (δηλαδή "AUG").
Μάθε περισσότερα για τη μετάφραση πρωτεϊνών στη Wikipedia.
Τα byte 1024-1279 της γραμμικής μνήμης είναι δεσμευμένα για τη συμβολοσειρά εισόδου.
Η συμβολοσειρά εισόδου μπορεί να τροποποιηθεί επί τόπου, αν το επιθυμείς.
Τα κωδικόνια δίνονται συνενωμένα χωρίς συμπλήρωση ως συμβολοσειρά.
Εξήγαγε την αλληλουχία πρωτεϊνών ως συμβολοσειρά τερματιζόμενη με null, με χαρακτήρα νέας γραμμής μετά από κάθε πρωτεΐνη.
Ένα παράδειγμα εξόδου θα ήταν "Methionine\nPhenylalanine\nSerine\n"
Αν η είσοδος δεν είναι έγκυρη, εξήγαγε μια κενή συμβολοσειρά.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις WebAssembly με 87 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.
Εξερεύνησε 11 διαφορετικούς τρόπους να λύσεις αυτή την άσκηση, όπως προστακτικές προσεγγίσεις, συναρτησιακές ιδέες όπως η αντιστοίχιση προτύπων, η αναδρομή και οι συναρτήσεις υψηλότερης τάξης, καθώς και λίγο προγραμματισμό χαμηλού επιπέδου σε C++ και Assembly.