ที่ตั้งหมายเลขห้องพัก
ฉันได้พบกับเทคนิคการแก้ปัญหาที่น่าสนใจในงานของฉันเมื่อได้รับหมายเลขห้องผิดจากเพื่อนร่วมงานสำหรับการประชุม สมาชิกในทีมของฉันจะส่งหมายเลขห้องที่ไม่ถูกต้องไปให้ฉันโดยทั่วไปเนื่องจากพวกเขากำลังรีบไปที่โต๊ะทำงาน
ที่น่าสนใจเมื่อมาถึงที่ห้องผิดฉันมักจะสามารถเดาได้ว่าห้องใดที่พวกเขาหมายถึงจริง ๆ โดยการจินตนาการปุ่มกดตัวเลข :
![]()
และโดยการเดาตัวเลขติดกันพวกเขาตั้งใจจะกด
ท้าทาย
ความท้าทายของคุณคือการเขียนฟังก์ชั่นที่ใช้หมายเลขอาคารสำนักงาน (000-999) และส่งออกโซลูชั่นพิมพ์ผิดที่เป็นไปได้โดยสมมติว่าเพื่อนร่วมงานของคุณพิมพ์ผิดเพียงหนึ่งหลัก
ตารางต่อไปนี้แสดงตัวเลขที่อยู่ติดกันบนแผงปุ่มกดตัวเลข:
0 -> 1,2
1 -> 0,2,4
2 -> 0,1,3,5
3 -> 2,6
4 -> 1,5,7
5 -> 2,4,6,8
6 -> 3,5,9
7 -> 4,8
8 -> 5,7,9
9 -> 6,8
อินพุต
หมายเลข 3 000-999หลัก: สมมติว่าป้อนตัวเลข 3 หลักทุกประการ หากจำนวนน้อยกว่า 100 หรือน้อยกว่า 10 คุณจะได้รับศูนย์นำหน้า (เช่น 004 & 028)
เอาท์พุต
รายการของห้องที่เป็นไปได้ สิ่งนี้สามารถอยู่ในรูปแบบใดก็ได้ที่คุณต้องการตราบใดที่มีตัวคั่นระหว่างหมายเลขห้อง (เช่นช่องว่างเครื่องหมายจุลภาคบรรทัดใหม่ ฯลฯ ) หากจำนวนน้อยกว่า 100 หรือน้อยกว่า 10 คุณสามารถหรือไม่สามารถมีศูนย์นำหน้าเป็นผลลัพธ์นั่นขึ้นอยู่กับคุณ (เช่น 004 สามารถเป็นได้004 04 4และ 028 สามารถเป็นได้028 28)
กรณีทดสอบ (ศูนย์นำหน้าเป็นตัวเลือก):
008 -> 108, 208, 018, 028, 005, 007, 009
123 -> 023, 223, 423, 103, 113, 133, 153, 122, 126
585 -> 285, 485, 685, 885, 555, 575, 595, 582, 584, 586, 588
777 -> 477, 877, 747, 787, 774, 778
963 -> 663, 863, 933, 953, 993, 962, 966
555 -> 255, 455, 655, 855, 525, 545, 565, 585, 552, 554, 556, 558
นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดเป็นไบต์สำหรับแต่ละภาษาจะชนะ
933อย่างนั้นฉันได้แก้ไขมันแล้ว
