Дана последовательность целых чисел или, если быть более точным, перестановка 0..N
преобразования этой последовательности следующим образом:
- выход [x] = реверс (вход [вход [x]])
- повторение
Например: [2,1,0]становится [0,1,2]и наоборот есть [2,1,0]. [0,2,1]становится [0,1,2]и обратное [2,1,0].
Пример 1
In: 0 1 2
S#1: 2 1 0
S#2: 2 1 0
Output: 1
Пример 2
In: 2 1 0
S#1: 2 1 0
Output: 0
Пример 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
Пример 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
Ваша задача - определить функцию (или программу), которая принимает перестановку целых чисел 0..Nи возвращает (или выводит) количество шагов, пока не произойдет перестановка, которая уже произошла. Если Xпреобразуется в, Xто выход должен быть нулевым, если Xпреобразуется в Yи Yв X(или Y), то выход должен быть 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
Если ваш язык не поддерживает «функции», вы можете предположить, что последовательность задана в виде списка целых чисел, разделенных пробелами, таких как 0 1 2или 3 1 0 2в одной строке.
Забавные факты:
- последовательность 0,1,2,3, .., N всегда преобразуется в N, ..., 3,2,1,0
- последовательность N, .., 3,2,1,0 всегда преобразуется в N, .., 3,2,1,0
- последовательность 0,1,3,2, ..., N + 1, N всегда преобразуется в N, ..., 3,2,1,0
Бонусное задание : выяснить математическую формулу.
Необязательные правила :
- Если первый индекс вашего языка равен 1 вместо 0, вы можете использовать перестановки
1..N(вы можете просто добавить один к каждому целому числу в примере и тестовых случаях).
3,0,1,2должен преобразовать в2,3,0,1