Wszyscy uwielbiają zagnieżdżone listy! Czasami jednak trudno jest utworzyć listę zagnieżdżoną. Musisz zdecydować, czy chcesz zagnieżdżać go głębiej, czy też chcesz zagnieżdżać go płytko. Aby podjąć wyzwanie, musisz „Autonestować” listę. Aby automatycznie przetestować listę, porównaj każdą parę elementów na liście.
Jeśli drugi element jest mniejszy, rozdziel dwa elementy, wstawiając między nimi klamry zamykające i otwierające:
} { {2 , 1}
Na przykład
{2, 1}
staje się{2}, {1}
i{3, 2, 1}
staje{3}, {2}, {1}
Jeśli drugi element jest taki sam, nic nie zmieniaj. Na przykład
{1, 1, 1}
pozostaje taki sam i{2, 1, 1, 1}
stałby się{2}, {1, 1, 1}
.Jeśli drugi element jest większy, zagnieżdż każdy następny element o jeden poziom głębiej. Na przykład
{1, 2}
stałby się{1, {2}}
i{1, 2, 3}
stałby się{1, {2, {3}}}
Wyzwanie
Musisz napisać program lub funkcję, która pobiera listę liczb i zwraca tę samą listę po automatycznym przetestowaniu. Weź to wejście w formacie natywnej listy języków (lub najbliższej alternatywy) lub jako ciąg. Nie musisz używać nawiasów klamrowych, jak ja w moich przykładach. Możesz użyć dowolnego rodzaju nawiasów, który jest najbardziej naturalny w twoim języku, o ile jest to spójne. Możesz bezpiecznie założyć, że lista będzie zawierać tylko liczby całkowite. Możesz również założyć, że lista będzie zawierać co najmniej 2 liczby. Oto kilka przykładowych IO:
{1, 3, 2} --> {1, {3}, {2}}
{1, 2, 3, 4, 5, 6} --> {1, {2, {3, {4, {5, {6}}}}}}
{6, 5, 4, 3, 2, 1} --> {6}, {5}, {4}, {3}, {2}, {1}
{7, 3, 3, 2, 6, 4} --> {7}, {3, 3}, {2, {6}, {4}}
{7, 3, 1, -8, 4, 8, 2, -9, 2, 8} --> {7}, {3}, {1}, {-8, {4, {8}, {2}, {-9, {2, {8}}}}}
Obowiązują standardowe luki, a najkrótsza odpowiedź w bajtach wygrywa!
[-100, 100]
ale nie planuję dawać gigantycznych danych wejściowych.
{2, 1}
staje się {2}, {1}
” Jak to jest, że jeden poziom wyżej ? Byłby o jeden poziom wyżej {2}, 1
. To, co masz, to ten sam poziom.