Définissez une séquence de longueur pré-ajoutée-ajoutéen comme une permutation des nombres 1, 2, ..., npouvant être générés par la procédure suivante:
Commencez par le nombre
1.Pour chaque numéro de
2lan, 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 nde 3à 30en entrée, et à imprimer ou renvoyer toutes les séquences de longueur de pré-ajout-ajout ndans 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?