Hamming

Hamming

Εύκολο

Εισαγωγή

Το σώμα σου αποτελείται από κύτταρα που περιέχουν DNA. Αυτά τα κύτταρα φθείρονται τακτικά και χρειάζεται να αντικατασταθούν, κάτι που το καταφέρνουν διαιρούμενα σε θυγατρικά κύτταρα. Στην πραγματικότητα, το μέσο ανθρώπινο σώμα βιώνει περίπου 10 τετράκις εκατομμύρια κυτταρικές διαιρέσεις σε όλη τη διάρκεια της ζωής του!

Όταν τα κύτταρα διαιρούνται, αντιγράφεται και το DNA τους. Μερικές φορές, κατά τη διάρκεια αυτής της διαδικασίας, γίνονται λάθη και μεμονωμένα τμήματα DNA κωδικοποιούνται με λανθασμένες πληροφορίες. Αν συγκρίνουμε δύο κλώνους DNA και μετρήσουμε τις διαφορές μεταξύ τους, μπορούμε να δούμε πόσα λάθη συνέβησαν. Αυτό είναι γνωστό ως "Hamming distance".

Η "Hamming distance" είναι χρήσιμη σε πολλούς τομείς της επιστήμης, όχι μόνο στη βιολογία, οπότε είναι μια ωραία φράση για να την ξέρεις :)

Οδηγίες

Υπολόγισε την απόσταση Hamming ανάμεσα σε δύο κλώνους DNA.

Διαβάζουμε το DNA χρησιμοποιώντας τα γράμματα C, A, G και T. Δύο κλώνοι μπορεί να μοιάζουν κάπως έτσι:

GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^  ^ ^    ^^

Έχουν 7 διαφορές, και επομένως η απόσταση Hamming είναι 7.

Σημειώσεις υλοποίησης

Η απόσταση Hamming ορίζεται μόνο για ακολουθίες ίσου μήκους, οπότε μια προσπάθεια υπολογισμού της ανάμεσα σε ακολουθίες διαφορετικού μήκους δε θα πρέπει να λειτουργεί.

Μηνύματα εξαιρέσεων

Μερικές φορές χρειάζεται να πετάξεις μια εξαίρεση. Όταν το κάνεις αυτό, καλό είναι να συμπεριλαμβάνεις πάντα ένα ουσιαστικό μήνυμα σφάλματος που να δείχνει από πού προέρχεται το σφάλμα. Αυτό κάνει τον κώδικά σου πιο ευανάγνωστο και βοηθάει σημαντικά στο debugging. Σε περιπτώσεις όπου ξέρεις ότι η πηγή του σφάλματος θα είναι κάποιου συγκεκριμένου τύπου, μπορείς να επιλέξεις να πετάξεις έναν από τους ενσωματωμένους τύπους σφαλμάτων, αλλά και πάλι θα πρέπει να συμπεριλάβεις ένα ουσιαστικό μήνυμα.

Αυτή η άσκηση απαιτεί να χρησιμοποιήσεις την εντολή raise για να "πετάξεις" ένα ValueError όταν οι κλώνοι που ελέγχεις δεν έχουν το ίδιο μήκος. Οι δοκιμές θα περάσουν μόνο αν πετάξεις με raise την exception και συμπεριλάβεις ένα μήνυμα μαζί της.

Για να πετάξεις ένα ValueError με ένα μήνυμα, γράψε το μήνυμα ως όρισμα στον τύπο exception:

# When the sequences being passed are not the same length.
raise ValueError("Strands must be of equal length.")
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Python Exercism

Έτοιμος να ξεκινήσεις την άσκηση Hamming;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Python με 17 έννοιες146 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.