مُدقّق 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").

  • عرّف دالة أو مُكرِّرًا لتوليد رقم ISBN صالح، وربما حتى من رقم ISBN ابتدائي معطى.

هل يمكنك تخزين ISBN كعدد صحيح بدلًا من سلسلة نصية، وهل سيكون ذلك فكرة جيدة أصلًا؟ وإذا فعلت ذلك، هل يمكنك مع ذلك طباعة ISBN (بما في ذلك رقم التحقق) على هيئة سلسلة نصية؟

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Julia Exercism

مستعد لبدء مُدقّق ISBN؟

سجّل في Exercism لتتعلّم وتتقن Julia عبر 35 مفهومًا128 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.