0xUsernames
มีคนจำนวนมากที่ใช้บริการส่งข้อความที่พวกเขาไม่มีพื้นที่ในการจัดเก็บชื่อผู้ใช้ทั้งหมด! ในการแก้ไขปัญหานี้พวกเขาจะเริ่มจัดเก็บชื่อผู้ใช้เป็นเลขฐานสิบหกหากเป็นไปได้
หากชื่อผู้ใช้ประกอบด้วยอักขระ0123456789ABCDEF
( ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) มันสามารถแปลงเป็นเลขฐานสิบหกและเก็บเป็นจำนวนเต็ม ตัวอย่างเช่นชื่อผู้ใช้ba5eba11
สามารถตีความได้ว่า0xBA5EBA11
เป็นจำนวนเต็มฐานสิบหก
แต่เกี่ยวกับ05AB1E
อะไร นั่นคือศูนย์นำที่จะหายไป ดังนั้นเมื่อใดก็ตามที่เราแปลงชื่อผู้ใช้เราต้องแน่ใจว่าได้เติม a 1
ก่อนที่จะอ่านมันเป็นจำนวนเต็ม
ความท้าทาย
งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ให้ชื่อผู้ใช้ที่ไม่ว่างเปล่าเป็นสตริงชื่อผู้ใช้ 'hexa-compresses':
- หากสามารถตีความได้ว่าเป็นเลขจำนวนเต็มฐานสิบหกให้เพิ่ม 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"
สำหรับการอ้างอิงนี่คือการใช้งาน Python 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