ใน puzzling SE มีสิ่งที่เรียกว่า"ปัญหาของไม้ขีดไฟ"ซึ่งคณิตศาสตร์เขียนด้วยไม้ขีดและคุณได้รับอนุญาตให้ย้ายจำนวนหนึ่งของพวกเขาเพื่อให้ได้คุณสมบัติที่แน่นอน
ในคำถามนี้เราจะพิจารณาเฉพาะจำนวนเต็มที่แสดงในรูปแบบการแสดงผล 7 ส่วน นี่คือตัวเลข 10 หลักในรูปแบบนั้น:
__ __ __ __ __ __ __ __
| | | __| __| |__| |__ |__ | |__| |__|
|__| | |__ __| | __| |__| | |__| __|
แต่ละเซกเมนต์ของจอแสดงผลเป็นหนึ่ง "match-stick" ซึ่งสามารถเคลื่อนย้ายได้อย่างอิสระจากหมายเลขที่เหลือ ไม้ขีดไฟนั้นไม่สามารถแยกออกและทำลายได้ไม่สามารถทำลายหรือถอดออกไม่ว่าด้วยวิธีใด
ตัวต่อที่พบบ่อยคือการใช้ตัวเลขที่กำหนดในฐาน 10 และพยายามทำให้ตัวเลขที่ใหญ่ที่สุดเท่าที่จะเป็นไปได้ในจำนวนการเคลื่อนที่ที่กำหนด การย้ายจะถือเป็นการเคลื่อนไหวหนึ่งของไม้ขีดไฟจากช่องว่างไปยังช่องว่างอื่น ๆ คุณได้รับอนุญาตอย่างสมบูรณ์ในการสร้างตัวเลขใหม่ที่ด้านข้างของตัวเลขเช่น 0 สามารถสร้างเป็น 77 ให้ 3 การเคลื่อนไหว
__ __ __ __ __ __ __
| | | | | | | | |
|__| , __| , | , | |
อย่างไรก็ตามคุณไม่สามารถสร้างหนึ่งช่องเป็น 2 หรือสร้างช่องใหม่ระหว่างช่องที่มีอยู่ได้ตัวอย่างเช่นการเปลี่ยน 4 เป็น 11 ตรงกลางของตัวเลขหรือใส่ตัวเลขใหม่ในระหว่างที่มีอยู่ การย้ายแต่ละครั้งไม่จำเป็นต้องให้ตัวเลขที่ถูกต้อง แต่ผลลัพธ์สุดท้ายควรเป็นตัวเลขที่เหมาะสมในการแสดงผลส่วนฐาน 10 เจ็ด คุณไม่จำเป็นต้องใช้ทุกการเคลื่อนไหวหากคุณไม่ต้องการ ซึ่งแตกต่างจากการทำให้งงนี่คือ [แท็ก: คำถามปิดท้าย] คุณไม่สามารถใช้ตัวดำเนินการใด ๆ (การคูณการยกกำลังเป็นต้น) หรือค่าคงที่ทางคณิตศาสตร์ (Pi, หมายเลขเกรแฮม ฯลฯ ) ในคำตอบของคุณ
งาน
เขียนโปรแกรมหรือฟังก์ชั่นที่รับจำนวนและจำนวนการเคลื่อนไหวเป็นอินพุตและส่งกลับจำนวนที่มากที่สุดที่สามารถทำได้กับการย้ายจำนวนมากบนหมายเลขเดิม
นี่เป็นคำถามเกี่ยวกับรหัสกอล์ฟดังนั้นคำตอบจะได้คะแนนเป็นไบต์โดยไบต์น้อยจะดีขึ้น
กรณีทดสอบ
n, moves -> max
0, 1 -> 9
0, 3 -> 77
0, 4 -> 111
8, 3 -> 74
220, 1 -> 320
220, 2 -> 520
220, 3 -> 7227
220, 4 -> 22111
220, 5 -> 32111
747, 1 -> 747
747, 2 -> 7171
747, 3 -> 7711
919, 2 -> 991