تُستخدم عملية التحقق من 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 صالح.
إذا حاولت إنجاز هذه المهام، فاكتب اختباراتك الخاصة بها في ملف الحل!
عرّف ماكرو نصيًا بحيث يتحقق التعبير isbn"3-598-21507-X" == ISBN("3-598-21507-X").
اجعل الباني يقبل أرقام ISBN-13 أيضًا. ينبغي أن يتساوى الرقم نفسه من ISBN مهما كان التنسيق: ISBN("1-234-56789-X") == ISBN("978-1-234-56789-7").
عرّف دالة أو مُكرِّرًا لتوليد رقم ISBN صالح، وربما حتى من رقم ISBN ابتدائي معطى.
هل يمكنك تخزين ISBN كعدد صحيح بدلًا من سلسلة نصية، وهل سيكون ذلك فكرة جيدة أصلًا؟ وإذا فعلت ذلك، هل يمكنك مع ذلك طباعة ISBN (بما في ذلك رقم التحقق) على هيئة سلسلة نصية؟
سجّل في Exercism لتتعلّم وتتقن Julia عبر 35 مفهومًا128 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.