Εργάζεσαι σε μια εταιρεία βιοτεχνολογίας που ειδικεύεται στην ανάπτυξη θεραπευτικών λύσεων.
Η ομάδα σου μόλις ανέλαβε ένα νέο έργο: να αναπτύξει μια στοχευμένη θεραπεία για έναν σπάνιο τύπο καρκίνου.
Είναι όλα πολύ περίπλοκα, αλλά η βασική ιδέα είναι ότι μερικές φορές το σώμα των ανθρώπων παράγει υπερβολική ποσότητα από μια συγκεκριμένη πρωτεΐνη. Αυτό μπορεί να προκαλέσει κάθε λογής αναστάτωση.
Αν όμως καταφέρεις να δημιουργήσεις ένα πολύ συγκεκριμένο μόριο (που ονομάζεται micro-RNA), μπορεί να εμποδίσει την παραγωγή της πρωτεΐνης.
Αυτή η τεχνική ονομάζεται Παρεμβολή RNA.
Ο στόχος σου είναι να προσδιορίσεις το συμπλήρωμα RNA μιας δεδομένης αλληλουχίας DNA.
Τόσο οι αλυσίδες DNA όσο και οι αλυσίδες RNA είναι μια αλληλουχία νουκλεοτιδίων.
Τα τέσσερα νουκλεοτίδια που απαντώνται στο DNA είναι η αδενίνη (A), η κυτοσίνη (C), η γουανίνη (G) και η θυμίνη (T).
Τα τέσσερα νουκλεοτίδια που απαντώνται στο RNA είναι η αδενίνη (A), η κυτοσίνη (C), η γουανίνη (G) και η ουρακίλη (U).
Δεδομένης μιας αλυσίδας DNA, η μεταγραφόμενη αλυσίδα RNA σχηματίζεται αντικαθιστώντας κάθε νουκλεοτίδιο με το συμπλήρωμά του:
G -> C
C -> G
T -> A
A -> U
Αν θέλεις να δεις πώς είναι δομημένες οι είσοδοι και οι έξοδοι, ρίξε μια ματιά στα παραδείγματα της σουίτας δοκιμών.
Χρησιμοποιώντας ιδιωτικά πεδία σε δομές με δημόσιες συναρτήσεις new που επιστρέφουν Option ή Result (όπως εδώ με τα DNA::new και RNA::new), μπορούμε να εγγυηθούμε ότι η εσωτερική αναπαράσταση του DNA είναι σωστή. Επειδή κάθε έγκυρη συμβολοσειρά DNA έχει μια έγκυρη συμβολοσειρά RNA, δεν χρειάζεται να επιστρέψουμε Result/Option από το into_rna.
Αυτό εξηγεί τις υπογραφές τύπων που θα δεις στα tests.
Οι τύποι επιστροφής τόσο του DNA::new() όσο και του RNA::new() είναι Result<Self, usize>, όπου ο τύπος σφάλματος usize αντιπροσωπεύει τη θέση του πρώτου μη έγκυρου χαρακτήρα (θέση χαρακτήρα, όχι utf8).
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Rust με 99 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.