Luhn

Luhn

मध्यम

निर्देश

किसी संख्या को देखकर बताइए कि वह Luhn फॉर्मूले के अनुसार वैध है या नहीं।

Luhn एल्गोरिदम एक सरल चेकसम फॉर्मूला है। इसका उपयोग क्रेडिट कार्ड संख्याओं और कनाडा की सोशल इंश्योरेंस संख्याओं जैसी कई तरह की पहचान संख्याओं को वैध ठहराने में किया जाता है।

आपको यह जाँचना है कि दी गई स्ट्रिंग वैध है या नहीं।

संख्या की जाँच

1 या उससे कम लंबाई की स्ट्रिंग वैध नहीं होती। इनपुट में स्पेस की अनुमति है, लेकिन जाँचने से पहले उन्हें हटा देना चाहिए। इनके अलावा और कोई भी गैर-अंकीय अक्षर स्वीकार्य नहीं है।

उदाहरण 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 से पूरी तरह विभाज्य हो, तो संख्या वैध है। यह संख्या वैध है!

उदाहरण 2: अवैध क्रेडिट कार्ड संख्या

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 से पूरी तरह विभाज्य नहीं है, इसलिए यह संख्या वैध नहीं है।

GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Haskell Exercism

Luhn शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Haskell को 107 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।

Luhn को गहराई से जानिए!

हम Luhn के 8 अलग-अलग वर्शन देखते हैं। शुरुआत एक बहुत करीने से लिखी Ruby इम्प्लीमेंटेशन से होती है, फिर कुछ इम्पेरेटिव और फंक्शनल तरीके देखते हैं, और अंत में एक SQLite वर्शन पर पहुँचते हैं, जिसे समझने में Erik और Jeremy को काफी मेहनत लगी!