Data una sequenza di numeri interi o, per essere più specifici, una permutazione di 0..N
trasformare questa sequenza come segue:
- output [x] = reverse (input [input [x]])
- ripetere
Ad esempio: [2,1,0]diventa [0,1,2]e è invertito [2,1,0]. [0,2,1]diventa [0,1,2]e si inverte [2,1,0].
Esempio 1
In: 0 1 2
S#1: 2 1 0
S#2: 2 1 0
Output: 1
Esempio 2
In: 2 1 0
S#1: 2 1 0
Output: 0
Esempio 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
Esempio 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
Il tuo compito è definire una funzione (o programma) che accetta una permutazione di numeri interi 0..Ne restituisce (o genera) il numero di passi fino a quando si verifica una permutazione che è già avvenuta. Se si Xtrasforma in Xallora l'uscita dovrebbe essere zero, Se si Xtrasforma in Ye Yin X(o Y) allora l'uscita dovrebbe essere 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
Casi test:
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
Se la tua lingua non supporta le "funzioni", puoi presumere che la sequenza sia data come un elenco separato da spazi di numeri interi come 0 1 2o 3 1 0 2su una sola riga.
Fatti divertenti:
- la sequenza 0,1,2,3, .., N si trasformerà sempre in N, ..., 3,2,1,0
- la sequenza N, .., 3,2,1,0 si trasformerà sempre in N, .., 3,2,1,0
- la sequenza 0,1,3,2, ..., N + 1, N si trasformerà sempre in N, ..., 3,2,1,0
Compito bonus : scopri una formula matematica.
Regole opzionali :
- Se il primo indice della tua lingua è 1 anziché 0, puoi usare le permutazioni
1..N(puoi semplicemente aggiungerne uno a ogni numero intero nell'esempio e nelle prove).
3,0,1,2dovrebbe trasformarsi in2,3,0,1