Étant donné une séquence d'entiers ou pour être plus spécifique une permutation de 0..N
transformer cette séquence comme suit:
- sortie [x] = inverse (entrée [entrée [x]])
- répéter
Par exemple: [2,1,0]devient [0,1,2]et inversé est [2,1,0]. [0,2,1]devient [0,1,2]et inversé [2,1,0].
Exemple 1
In: 0 1 2
S#1: 2 1 0
S#2: 2 1 0
Output: 1
Exemple 2
In: 2 1 0
S#1: 2 1 0
Output: 0
Exemple 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
Exemple 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
Votre tâche consiste à définir une fonction (ou un programme) qui accepte une permutation d'entiers 0..Net renvoie (ou génère) le nombre d'étapes jusqu'à ce qu'une permutation se produise déjà. Si se Xtransforme en Xalors la sortie doit être nulle, Si se Xtransforme en Yet Yvers X(ou Y) alors la sortie doit être 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
Testcases:
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 votre langue ne prend pas en charge les "fonctions", vous pouvez supposer que la séquence est donnée sous forme de liste séparée par des espaces d'espaces tels que 0 1 2ou 3 1 0 2sur une seule ligne.
Faits amusants:
- la séquence 0,1,2,3, .., N se transformera toujours en N, ..., 3,2,1,0
- la séquence N, .., 3,2,1,0 se transformera toujours en N, .., 3,2,1,0
- la séquence 0,1,3,2, ..., N + 1, N se transformera toujours en N, ..., 3,2,1,0
Tâche bonus : trouver une formule mathématique.
Règles optionnelles :
- Si le premier index de votre langue est 1 au lieu de 0, vous pouvez utiliser des permutations
1..N(vous pouvez simplement ajouter un à chaque entier dans l'exemple et les cas de test).
3,0,1,2devrait se transformer en2,3,0,1