Bulgarian Solitaire to gra dla jednego gracza, popularna przez Martina Gardnera w jego kolumnie matematycznej w Scientific American .
Masz Nidentyczne karty, podzielone na stosy. Z każdego stosu bierzesz kartę i tworzysz nowy stos z usuniętymi kartami. Powtarzasz ten proces, dopóki nie osiągniesz stanu, który już widziałeś, więc kontynuowanie powtórzy pętlę.
Załóżmy na przykład, że masz 8karty podzielone na stos 5i stos 3. Piszemy rozmiary stos w kolejności malejącej: 5 3. Oto zapis gry:
5 3
4 2 2
3 3 1 1
4 2 2
Najpierw usuwasz kartę z każdego z dwóch stosów, pozostawiając stosy 4i 2oraz nowo utworzony stos 2rozdawania 4 2 2. W następnym kroku te zmniejszają się, 3 1 1a wraz z nimi nowy stos 3. Wreszcie ostatni krok opróżnia stosy wielkości 1i produktów, 4 2 2które już się pojawiły, więc przestajemy.
Pamiętaj, że suma rozmiarów stosów pozostaje taka sama.
Twoim celem jest wydrukowanie takiego zapisu gry z danej konfiguracji początkowej. To jest kod golfowy, więc wygrywa najmniej bajtów.
Wejście
Lista liczb dodatnich w porządku malejącym reprezentujących początkowe rozmiary stosów. Wprowadź dane przez STDIN lub funkcję. Możesz użyć dowolnej struktury podobnej do listy.
Nie dostajesz całkowitej liczby kart Njako danych wejściowych.
Wynik
Wydrukuj sekwencję rozmiarów stosów, przez którą przechodzi gra Bułgarski pasjans. Pamiętaj, że drukowanie jest wymagane, a nie zwracane. Każdy krok powinien być własną linią.
Każda linia powinna mieć ciąg liczb dodatnich w porządku malejącym bez żadnych 0. Możesz mieć separatory oraz tokeny początkowe i końcowe (na przykład [3, 3, 1, 1]). Liczby mogą zawierać wiele cyfr, dlatego należy je jakoś rozdzielić.
Wydrukuj podziały wielkości stosu, które widzisz, aż do powtórzenia. Tak więc pierwszy wiersz powinien być wejściem, a ostatni wiersz powinien być powtórzeniem poprzedniego wiersza. Nie powinno być żadnych innych powtórzeń.
Przypadki testowe
>> [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()$zQ. 2. Jeśli przechowujesz listę w malejącej kolejności, wcale nie potrzebujeszN:W!}QYQ~Y]Q=Q_S+fTmtdQ]lQ;Q