Με δεδομένο έναν αριθμό, προσδιόρισε αν είναι έγκυρος σύμφωνα με τον τύπο Luhn.
Ο αλγόριθμος Luhn είναι ένας απλός τύπος αθροίσματος ελέγχου που χρησιμοποιείται για την επικύρωση πολλών ειδών αριθμών ταυτοποίησης, όπως αριθμοί πιστωτικών καρτών και αριθμοί κοινωνικής ασφάλισης του Καναδά.
Ο στόχος είναι να ελέγξεις αν μια δεδομένη συμβολοσειρά είναι έγκυρη.
Συμβολοσειρές μήκους 1 ή μικρότερου δεν είναι έγκυρες. Τα κενά επιτρέπονται στην είσοδο, αλλά πρέπει να αφαιρούνται πριν από τον έλεγχο. Όλοι οι άλλοι χαρακτήρες που δεν είναι ψηφία δεν επιτρέπονται.
4539 3195 0343 6467
Το πρώτο βήμα του αλγορίθμου Luhn είναι να διπλασιάσεις κάθε δεύτερο ψηφίο, ξεκινώντας από τα δεξιά. Θα διπλασιάσουμε
4_3_ 3_9_ 0_4_ 6_6_
Αν ο διπλασιασμός του αριθμού δώσει αποτέλεσμα μεγαλύτερο από το 9, τότε αφαίρεσε το 9 από το γινόμενο. Τα αποτελέσματα του διπλασιασμού μας:
8569 6195 0383 3437
Στη συνέχεια, άθροισε όλα τα ψηφία:
8+5+6+9+6+1+9+5+0+3+8+3+3+4+3+7 = 80
Αν το άθροισμα διαιρείται ακριβώς με το 10, τότε ο αριθμός είναι έγκυρος. Αυτός ο αριθμός είναι έγκυρος!
8273 1232 7352 0569
Διπλασίασε τα δεύτερα ψηφία, ξεκινώντας από τα δεξιά
7253 2262 5312 0539
Άθροισε τα ψηφία
7+2+5+3+2+2+6+2+5+3+1+2+0+5+3+9 = 57
Το 57 δεν διαιρείται ακριβώς με το 10, οπότε αυτός ο αριθμός δεν είναι έγκυρος.
Διάβασε προσεκτικά τις οδηγίες. Αν τις διαβάσεις στα γρήγορα, μπορεί να σου ξεφύγουν σημαντικές λεπτομέρειες σχετικά με την κατεύθυνση.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Pharo με 50 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.
Εξερευνούμε 8 διαφορετικές εκδοχές του Luhn, ξεκινώντας από μια πολύ τακτοποιημένη υλοποίηση σε Ruby, περνώντας από κάποιες προστακτικές και συναρτησιακές προσεγγίσεις και καταλήγοντας σε μια έκδοση σε SQLite που χρειάστηκε αρκετή δουλειά από τον Erik και τον Jeremy για να την αποκρυπτογραφήσουν!