Zdefiniuj sekwencję poprzedzającą-dołączającą długości, n
która będzie permutacją liczb, 1, 2, ..., n
które można wygenerować za pomocą następującej procedury:
Zacznij od numeru
1
.Dla każdej liczby od
2
don
, umieść ten numer na początku lub na końcu sekwencji (albo prepend lub dołączenia go, stąd nazwa sekwencji).
Na przykład jest to prawidłowy sposób generowania sekwencji poprzedzającej-dołączającej o długości 4:
1
21 [beginning]
213 [end]
2134 [end]
Twoim zadaniem jest zbudowanie programu lub funkcji, która pobierze liczbę n
od 3
do 30
jako dane wejściowe, i wydrukuje lub zwróci wszystkie sekwencje długości przed dodaniem-dołączeniem w kolejności n
leksykograficznej (jeśli wyprowadzasz ciągi, a nie listy, liczby powyżej 9 będą reprezentowane jako litery a-u
, aby zachować długość łańcucha). Na przykład jest to kolejność dla n = 4
:
1234 [RRR]
2134 [LRR]
3124 [RLR]
3214 [LLR]
4123 [RRL]
4213 [LRL]
4312 [RLL]
4321 [LLL]
Zasadniczo istnieją 2 n-1 permutacje-dopisywanie długości n
.
W kodzie nie można używać żadnych wbudowanych funkcji sortujących w swoim języku. Najkrótszy program do wykonania tego w dowolnym języku wygrywa.
a-u
. Czy możemy po prostu wypisywać listy liczb?