0xUsernames
एक संदेश सेवा का उपयोग करने वाले इतने सारे लोग हैं कि वे सभी उपयोगकर्ता नाम संग्रहीत करने के लिए अंतरिक्ष से बाहर चल रहे हैं! इसे ठीक करने के लिए, वे उपयोगकर्ता नाम को हेक्साडेसिमल के रूप में संग्रहीत करना शुरू करेंगे, जहां संभव हो।
यदि किसी उपयोगकर्ता नाम में केवल वर्ण 0123456789ABCDEF
(केस असंवेदनशील) होते हैं, तो इसे हेक्साडेसिमल में बदला जा सकता है और पूर्णांक के रूप में संग्रहीत किया जा सकता है। उदाहरण के लिए, उपयोगकर्ता नाम की ba5eba11
व्याख्या 0xBA5EBA11
हेक्साडेसिमल पूर्णांक के रूप में की जा सकती है ।
लेकिन इससे क्या 05AB1E
? यह एक अग्रणी शून्य है, जो खो जाएगा। इसलिए, जब भी हम एक उपयोगकर्ता नाम परिवर्तित करते हैं, तो हम 1
इसे पूर्णांक के रूप में पढ़ने से पहले सुनिश्चित करते हैं ।
चुनौती
आपका कार्य एक प्रोग्राम या फ़ंक्शन लिखना है, जिसने एक स्ट्रिंग के रूप में एक गैर-खाली उपयोगकर्ता नाम दिया है, 'हेक्सा-कंप्रेस' उपयोगकर्ता नाम:
- यदि इसे हेक्साडेसिमल पूर्णांक के रूप में व्याख्या किया जा सकता है, तो 1 को पूर्वसर्ग करें, हेक्साडेसिमल के रूप में व्याख्या करें, और फिर परिणाम को आधार 10 के रूप में प्रिंट करें ।
- अन्यथा, बस स्ट्रिंग अनमॉडिफाइड लौटाएं।
यह कोड-गोल्फ है , इसलिए सबसे छोटा समाधान (बाइट्स में) जीतता है! अंतर्निहित आधार रूपांतरण कार्यों की अनुमति है।
परीक्षण के मामलों
आप मान सकते हैं कि किसी भी परिणामी पूर्णांक आपकी भाषा के मानक पूर्णांक सीमा के भीतर हैं।
अधिकांश मैसेजिंग सिस्टम पर उपयोगकर्ता नाम के साथ, इनपुट स्ट्रिंग्स में केवल अल्फ़ान्यूमेरिक्स और अंडरस्कोर होंगे।
याद रखें, 1
रूपांतरण से पहले आपको हमेशा एक अग्रणी जोड़ना होगा !
"ba5eba11" -> 7421737489
"05AB1E" -> 17148702
"dec0de" -> 31375582
"Beef" -> 114415
"da7aba5e" -> 7960443486
"500" -> 5376
"DENNIS" -> "DENNIS"
"Garth" -> "Garth"
"A_B_C" -> "A_B_C"
"0x000" -> "0x000"
संदर्भ के लिए, यहां एक पायथन 3 कार्यान्वयन है जिसे मैंने परीक्षण मामलों के लिए इस्तेमाल किया था (अपुष्ट):
import re
def convert_name(name):
if re.fullmatch('^[0-9A-Fa-f]+$', name):
return int('1' + name.upper(), base = 16)
else:
return name