Bir tamsayı dizisi verildiğinde veya daha spesifik olmak gerekirse, 0..N
bu diziyi aşağıdaki gibi dönüştürmek için bir permütasyon :
- çıkış [x] = geri (giriş [giriş [x]])
- tekrar et
Örneğin: [2,1,0]olur [0,1,2]ve tersine çevrilir [2,1,0]. [0,2,1]olur [0,1,2]ve tersine döner [2,1,0].
örnek 1
In: 0 1 2
S#1: 2 1 0
S#2: 2 1 0
Output: 1
ÖRNEK 2
In: 2 1 0
S#1: 2 1 0
Output: 0
ÖRNEK 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
Örnek 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
Göreviniz, tamsayıların permütasyonunu alan 0..Nve daha önce meydana gelen bir permütasyon gerçekleşene kadar adım sayısını döndüren (veya çıktılar) bir fonksiyon (veya program) tanımlamaktır . Eğer Xdönüşümler için Xdaha sonra çıkış sıfır olması gerekiyorsa bu Xdönüştürmeler Yve Yetmek X(ya da Y) daha sonra çıkış 1 olmalıdır.
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
Diliniz "işlevleri" desteklemiyorsa, dizinin tek satırda 0 1 2veya 3 1 0 2tek satırda boşlukla ayrılmış tamsayı listesi olarak verildiğini varsayabilirsiniz .
Eğlenceli gerçekler:
- 0,1,2,3, .., N dizisi her zaman N, ..., 3,2,1,0'a dönüşecektir
- N, .., 3,2,1,0 dizisi her zaman N, .., 3,2,1,0 değerine dönüşür
- 0,1,3,2, ..., N + 1, N dizisi her zaman N, ..., 3,2,1,0'a dönüşecektir
Bonus görevi : Matematiksel bir formül bulun.
İsteğe bağlı kurallar :
- Dilinizin ilk dizini 0 yerine 1 ise permütasyonları kullanabilirsiniz
1..N(örnek ve test senaryolarındaki her tam sayıya bir tane ekleyebilirsiniz).
3,0,1,2dönüştürmek gerekir2,3,0,1