चुनौती
सत्यापन (क्रेडिट कार्ड) संख्याओं के लिए Luhn एल्गोरिथम की गणना करने के लिए सबसे छोटा प्रोग्राम या फ़ंक्शन लिखें ।
Luhn एल्गोरिथ्म समझाया
RosettaCode से , इस चुनौती के प्रयोजनों के लिए इस एल्गोरिथ्म को इस प्रकार निर्दिष्ट किया गया है, उदाहरण इनपुट के साथ 49927398716
:
Reverse the digits, make an array:
6, 1, 7, 8, 9, 3, 7, 2, 9, 9, 4
Double the numbers in odd indexes:
6, 2, 7, 16, 9, 6, 7, 4, 9, 18, 4
Sum the digits in each number:
6, 2, 7, 7, 9, 6, 7, 4, 9, 9, 4
Sum all of the numbers:
6 + 2 + 7 + 7 + 9 + 6 + 7 + 4 + 9 + 9 + 4 = 70
If the sum modulo 10 is 0, then the number is valid:
70 % 10 = 0 => valid
IO नियम
इनपुट : अपनी भाषा के इनपुट / आउटपुट फॉर्मेट में एक स्ट्रिंग या संख्या (आपकी पसंद)
आउटपुट : एक सत्य या मिथ्या मूल्य , क्रमशः, यह दर्शाता है कि ऊपर परीक्षण के अनुसार इनपुट वैध है या नहीं।
नोट्स / टिप्स
यदि आप परीक्षण करने के लिए उपयोग करते हैं, तो गलती से अपने क्रेडिट कार्ड या खाता संख्या को पोस्ट करने की कोशिश न करें :)
यदि इनपुट निर्दिष्ट एल्गोरिदम के साथ संसाधित करने के लिए अमान्य और असंभव है (यानी, साथ काम करने के लिए बहुत कम), तो आप जो चाहें कर सकते हैं, जिसमें मेरा कंप्यूटर भी शामिल है।
हालांकि , पिछली गोली का मतलब यह नहीं है कि आपकी भाषा नंबरों के साथ जो चाहे कर सकती है जो इसे संभालने के लिए बहुत बड़ी है। यदि आपकी भाषा परीक्षण के मामले को संभालने में सक्षम नहीं है, तो इनपुट के रूप में एक स्ट्रिंग लेने पर विचार करें।
उदाहरण
निम्नलिखित उदाहरण इस पायथन लिपि के साथ मान्य किए गए थे ; अगर आपको लगता है कि एक गलत है या एक सवाल है, तो बस @cat पिंग करें।
49927398716 True
49927398717 False
1234567812345670 True
1234567812345678 False
79927398710 False
79927398711 False
79927398712 False
79927398713 True
79927398714 False
79927398715 False
79927398716 False
79927398717 False
79927398718 False
79927398719 False
374652346956782346957823694857692364857368475368 True
374652346956782346957823694857692364857387456834 False
8 False **
0 True **
** पायथन कार्यान्वयन के अनुसार, लेकिन आप कुछ भी कर सकते हैं क्योंकि ये विनिर्देश के सख्त पालन के योग्य होने के लिए बहुत कम हैं।
यदि उपरोक्त में से कोई भी मौजूदा उत्तरों को अमान्य करता है (हालांकि मेरा मानना है कि यह संभव नहीं होना चाहिए), तो वे उत्तर मान्य मान्य हैं। हालांकि, नए उत्तर, मान्य होने के लिए, ऊपर दिए गए विनिर्देश का पालन करना चाहिए।