Болгарський пасьянс - це одиночна гра, яку зробив популярний Мартин Гарднер у своїй математичній колонці в Scientific American .
У вас 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позначень. Можливо, у вас є роздільники, маркери початку та кінця (наприклад, [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