Dada una secuencia de enteros o, para ser más específicos, una permutación de 0..N
transformar esta secuencia de la siguiente manera:
- salida [x] = reversa (entrada [entrada [x]])
- repetir
Por ejemplo: se [2,1,0]convierte [0,1,2]y se invierte es [2,1,0]. [0,2,1]se convierte [0,1,2]y se invierte [2,1,0].
Ejemplo 1
In: 0 1 2
S#1: 2 1 0
S#2: 2 1 0
Output: 1
Ejemplo 2
In: 2 1 0
S#1: 2 1 0
Output: 0
Ejemplo 3
In: 3 0 1 2
S#1: 1 0 3 2
S#2: 3 2 1 0
S#3: 3 2 1 0
Output: 2
Ejemplo 4
In: 3 0 2 1
S#1: 0 2 3 1
S#2: 2 1 3 0
S#3: 2 0 1 3
S#4: 3 0 2 1
Output: 3
Su tarea es definir una función (o programa) que tome una permutación de enteros 0..Ny devuelva (o produzca) el número de pasos hasta que ocurra una permutación que ya ha ocurrido. Si se Xtransforma a, Xentonces la salida debería ser cero, si se Xtransforma a Yy Yhacia X(o Y), entonces la salida debería ser 1.
Y -> Y: 0 steps
Y -> X -> X: 1 step
Y -> X -> Y: 1 step
A -> B -> C -> D -> C: 3 steps
A -> B -> C -> D -> A: 3 steps
A -> B -> C -> A: 2 steps
A -> B -> C -> C: 2 steps
A -> B -> C -> B: also 2 steps
Casos de prueba:
4 3 0 1 2 -> 0 3 4 1 2 -> 4 3 2 1 0 -> 4 3 2 1 0: 2 steps
4 3 2 1 0 -> 4 3 2 1 0: 0 steps
4 3 1 2 0 -> 4 1 3 2 0 -> 4 3 2 1 0 -> 4 3 2 1 0: 2 steps
1 2 3 0 4 -> 4 1 0 3 2 -> 0 3 4 1 2 -> 4 3 2 1 0 -> 4 3 2 1 0: 3 steps
5 1 2 3 0 4 -> 0 5 3 2 1 4 -> 1 5 3 2 4 0 -> 1 4 3 2 0 5 ->
5 1 3 2 0 4 -> 0 5 3 2 1 4: 4 steps
Si su idioma no admite "funciones", puede suponer que la secuencia se da como una lista separada de espacios enteros en blanco, como 0 1 2o 3 1 0 2en una sola línea.
Hechos graciosos:
- la secuencia 0,1,2,3, .., N siempre se transformará en N, ..., 3,2,1,0
- la secuencia N, .., 3,2,1,0 siempre se transformará en N, .., 3,2,1,0
- la secuencia 0,1,3,2, ..., N + 1, N siempre se transformará en N, ..., 3,2,1,0
Tarea adicional : averiguar una fórmula matemática.
Reglas opcionales :
- Si el primer índice de su idioma es 1 en lugar de 0, puede usar permutaciones
1..N(puede agregar uno a cada número entero en el ejemplo y en los casos de prueba).
3,0,1,2debe transformar a2,3,0,1