Bei einer gegebenen Folge von ganzen Zahlen oder genauer gesagt einer Permutation der 0..N
Transformation lautet diese Folge wie folgt:
- ausgang [x] = rückwärts (eingang [eingang [x]])
- wiederholen
Zum Beispiel: [2,1,0]wird [0,1,2]und umgekehrt ist [2,1,0]. [0,2,1]wird [0,1,2]und umgekehrt [2,1,0].
Beispiel 1
In: 0 1 2
S#1: 2 1 0
S#2: 2 1 0
Output: 1
Beispiel 2
In: 2 1 0
S#1: 2 1 0
Output: 0
Beispiel 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
Beispiel 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
Ihre Aufgabe ist es, eine Funktion (oder ein Programm) zu definieren, die eine Permutation von ganzen Zahlen verwendet 0..Nund die Anzahl der Schritte zurückgibt (oder ausgibt), bis eine bereits aufgetretene Permutation auftritt. Wenn zu Xtransformiert wird, sollte Xdie Ausgabe Null sein. Wenn Xzu Yund Yzu X(oder Y) transformiert wird, sollte die Ausgabe 1 sein.
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
Testfälle:
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
Wenn Ihre Sprache keine "Funktionen" unterstützt, können Sie davon ausgehen, dass die Sequenz als durch Leerzeichen getrennte Liste von Ganzzahlen wie 0 1 2oder 3 1 0 2in einer einzelnen Zeile angegeben wird.
Wissenswertes:
- Die Folge 0,1,2,3, .., N wird immer in N, ..., 3,2,1,0 transformiert
- Die Folge N, .., 3,2,1,0 wird immer in N, .., 3,2,1,0 transformiert
- Die Folge 0,1,3,2, ..., N + 1, N wird immer zu N, ..., 3,2,1,0 transformiert
Bonusaufgabe : Finde eine mathematische Formel heraus.
Optionale Regeln :
- Wenn der erste Index Ihrer Sprache 1 anstelle von 0 ist, können Sie Permutationen verwenden
1..N(Sie können jeder Ganzzahl im Beispiel und in den Testfällen einfach eine hinzufügen).
3,0,1,2sollte sich zu2,3,0,1