Définissez une séquence de longueur pré-ajoutée-ajoutéen
comme une permutation des nombres 1, 2, ..., n
pouvant être générés par la procédure suivante:
Commencez par le nombre
1
.Pour chaque numéro de
2
lan
, placez ce numéro au début ou à la fin de la séquence (soit précédez ou append , d' où le nom de la séquence).
Par exemple, c'est un moyen valide pour générer une séquence de pré-ajout-ajout de longueur 4:
1
21 [beginning]
213 [end]
2134 [end]
Votre tâche consiste à créer un programme ou une fonction qui prendra un nombre n
de 3
à 30
en entrée, et à imprimer ou renvoyer toutes les séquences de longueur de pré-ajout-ajout n
dans l'ordre lexicographique (si vous sortez des chaînes et non des listes, les nombres supérieurs à 9 seront représentés sous forme de lettres a-u
, pour conserver la longueur de la chaîne). Par exemple, voici cette commande pour n = 4
:
1234 [RRR]
2134 [LRR]
3124 [RLR]
3214 [LLR]
4123 [RRL]
4213 [LRL]
4312 [RLL]
4321 [LLL]
En général, il existe 2 n-1 permutations de longueur pré-ajoutée-ajoutée n
.
Vous ne pouvez pas utiliser de fonctions de tri intégrées dans votre langue dans votre code. Le programme le plus court pour le faire dans n'importe quelle langue gagne.
a-u
. Pouvons-nous simplement sortir des listes de nombres?