कर रहे हैं लोकप्रिय ऐसे Luhn रूप में चेक अंकों एल्गोरिदम और फिर देखते हैं अच्छा उदाहरण के लिए डैम एल्गोरिथ्म हैं,। एल्गोरिथम जैसे लुहान की लोकप्रियता के पीछे एकमात्र संभावित कारण यह है कि उनमें मौजूद कोड गोल्फ कार्यान्वयन है। इसका अर्थ है कि हम एक समुदाय के रूप में बेहतर एल्गोरिदम के गोल्फ कार्यान्वयन प्रदान करके दुनिया को बदलने की शक्ति रखते हैं।
तो यह चुनौती अपनी पसंद की भाषा में एक फ़ंक्शन या पूरा कार्यक्रम लिखकर दुनिया को बदलने की है जो डैम एल्गोरिथम का उपयोग करके एक चेक अंक की गणना करता है । कुछ हफ्तों में सबसे कम वर्णों (बाइट्स नहीं) के विजेता को विजेता के रूप में चुना जाएगा। ध्यान दें कि सभी सहायक फ़ंक्शंस और ऑपरेशन टेबल की घोषणा को वर्ण गणना में शामिल किया जाना चाहिए। एक टाई के मामले में सबसे लोकप्रिय उत्तर चुना जाएगा।
यह एल्गोरिथ्म एक ऑपरेशन टेबल के इर्द-गिर्द घूमता है, जो ऑर्डर 10 के कमजोर पूरी तरह से सममित विरोधी क्रासग्रुप होना चाहिए । डैम एल्गोरिथम के बारे में विकिपीडिया लेख में पाया जा सकता है कि ऑपरेशन टेबल वह है जिसे इस चुनौती में उपयोग किया जाना है। पूर्णता के लिए मैं इसे नीचे पुन: प्रस्तुत करूंगा:
| 0 1 2 3 4 5 6 7 8 9
----+----------------------------------------
0 | 0 3 1 7 5 9 8 6 4 2
1 | 7 0 9 2 1 5 4 8 6 3
2 | 4 2 0 6 8 7 1 3 5 9
3 | 1 7 5 0 9 8 3 4 2 6
4 | 6 1 2 3 0 4 5 9 7 8
5 | 3 6 7 4 2 0 9 5 8 1
6 | 5 8 6 9 7 2 0 1 3 4
7 | 8 9 4 5 3 6 2 0 1 7
8 | 9 4 3 8 6 1 7 2 0 5
9 | 2 5 8 1 4 3 6 7 9 0
संक्षेप में (विवरण के लिए विकिपीडिया लेख देखें ) एल्गोरिथ्म निम्नानुसार काम करता है:
- आप संसाधित होने के लिए अंकों की एक सूची के साथ शुरू करते हैं और एक अंतरिम अंक जो 0 पर सेट होता है।
- सूची के प्रत्येक अंक के लिए आप स्तंभ सूचकांक के रूप में अंक और पंक्ति सूचकांक के रूप में पिछले अंतरिम अंक का उपयोग करके एक नए अंतरिम अंक की गणना करते हैं।
- अंतिम अंतरिम अंक चेक अंक है। यदि आप एक संख्या को मान्य कर रहे हैं, जिसमें पहले से ही एक जोड़ा चेक अंक है, तो अंतिम अंतरिम अंक 0 है यदि संख्या वैध है।
आपके प्रोग्राम या फ़ंक्शन को एक स्ट्रिंग को स्वीकार करना चाहिए जिसमें शून्य को छोड़कर कोई भी वर्ण हो सकता है, लेकिन यह केवल स्ट्रिंग में अंकों के साथ ही चिंता करना चाहिए। इसे या तो प्रिंट करना चाहिए (यदि कोई प्रोग्राम) या रिटर्न (यदि कोई फ़ंक्शन है) तो मूल स्ट्रिंग की गणना की गई गणना अंकों के साथ की गई है। यदि आपने एक प्रोग्राम लिखने के लिए चुना है तो प्रोग्राम इनपुट को एक तर्क के रूप में या मानक इनपुट के रूप में स्वीकार कर सकता है। यदि इनपुट स्ट्रिंग खाली है या आपके पास कोई अंक नहीं है, तो आपको एक शून्य वापस करना या जोड़ना होगा।
कुछ उदाहरण:
Input | Output
------------+-------------
42 | 427
427 | 4270
2 to 2 | 2 to 29
23 42 76- | 23 42 76-5
- | -0