पुस्तक पहचान संख्याओं को मान्य करने के लिए 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 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।