Defina una secuencia de longitud de anteponer-agregarn
para que sea una permutación de los números 1, 2, ..., n
que se pueden generar mediante el siguiente procedimiento:
Comience con el número
1
.Para cada número de
2
an
, colocar este número al principio o al final de la secuencia (ya sea prepend o append , de ahí el nombre de la secuencia).
Por ejemplo, esta es una forma válida de generar una secuencia de anteponer-agregar de longitud 4:
1
21 [beginning]
213 [end]
2134 [end]
Su tarea es crear un programa o función que tome un número n
de 3
a 30
como entrada, e imprima o devuelva todas las secuencias de longitud de anteponer y agregar n
en orden lexicográfico (si está generando cadenas y no listas, los números superiores a 9 se representarán como letras a-u
, para preservar la longitud de la cadena). Por ejemplo, este es el orden para n = 4
:
1234 [RRR]
2134 [LRR]
3124 [RLR]
3214 [LLR]
4123 [RRL]
4213 [LRL]
4312 [RLL]
4321 [LLL]
En general, hay 2 n-1 antemutaciones de longitud de anexión n
.
No puede usar ninguna función de clasificación incorporada en su idioma en su código. El programa más corto para hacer esto en cualquier idioma gana.
a-u
. ¿Podemos simplemente generar listas de números?