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