किसी संख्या को देखकर बताइए कि वह Luhn फॉर्मूले के अनुसार वैध है या नहीं।
Luhn एल्गोरिदम एक सरल चेकसम फॉर्मूला है। इसका उपयोग क्रेडिट कार्ड संख्याओं और कनाडा की सोशल इंश्योरेंस संख्याओं जैसी कई तरह की पहचान संख्याओं को वैध ठहराने में किया जाता है।
आपको यह जाँचना है कि दी गई स्ट्रिंग वैध है या नहीं।
1 या उससे कम लंबाई की स्ट्रिंग वैध नहीं होती। इनपुट में स्पेस की अनुमति है, लेकिन जाँचने से पहले उन्हें हटा देना चाहिए। इनके अलावा और कोई भी गैर-अंकीय अक्षर स्वीकार्य नहीं है।
4539 3195 0343 6467
Luhn एल्गोरिदम का पहला चरण है हर दूसरे अंक को दोगुना करना, दाईं ओर से शुरू करके। हम इन अंकों को दोगुना करेंगे
4539 3195 0343 6467
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ (double these)
अगर किसी अंक को दोगुना करने पर 9 से बड़ी संख्या बने, तो गुणनफल में से 9 घटा दीजिए। हमारे दोगुना करने का परिणाम:
8569 6195 0383 3437
अब सभी अंकों का जोड़ कीजिए:
8+5+6+9+6+1+9+5+0+3+8+3+3+4+3+7 = 80
अगर जोड़ 10 से पूरी तरह विभाज्य हो, तो संख्या वैध है। यह संख्या वैध है!
8273 1232 7352 0569
दाईं ओर से शुरू करके हर दूसरे अंक को दोगुना कीजिए
7253 2262 5312 0539
अंकों का जोड़ कीजिए
7+2+5+3+2+2+6+2+5+3+1+2+0+5+3+9 = 57
57, 10 से पूरी तरह विभाज्य नहीं है, इसलिए यह संख्या वैध नहीं है।
Exercism पर साइन अप कीजिए और Haskell को 107 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।
हम Luhn के 8 अलग-अलग वर्शन देखते हैं। शुरुआत एक बहुत करीने से लिखी Ruby इम्प्लीमेंटेशन से होती है, फिर कुछ इम्पेरेटिव और फंक्शनल तरीके देखते हैं, और अंत में एक SQLite वर्शन पर पहुँचते हैं, जिसे समझने में Erik और Jeremy को काफी मेहनत लगी!