บัลแกเรีย Solitaireเป็นเกมที่เล่นคนเดียวทำให้เป็นที่นิยมโดยมาร์ตินการ์ดเนอร์ของเขาในคอลัมน์ทางคณิตศาสตร์วิทยาศาสตร์อเมริกัน
คุณมีN
ไพ่เหมือนกันแบ่งออกเป็นกอง คุณรับการ์ดจากแต่ละกองและสร้างกองใหม่กับการ์ดที่ถูกลบออก คุณทำขั้นตอนนี้ซ้ำจนกว่าจะถึงสถานะที่คุณเคยเห็นและจะดำเนินการวนซ้ำ
ตัวอย่างเช่นสมมติว่าคุณมี8
การ์ดแยกออกเป็นกองของและกอง5
เราเขียนขนาดเสาเข็มในลำดับถัดลงมา:3
5 3
นี่คือหลักฐานของเกม:
5 3
4 2 2
3 3 1 1
4 2 2
แรกที่คุณเอาบัตรออกจากกันของทั้งสองกองทิ้งกอง4
และ2
และกองที่สร้างขึ้นใหม่ของการให้2
4 2 2
ในขั้นตอนต่อไปลดลงเหล่านี้ไปตามด้วยกองใหม่3 1 1
3
ในที่สุดขั้นตอนสุดท้ายจะทำให้กองขนาดใหญ่หมด1
และผลิตผล4 2 2
ซึ่งปรากฏขึ้นแล้วเราจึงหยุด
โปรดทราบว่าผลรวมของขนาดเสาเข็มยังคงเหมือนเดิม
เป้าหมายของคุณคือพิมพ์ทรานสคริปต์ของเกมจากการกำหนดค่าเริ่มต้นที่กำหนด นี่คือรหัสกอล์ฟดังนั้นจำนวนไบต์ที่น้อยที่สุดจึงชนะ
อินพุต
รายการของจำนวนบวกในลำดับจากมากไปน้อยแสดงถึงขนาดเสาเข็มเริ่มต้น รับอินพุตผ่าน STDIN หรือฟังก์ชั่นอินพุต คุณสามารถใช้โครงสร้างรายการที่คุณต้องการ
คุณไม่ได้รับจำนวนบัตรทั้งหมดN
เป็นอินพุต
เอาท์พุต
พิมพ์ลำดับของขนาดของกองเกมบัลแกเรียโซลิแทร์ โปรดทราบว่าจำเป็นต้องมีการพิมพ์ไม่ใช่ส่งคืน แต่ละขั้นตอนควรเป็นของตัวเอง
แต่ละบรรทัดควรจะมีลำดับของตัวเลขในเชิงบวกในลำดับถัดลงมาที่ไม่มี0
's คุณอาจมีตัวคั่นและโทเค็นเริ่มต้นและจุดสิ้นสุด (ตัวอย่างเช่น[3, 3, 1, 1]
) ตัวเลขอาจมีหลายหลักดังนั้นควรคั่นด้วยวิธีใดวิธีหนึ่ง
พิมพ์ตัวแยกขนาดเสาเข็มที่คุณเห็นจนถึงและรวมถึงการทำซ้ำ ดังนั้นบรรทัดแรกควรเป็นอินพุตและบรรทัดสุดท้ายควรเป็นซ้ำของบรรทัดก่อนหน้า ไม่ควรทำซ้ำอีก
กรณีทดสอบ
>> [1]
1
1
>> [2]
2
1 1
2
>> [1, 1, 1, 1, 1, 1, 1]
1 1 1 1 1 1 1
7
6 1
5 2
4 2 1
3 3 1
3 2 2
3 2 1 1
4 2 1
>> [5, 3]
5 3
4 2 2
3 3 1 1
4 2 2
>> [3, 2, 1]
3 2 1
3 2 1
>> [4, 4, 3, 2, 1]
4 4 3 2 1
5 3 3 2 1
5 4 2 2 1
5 4 3 1 1
5 4 3 2
4 4 3 2 1
v$input()$
Q
2. หากคุณเก็บรายการตามลำดับที่ลดลงคุณไม่จำเป็นต้องใช้N
เลย:W!}QYQ~Y]Q=Q_S+fTmtdQ]lQ;Q