To wyzwanie jest związane z Flipping Pancakes .
Być może słyszałeś o sortowaniu naleśników , w którym stos naleśników jest sortowany według rozmiaru, wkładając szpachelkę do stosu i przewracając wszystkie naleśniki nad szpachelką, aż naleśniki zostaną posortowane od najmniejszego do największego na talerzu. Problem przypalonego naleśnika jest nieco inny. Wszystkie naleśniki mają teraz jedną stronę, która jest spalona, a strona przypalona każdego naleśnika musi być zwrócona w stronę talerza po zakończeniu sortowania.
Na przykład, biorąc pod uwagę następujący stos (rozmiar naleśnika po lewej stronie. 0
Oznacza spaloną stronę w dół i 1
oznaczenie spalonej strony w górę):
1 0
3 1
2 1
Możesz przewrócić cały stos, aby uzyskać 20 30 11
, przewrócić dwa górne, aby uzyskać, 31 21 11
i przerzucić cały stos ponownie, aby uzyskać 10 20 30
, posortowany stos przypalonych naleśników. Tę sekwencję ruchów, trzepnięcie 3, trzepnięcie 2, trzepnięcie 3, można przedstawić jako 3 2 3
.
Wyzwanie
- Biorąc pod uwagę tablicę rozmiarów naleśników (niekoniecznie unikatowych) i ich orientację, generuj każdą prawidłową sekwencję sortowania spalonego naleśnika, to znaczy sekwencję przewracania, która prowadzi do sortowania stosu naleśników od najmniejszej do największej ze spalonymi bokami w dół.
- Dane wejściowe i wyjściowe mogą być dowolnym rozsądnym formatem z separatorami, ale określ, jakich formatów używasz, i określ, który koniec formatu wejściowego to górna część stosu (TOS).
- Przerzucanie zerowych naleśników jest dozwolone.
- Dozwolone jest mieszanie separatorów na wejściu / wyjściu.
Przypadki testowe
Dla wszystkich poniższych przypadków testowych wejście to lista, a wyjście to ciąg rozdzielony spacjami, a TOS jest po lewej stronie.
[[1, 0], [3, 1], [2, 1]]
"3 2 3"
[[5, 1], [3, 0], [4, 1], [2, 1], [1, 0]]
"5 3 4 1 3 2 1"
[[5, 1], [3, 0], [3, 0], [1, 1]]
"4 3 2 3"
Jak zawsze, jeśli coś jest niejasne lub niepoprawne, daj mi znać w komentarzach. Powodzenia i dobrej gry w golfa!