Дано послідовність цілих чисел або, якщо бути більш конкретною перестановку, 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
Тести:
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