Bir riffle shuffle, desteğin iki bölüme ayrıldığı ve daha sonra bölümlerin yeni bir karıştırılmış güverte oluşturmak için tekrar birleştirildiği bir tür shuffle'dır.
Kartlar, üyesi oldukları bölüm içinde göreceli sıralarını koruyacak şekilde birbirine eklenir . Örneğin, A kartı destedeki B kartından önce ve A ve B kartları aynı bölümdeyse, aralarındaki kart sayısı artmış olsa bile A kartı nihai sonuçtaki B kartından önce olmalıdır . Eğer A ve B farklı bölümlere, onlar nihai sonuçta ne olursa olsun başlangıç düzenin, herhangi bir sırada olabilir.
Her bir tüfek karıştırması, orijinal kart destesinin permütasyonu olarak görülebilir. Örneğin permütasyon
1,2,3 -> 1,3,2
bir tüfek shuffle. Eğer güverteyi böyle ayırırsan
1, 2 | 3
içerisindeki her kartın, 1,3,2
bölümündeki diğer tüm kartlarla aynı göreli sıraya sahip olduğunu görüyoruz . 2
hala peşinde 1
.
Öte yandan, aşağıdaki permütasyon fırfırlı bir karıştırma değildir .
1,2,3 -> 3,2,1
Bunu görebiliriz çünkü iki (önemsiz) bölümün tümü için
1, 2 | 3
1 | 2, 3
göreceli sıralamalarını yerine getirmeyen bir çift kart vardır. İlk bölümde 1
ve 2
sıralarını değiştirirken, ikinci bölümde 2
ve 3
sıralarını değiştir.
Ancak bunun 3, 2, 1
iki tüfek karıştırmasıyla yapılabileceğini görüyoruz ,
1, 3, 2 + 2, 3, 1 = 3, 2, 1
Aslında kanıtlanması oldukça basit bir gerçek, bir dizi tüfek shuffle permütasyonunu birleştirerek herhangi bir permütasyon yapılabileceğidir.
Görev
Göreviniz, bir permütasyonu ( N boyutunda ) giriş olarak alan ve giriş permütasyonunu oluşturmak için birleştirilebilen en az sayıda tüfek shuffle permütasyonunu ( N boyutunda ) çıkaran bir program veya işlev yapmaktır . Kaç tane riffle karıştırdığını kendiniz çıkarmanız gerekmez.
Bu kod golftür, bu nedenle cevaplar daha az bayt daha iyi olacak şekilde bayt cinsinden puanlanır.
Kimlik permütasyonu için 1 veya 0 çıktısı alabilirsiniz.
Test Durumları
1,3,2 -> 1
3,2,1 -> 2
3,1,2,4 -> 1
2,3,4,1 -> 1
4,3,2,1 -> 2
4,3,2,1
olmak 2
? Önce ortadan ayrıldık ve kazandık 3,1,4,2
, sonra tekrar ortadan ayrıldık ve aynı permütasyonu kullanıyoruz