Một Faro ngẫu nhiên là một kỹ thuật thường xuyên được sử dụng bởi các nhà ảo thuật để "shuffle" một boong. Để thực hiện xáo trộn Faro, trước tiên bạn cắt boong thành 2 nửa bằng nhau sau đó bạn xen kẽ hai nửa. Ví dụ
[1 2 3 4 5 6 7 8]
Faro xáo trộn là
[1 5 2 6 3 7 4 8]
Điều này có thể được lặp đi lặp lại bất kỳ số lần. Thật thú vị, nếu bạn lặp lại đủ số lần này, bạn sẽ luôn trở lại mảng ban đầu. Ví dụ:
[1 2 3 4 5 6 7 8]
[1 5 2 6 3 7 4 8]
[1 3 5 7 2 4 6 8]
[1 2 3 4 5 6 7 8]
Lưu ý rằng 1 ở phía dưới và 8 ở trên cùng. Điều đó làm cho điều này một shuffle bên ngoài . Đây là một dấu hiệu đặc biệt quan trọng.
Các thách thức
Cho một mảng các số nguyên A và một số N , xuất ra mảng sau khi N Faro xáo trộn. A có thể chứa các phần tử lặp lại hoặc phủ định, nhưng nó sẽ luôn có số phần tử chẵn. Bạn có thể giả sử mảng sẽ không trống. Bạn cũng có thể giả sử rằng N sẽ là một số nguyên không âm, mặc dù nó có thể là 0. Bạn có thể lấy các đầu vào này theo bất kỳ cách hợp lý nào. Câu trả lời ngắn nhất bằng byte thắng!
Kiểm tra IO:
#N, A, Output
1, [1, 2, 3, 4, 5, 6, 7, 8] [1, 5, 2, 6, 3, 7, 4, 8]
2, [1, 2, 3, 4, 5, 6, 7, 8] [1, 3, 5, 7, 2, 4, 6, 8]
7, [-23, -37, 52, 0, -6, -7, -8, 89] [-23, -6, -37, -7, 52, -8, 0, 89]
0, [4, 8, 15, 16, 23, 42] [4, 8, 15, 16, 23, 42]
11, [10, 11, 8, 15, 13, 13, 19, 3, 7, 3, 15, 19] [10, 19, 11, 3, 8, 7, 15, 3, 13, 15, 13, 19]
Và, một trường hợp thử nghiệm lớn:
23, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
Nên đầu ra:
[1, 30, 59, 88, 18, 47, 76, 6, 35, 64, 93, 23, 52, 81, 11, 40, 69, 98, 28, 57, 86, 16, 45, 74, 4, 33, 62, 91, 21, 50, 79, 9, 38, 67, 96, 26, 55, 84, 14, 43, 72, 2, 31, 60, 89, 19, 48, 77, 7, 36, 65, 94, 24, 53, 82, 12, 41, 70, 99, 29, 58, 87, 17, 46, 75, 5, 34, 63, 92, 22, 51, 80, 10, 39, 68, 97, 27, 56, 85, 15, 44, 73, 3, 32, 61, 90, 20, 49, 78, 8, 37, 66, 95, 25, 54, 83, 13, 42, 71, 100]