Xáo trộn riffle là một loại xáo trộn trong đó bộ bài được chia thành hai phân vùng và các phân vùng sau đó được ghép lại với nhau để tạo ra một bộ bài xáo trộn mới.
Các thẻ được ghép với nhau theo cách các thẻ duy trì trật tự tương đối của chúng trong phân vùng mà chúng là thành viên . Ví dụ: nếu thẻ A nằm trước thẻ B trong cỗ bài và thẻ A và B nằm trong cùng một phân vùng, thẻ A phải ở trước thẻ B trong kết quả cuối cùng, ngay cả khi số lượng thẻ giữa chúng tăng lên. Nếu A và B ở các phân vùng khác nhau, chúng có thể theo bất kỳ thứ tự nào, bất kể thứ tự bắt đầu của chúng, trong kết quả cuối cùng.
Mỗi shuffle riffle sau đó có thể được xem như là một hoán vị của bộ bài gốc. Ví dụ hoán vị
1,2,3 -> 1,3,2
là một shuffle riffle. Nếu bạn chia boong như vậy
1, 2 | 3
chúng tôi thấy rằng mọi thẻ trong 1,3,2
đều có cùng thứ tự tương tự với mọi thẻ khác trong phân vùng của nó. 2
vẫn là sau 1
.
Mặt khác, hoán vị sau đây không phải là một shuffle riffle.
1,2,3 -> 3,2,1
Chúng ta có thể thấy điều này bởi vì tất cả hai phân vùng (không tầm thường)
1, 2 | 3
1 | 2, 3
có một cặp thẻ không duy trì thứ tự tương đối của chúng. Trong phân vùng đầu tiên 1
và 2
thay đổi thứ tự của họ, trong khi trong phân vùng thứ hai 2
và 3
thay đổi thứ tự của họ.
Tuy nhiên, chúng tôi thấy rằng 3, 2, 1
có thể được thực hiện bằng cách kết hợp hai xáo trộn riffle,
1, 3, 2 + 2, 3, 1 = 3, 2, 1
Trong thực tế, một thực tế khá đơn giản được chứng minh là bất kỳ hoán vị nào cũng có thể được thực hiện khi tôi kết hợp một số số hoán vị xáo trộn riffle.
Bài tập
Nhiệm vụ của bạn là tạo một chương trình hoặc hàm lấy hoán vị (có kích thước N ) làm đầu vào và xuất ra số lượng hoán vị xáo trộn nhỏ nhất (có kích thước N ) có thể được kết hợp để tạo thành hoán vị đầu vào. Bạn không cần phải xuất ra các riffle xáo trộn chính mình có bao nhiêu.
Đây là môn đánh gôn, vì vậy câu trả lời sẽ được tính bằng byte với ít byte hơn.
Bạn có thể xuất 1 hoặc 0 cho hoán vị danh tính.
Các trường hợp thử nghiệm
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
có 2
? Đầu tiên chúng tôi chia ra ở giữa và đạt được 3,1,4,2
và sau đó chúng tôi lại phân chia ở giữa và sử dụng cùng một hoán vị