Διαδρομές
/
Julia
Julia
/
Ασκήσεις
/
Επαληθευτής ISBN
Επαληθευτής ISBN

Επαληθευτής ISBN

Μέτριο

Οδηγίες

Η διαδικασία επαλήθευσης ISBN-10 χρησιμοποιείται για την επικύρωση αριθμών αναγνώρισης βιβλίων. Συνήθως περιέχουν παύλες και έχουν τη μορφή: 3-598-21508-8

ISBN

Η μορφή 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.

Ασκήσεις μπόνους

Αν ασχοληθείς με αυτές τις ασκήσεις, γράψε τα δικά σου τεστ για αυτές στο αρχείο της λύσης σου!

  • Όρισε μια μακροεντολή συμβολοσειράς ώστε isbn"3-598-21507-X" == ISBN("3-598-21507-X").

  • Κάνε τον κατασκευαστή να δέχεται και ISBN-13. Το ίδιο ISBN θα πρέπει να συγκρίνεται ως ίσο ανεξάρτητα από τη μορφή: ISBN("1-234-56789-X") == ISBN("978-1-234-56789-7").

  • Όρισε μια συνάρτηση ή έναν iterator που να παράγει ένα έγκυρο ISBN, ίσως ακόμα και ξεκινώντας από ένα δεδομένο ISBN.

Μπορείς να αποθηκεύσεις το ISBN ως ακέραιο αντί για συμβολοσειρά, και θα ήταν ποτέ καλή ιδέα αυτό; Αν το έκανες, θα μπορούσες ακόμα να εκτυπώσεις το ISBN (μαζί με το ψηφίο ελέγχου) ως συμβολοσειρά;

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Julia Exercism

Έτοιμος να ξεκινήσεις την άσκηση Επαληθευτής ISBN;

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