Alice và Bob thích chơi một trò chơi bài, với một bộ bài được đánh số với các số nguyên không âm liên tiếp.
Alice có một cách rất đặc biệt để xáo trộn bộ bài, mặc dù. Đầu tiên, cô ấy lấy lá bài trên cùng từ bộ bài và đặt nó ở dưới bộ bài. Sau đó, cô ấy loại bỏ thẻ tiếp theo, và bắt đầu một đống với nó. Sau đó, một lần nữa cô đạp chiếc thẻ trên xuống dưới, và đặt chiếc thẻ trên cùng mới lên đống. Cô ấy lặp đi lặp lại quá trình này cho đến khi cô ấy dọn sạch bộ bài, lúc đó đống đồ là bộ bài mới.
deck | pile
-----------+-----------
3 1 4 0 2 |
1 4 0 2 3 |
4 0 2 3 | 1
0 2 3 4 | 1
2 3 4 | 0 1
3 4 2 | 0 1
4 2 | 3 0 1
2 4 | 3 0 1
4 | 2 3 0 1
| 4 2 3 0 1
4 2 3 0 1 |
Hình 1: Alice thực hiện xáo trộn của mình trên bộ bài 5 lá "3, 1, 4, 0, 2". Mặt sau của thẻ đều hướng về bên trái.
Một ngày nọ, Bob thông báo anh sẽ nghỉ một tuần. Alice, không có ai để chơi trò chơi, mở rộng bạn của cô ấy đêm giao thừa. Bây giờ, Eve là một kẻ lừa đảo không biết xấu hổ, vì vậy khi cô nhìn thấy sự xáo trộn kỳ lạ của Alice, cô nhận ra rằng mình có thể xếp chồng lên boong trước để tạo lợi thế cho mình!
Khi Eve về nhà sau ngày đầu tiên, cô ấy thực hiện một số phân tích về trò chơi và nhận ra rằng tỷ lệ cược tốt nhất của cô ấy là khi các thẻ theo thứ tự 0, 1, 2, 3, 4, 5, ... Cô ấy đã không Tuy nhiên, hãy nắm bắt có bao nhiêu thẻ trong bộ bài, vì vậy cô ấy ấp ra một sơ đồ có hình chữ nhật để viết một số mã trên cánh tay của mình, khi chạy, sẽ lấy kích thước của bộ bài và hiển thị thứ tự mà Eve cần đặt các thẻ vào, để khi nào Alice xáo trộn bộ bài, bộ bài cuối cùng theo thứ tự 0, 1, 2, 3, ...
Nó không thực sự quan trọng với Eve ngôn ngữ đó là gì (cô ấy biết tất cả), hoặc liệu mã có phải là một hàm lấy một số nguyên và trả về một mảng hay một chương trình đầy đủ lấy đầu vào thông qua một đối số dòng lệnh hoặc STDIN và viết kết quả vào STDOUT. Cô ấy, tuy nhiên, cần mã càng ngắn càng tốt, để giảm thiểu khả năng Alice nhìn thấy nó và bắt được cô ấy.
Vô đạo đức như nó có thể, các bạn có thể giúp Eve ra ngoài?
Ví dụ đầu vào và đầu ra:
in out
1 0
2 0 1
5 2 4 0 3 1
10 2 9 4 8 0 7 3 6 1 5
52 6 51 25 50 12 49 24 48 1 47 23 46 11 45 22 44 5 43 21 42 10 41 20 40 2 39 19
38 9 37 18 36 4 35 17 34 8 33 16 32 0 31 15 30 7 29 14 28 3 27 13 26
shuffle(shuffle(range(5))) == range(5)
...