Lý lịch
Những người xử lý thẻ rất thành thạo có khả năng về một kỹ thuật trong đó họ cắt một bộ bài hoàn hảo làm đôi, sau đó xen kẽ các lá bài một cách hoàn hảo. Nếu họ bắt đầu với một bộ bài được sắp xếp và thực hiện kỹ thuật này hoàn hảo 52 lần liên tiếp, bộ bài sẽ được khôi phục lại theo thứ tự được sắp xếp. Thử thách của bạn là tham gia một cỗ bài một mảng số nguyên và xác định xem nó có thể được sắp xếp chỉ bằng cách xáo trộn Faro hay không.
Định nghĩa
Về mặt toán học, một shuffle Faro là một hoán vị trên 2 n phần tử (đối với bất kỳ số nguyên dương n ) nào đưa phần tử ở vị trí i (được lập chỉ mục 1) đến vị trí 2 i (mod 2 n +1). Chúng tôi cũng muốn có thể xử lý các danh sách có độ dài lẻ, vì vậy, trong trường hợp đó, chỉ cần thêm một yếu tố vào cuối danh sách (một Joker, nếu bạn có một tiện ích) và Faro xáo trộn danh sách mới như trên, nhưng bỏ qua phần tử giả được thêm vào khi kiểm tra thứ tự của danh sách.
Mục tiêu
Viết chương trình hoặc hàm lấy danh sách các số nguyên và trả về hoặc đưa ra sự thật nếu một số số lần xáo trộn Faro sẽ khiến danh sách đó được sắp xếp theo thứ tự không tăng dần (ngay cả khi số đó bằng 0 - các danh sách nhỏ sẽ cho sự thật). Nếu không, trả lại hoặc đầu ra một giả.
Ví dụ
[1,1,2,3,5,8,13,21] => True
[5,1,8,1,13,2,21,3] => True
[9,36,5,34,2,10,1] => True
[1,0] => True
[0] => True
[] => True
[3,2,1] => True
[3,1,2] => False
[9,8,7,6,5,4,3,2,1,0] => True
[9,8,7,6,5,4,3,2,0,1] => False
[3,1,4,1,5,9,2,6,9] => False
[-1,-1,-1,-2] => True
Chấm điểm
Đây là mã golf để nguồn ngắn nhất tính bằng byte thắng.