यह एक बहुत ही सरल एल्गोरिथ्म है, मुझे यकीन है कि कई अलग-अलग भाषाओं में हल किया जा सकता है। स्पेन में आईडी कार्ड ( डीएनआई के रूप में जाना जाता है ) में 8 नंबर और एक नियंत्रण चरित्र होता है। नियंत्रण वर्ण की गणना निम्न एल्गोरिथम के साथ की जाती है: संख्या को 23 से विभाजित करें, शेष का संचालन करें और इसे इस तालिका के अनुसार वर्ण से प्रतिस्थापित करें:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
T R W A G M Y F P D X B N J Z S Q V H L C K E
यदि DNI स्पेन में रहने वाले किसी विदेशी व्यक्ति का है, तो पहले अंक को बदल दिया जाता है X
, Y
या Z
इसे NIE कहा जाता है । इस स्थिति में, नियंत्रण वर्ण की गणना करने से पहले निम्नलिखित विकल्प दिए गए हैं:
X Y Z
0 1 2
ऑनलाइन बहुत सारे कैलकुलेटर हैं जो नियंत्रण चरित्र प्राप्त करने में आपकी मदद करते हैं, लेकिन, आप उस कोड को कितना छोटा लिख सकते हैं? एक एल्गोरिथ्म (प्रोग्राम या फ़ंक्शन) लिखें जो string
DNI नंबर (जो हमेशा 8 अल्फ़ान्यूमेरिक वर्णों से युक्त होगा ) के साथ प्राप्त होता है और गणना की गई केवल एकल नियंत्रण वर्ण देता है और इससे अधिक कुछ नहीं (एक अनुगामी न्यूलाइन स्वीकार किया जाता है)।
टिप्पणियाँ:
- DNI हमेशा अपरकेस में लिखा जाता है, लेकिन आपके एल्गोरिथ्म में आप इनपुट और आउटपुट को ऊपरी या निचले हिस्से में चुन सकते हैं, बस सुसंगत रहें।
- वास्तविक जीवन में, 2008 से पहले जारी किए गए कुछ एनआईई के पास 8 अंक हैं
X
,Y
याZ
, लेकिन इस खेल के उद्देश्यों के लिए, आप विचार कर सकते हैं कि उनके पास 7 अंक हैं क्योंकि वे आजकल हैं। - आप विचार कर सकते हैं कि इनपुट स्ट्रिंग में हमेशा 8 वर्ण होंगे, लेकिन यदि वे "8 अंक" प्रारूप में नहीं हैं और न ही "[XYZ] प्लस 7 अंक" प्रारूप, तो आपको एक त्रुटि (अपनी पसंद की) वापस करनी होगी या बस फेंकना होगा एक अपवाद।
परीक्षण के मामलों:
00000010 -> X (HRM Juan Carlos I's DNI number)
01234567 -> L
98765432 -> M
69696969 -> T
42424242 -> Y
Z5555555 -> W (Z=2)
Y0000369 -> S (Y=1)
A1234567 -> <Error code or exception>
1231XX12 -> <Error code or exception>
यह कोड-गोल्फ है , इसलिए प्रत्येक भाषा की जीत के लिए सबसे छोटा कोड हो सकता है!