Biorąc pod uwagę sekwencję liczb całkowitych lub ściślej mówiąc, permutacja 0..N
przekształcenia tej sekwencji w następujący sposób:
- wyjście [x] = bieg wsteczny (wejście [wejście [x]])
- powtarzać
Na przykład: [2,1,0]staje się [0,1,2]i odwrócony jest [2,1,0]. [0,2,1]staje się [0,1,2]i odwraca [2,1,0].
Przykład 1
In: 0 1 2
S#1: 2 1 0
S#2: 2 1 0
Output: 1
Przykład 2
In: 2 1 0
S#1: 2 1 0
Output: 0
Przykład 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
Przykład 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
Twoim zadaniem jest zdefiniowanie funkcji (lub programu), która przyjmuje permutację liczb całkowitych 0..Ni zwraca (lub generuje) liczbę kroków do momentu wystąpienia permutacji, która już wystąpiła. Jeśli Xprzekształca się w, Xwówczas wyjście powinno wynosić zero, Jeśli Xprzekształca się w Yi Ydo X(lub Y), wówczas wyjście powinno wynosić 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
Przypadki testowe:
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
Jeśli Twój język nie obsługuje „funkcji”, możesz założyć, że sekwencja jest podana jako osobna lista liczb całkowitych, takich jak 0 1 2lub 3 1 0 2w jednym wierszu.
Zabawne fakty:
- sekwencja 0,1,2,3, .., N zawsze przekształci się w N, ..., 3,2,1,0
- sekwencja N, .., 3,2,1,0 zawsze przekształci się w N, .., 3,2,1,0
- sekwencja 0,1,3,2, ..., N + 1, N zawsze przekształci się w N, ..., 3,2,1,0
Dodatkowe zadanie : Opracuj wzór matematyczny.
Zasady opcjonalne :
- Jeśli pierwszym indeksem Twojego języka jest 1 zamiast 0, możesz użyć permutacji
1..N(możesz po prostu dodać jeden do każdej liczby całkowitej w przykładzie i testach).
3,0,1,2powinien przekształcić się w2,3,0,1