Rod đang điều hành một trò chơi bài giữa hai người chơi: George và Tim. Hiện tại, Tim đang xáo trộn các thẻ. Rod nghi ngờ rằng Tim đang cố gắng gian lận, vì vậy anh ta cần sự giúp đỡ của bạn để kiểm tra xem việc xáo trộn có công bằng không.
Tim đang thực hiện việc xáo trộn quá mức: anh ta cắt một đống thẻ từ dưới boong, sau đó cắt các phần khác nhau từ đỉnh cọc lên trên boong và lặp lại quá trình một vài lần.
Rod có đôi mắt đại bàng và có thể thấy chính xác có bao nhiêu thẻ Tim đang cắt mỗi lần, tuy nhiên anh ta không thể tính toán và theo dõi các thẻ nhanh như Tim đang xáo trộn. Đây là nơi bạn đến: Rod muốn bạn viết một chương trình hoặc chức năng lấy thông tin xáo trộn chi tiết và xác định xem việc xáo trộn là công bằng, yếu hay lừa.
- Nếu sau khi xáo trộn, ít hơn 25 cặp thẻ liền kề vẫn liền kề (theo cùng một thứ tự), thì việc xáo trộn là công bằng và trò chơi có thể tiếp tục.
- Nếu ít nhất 25 (nhưng không phải tất cả) các cặp thẻ liền kề vẫn liền kề nhau, thì việc xáo trộn là yếu và Rod sẽ bon chen Tim qua đầu và yêu cầu anh ta xáo trộn thêm một số.
- Nếu tất cả các thẻ vẫn ở cùng một vị trí ở cuối, thì Tim rõ ràng là gian lận và Rod sẽ đánh anh ta bằng một con cá hồi lớn.
Đây là mã golf, vì vậy mã ngắn nhất sẽ thắng.
Đầu vào:
Bạn sẽ nhận được một chuỗi các số từ 0 đến 52 (cả hai loại) được phân tách bằng dấu cách, trên một số dòng, trong đó mỗi dòng đại diện cho một vòng xáo trộn bắt đầu và kết thúc với tất cả các thẻ được xếp chồng lên nhau.
Trên mỗi dòng, số đầu tiên là số lượng thẻ Tim cắt từ dưới cùng của bộ bài, và mỗi số tiếp theo là một số thẻ anh ta thả từ tay lên trên cỗ bài. Nếu bất kỳ thẻ nào còn lại sau số cuối cùng trên một dòng, bạn nên cho rằng Tim đặt chúng lên trên boong.
Đầu vào được đảm bảo là hợp lệ. Có ít nhất một dòng số và mỗi dòng chứa ít nhất 2 số. Số đầu tiên trên mỗi dòng không nhỏ hơn tổng của tất cả các số khác trên cùng một dòng. Một dòng mới theo dõi là tùy chọn, bạn có thể cho rằng đầu vào có một hoặc nó không có.
Đầu ra:
Chương trình của bạn nên in / trả lại "công bằng" nếu xáo trộn công bằng, "yếu" nếu xáo trộn yếu và "lừa" nếu Tim giữ tất cả các thẻ theo cùng một thứ tự. Một dòng mới theo dõi là tùy chọn.
Thí dụ:
Bộ bài được cho là có 52 lá bài, nhưng với mục đích trình diễn, tôi sẽ sử dụng bộ bài nhỏ hơn gồm 10 lá bài.
Đầu vào:
5 3 1
4 2 2
Boong ban đầu, nhìn từ trên xuống: 0 1 2 3 4 5 6 7 8 9
5
➜ 0 1 2 3 4
( 5 6 7 8 9
trong tay)
3
➜ 5 6 7 0 1 2 3 4
( 8 9
trong tay)
1
➜ 8 5 6 7 0 1 2 3 4
( 9
trong tay)
cuối dòng ➜ 9 8 5 6 7 0 1 2 3 4
4
➜ 9 8 5 6 7 0
( 1 2 3 4
trong tay)
2
➜ 1 2 9 8 5 6 7 0
( 3 4
trong tay)
2
➜ 3 4 1 2 9 8 5 6 7 0
4 cặp còn lại liền kề:(3 4) (1 2) (5 6) (6 7)
Các trường hợp thử nghiệm:
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
Đầu ra: fair
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5
Đầu ra: weak
29 24
19 18
38 2 1 8 13 6 4
47 15 16 5 2 1 7
34 22 9 3
44 9 10 11 3 1 7
33 18 4 2 3 3
Đầu ra: fair
24 6 12 4
25 3 19
36 4 25 2
19 11 1 3
15 9 3
37 5 27
Đầu ra: weak
26 13
26 13
26 13
26 13
Đầu ra: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Đầu ra: weak
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Đầu ra: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
49 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Đầu ra: fair
Yêu cầu:
- Nếu bạn viết một hàm, nó có thể đọc từ đầu vào tiêu chuẩn hoặc nhận đầu vào dưới dạng một tham số chuỗi đơn. Ngoài ra, chức năng có thể in ra đầu ra hoặc trả lại.
- Chương trình phải được chạy trong Linux bằng phần mềm có sẵn miễn phí.
- Mã nguồn chỉ được sử dụng các ký tự ASCII.
- Không có sơ hở tiêu chuẩn.