Η διαδικασία επαλήθευσης ISBN-10 χρησιμοποιείται για την επικύρωση αριθμών αναγνώρισης βιβλίων.
Συνήθως περιέχουν παύλες και έχουν τη μορφή: 3-598-21508-8
Η μορφή ISBN-10 αποτελείται από 9 ψηφία (0 έως 9) συν έναν χαρακτήρα ελέγχου (είτε ένα ψηφίο είτε μόνο ένα X). Στην περίπτωση που ο χαρακτήρας ελέγχου είναι X, αυτός αντιπροσωπεύει την τιμή '10'. Μπορούν να δοθούν με ή χωρίς παύλες, και η εγκυρότητά τους μπορεί να ελεγχθεί με τον παρακάτω τύπο:
(d₁ * 10 + d₂ * 9 + d₃ * 8 + d₄ * 7 + d₅ * 6 + d₆ * 5 + d₇ * 4 + d₈ * 3 + d₉ * 2 + d₁₀ * 1) mod 11 == 0
Αν το αποτέλεσμα είναι 0, τότε το ISBN-10 είναι έγκυρο, αλλιώς δεν είναι έγκυρο.
Ας πάρουμε το ISBN-10 3-598-21508-8.
Το αντικαθιστούμε στον τύπο και παίρνουμε:
(3 * 10 + 5 * 9 + 9 * 8 + 8 * 7 + 2 * 6 + 1 * 5 + 5 * 4 + 0 * 3 + 8 * 2 + 8 * 1) mod 11 == 0
Εφόσον το αποτέλεσμα είναι 0, αυτό αποδεικνύει ότι το ISBN μας είναι έγκυρο.
Δεδομένης μιας συμβολοσειράς, το πρόγραμμα πρέπει να ελέγχει αν η συμβολοσειρά που δίνεται είναι ένα έγκυρο ISBN-10. Για να το υλοποιήσεις, χρειάζεται λίγη σκέψη σχετικά με την προεπεξεργασία και την ανάλυση της συμβολοσειράς πριν από τον υπολογισμό του ψηφίου ελέγχου του ISBN.
Το πρόγραμμα πρέπει να μπορεί να επαληθεύει ISBN-10 και με και χωρίς διαχωριστικές παύλες.
Η μετατροπή από συμβολοσειρές σε αριθμούς μπορεί να είναι δύσκολη σε ορισμένες γλώσσες.
Τώρα μάλιστα γίνεται ακόμη πιο δύσκολη, αφού το ψηφίο ελέγχου ενός ISBN-10 μπορεί να είναι 'X' (που αντιπροσωπεύει το '10').
Για παράδειγμα, το 3-598-21507-X είναι ένα έγκυρο ISBN-10.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Lua με 117 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.