«Болгарский пасьянс» - это однопользовательская игра, популярная у Мартина Гарднера в его математической колонке « 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