Diberikan urutan bilangan bulat atau untuk lebih spesifik permutasi 0..N
mengubah urutan ini sebagai berikut:
- output [x] = mundur (input [input [x]])
- ulang
Misalnya: [2,1,0]menjadi [0,1,2]dan terbalik adalah [2,1,0]. [0,2,1]menjadi [0,1,2]dan terbalik [2,1,0].
Contoh 1
In: 0 1 2
S#1: 2 1 0
S#2: 2 1 0
Output: 1
Contoh 2
In: 2 1 0
S#1: 2 1 0
Output: 0
Contoh 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
Contoh 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
Tugas Anda adalah mendefinisikan fungsi (atau program) yang mengambil permutasi bilangan bulat 0..Ndan mengembalikan (atau menampilkan) jumlah langkah hingga permutasi terjadi yang telah terjadi. Jika Xmentransformasikan ke Xmaka output harus nol, Jika Xmentransformasikan ke Ydan Yke X(atau Y) maka output harus 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
Jika bahasa Anda tidak mendukung "fungsi" Anda dapat mengasumsikan bahwa urutan diberikan sebagai daftar bilangan bulat terpisah spasi putih seperti 0 1 2atau 3 1 0 2pada satu baris.
Fakta menyenangkan:
- urutan 0,1,2,3, .., N akan selalu berubah menjadi N, ..., 3,2,1,0
- urutan N, .., 3,2,1,0 akan selalu berubah menjadi N, .., 3,2,1,0
- urutan 0,1,3,2, ..., N + 1, N akan selalu berubah menjadi N, ..., 3,2,1,0
Tugas bonus : Mencari tahu rumus matematika.
Aturan opsional :
- Jika indeks pertama bahasa Anda adalah 1 bukannya 0, Anda dapat menggunakan permutasi
1..N(Anda bisa menambahkan satu ke setiap integer dalam contoh dan testcases).
3,0,1,2harus berubah menjadi2,3,0,1