บัลแกเรีย 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()$Q2. หากคุณเก็บรายการตามลำดับที่ลดลงคุณไม่จำเป็นต้องใช้Nเลย:W!}QYQ~Y]Q=Q_S+fTmtdQ]lQ;Q