Một tập hợp domino bao gồm các ô có hai số trên đó sao cho mọi tổ hợp số nguyên từ 0 đến N được biểu diễn. Các ví dụ dưới đây đề cập đến N = 6 vì sự tiện lợi, nhưng N = 9 và N = 12 cũng phổ biến. Hướng của gạch không quan trọng (chúng thường được in bằng dấu chấm chứ không phải chữ số), vì vậy [1-6]
và [6-1]
tham chiếu đến cùng một ô, trong đó chỉ có một trong một tập hợp.
Hầu hết các trò chơi được chơi với domino liên quan đến việc người chơi thay phiên nhau thêm domino vào một dòng của những người đã chơi trên bàn, sao cho một trong những số trên domino mới được đặt liền kề với cùng một số ở một đầu của dòng trên bàn. Do đó, bạn có thể thêm một [2-5]
đầu vào của một dòng hiện có [2-3][3-3][3-5]
, sản xuất [5-2][2-3][3-3][3-5]
hoặc [2-3][3-3][3-5][5-2]
.
Nhiều trò chơi như vậy đòi hỏi "nhân đôi", những quân cờ có hai số giống nhau trên chúng, được đặt vuông góc với các quân domino khác được kết nối với chúng. Ngoài việc ghi điểm mà chúng tôi không quan tâm ở đây, điều này không có tác dụng gì ngoại trừ khi ...
Nhiều trò chơi trong số đó sau đó cho phép "đường" rẽ nhánh ở một số hoặc tất cả gấp đôi. Five Up là một trò chơi như vậy trong đó dòng có thể rẽ thành 3 dòng mới ở mỗi đôi, vì vậy tất cả bốn cạnh của một đôi có thể có một domino phù hợp kèm theo.
Dưới đây là cách bố trí ví dụ về domino từ bộ "double 6" trong trò chơi Five Up (trong đó A | B hoặc AB là một domino duy nhất):
4
-
0
3|0 0|0 0|2
0
-
1
4|1 1|1 1|6
3
1 -
- 6
5
6
6|5 5|5 5|0 0|6 - 6|2 2|1
6
5
- 6
4 -
4
Nhiệm vụ của bạn là lấy một danh sách các quân cờ theo thứ tự chúng được thêm vào bảng và xác định xem thứ tự này có đại diện cho một trò chơi hợp pháp của Five Up hay không.
Bạn có thể viết toàn bộ chương trình lấy đầu vào từ stdin hoặc một hàm lấy đầu vào là một hoặc nhiều tham số.
Đầu vào Canonical sẽ là một danh sách hoặc một mảng gồm hai bộ số nguyên. Một danh sách các danh sách, mảng các mảng, vectơ của bộ dữ liệu, v.v ... đều là các dạng hợp lệ để lấy đầu vào, như là một chuỗi đại diện cho bất kỳ chuỗi nào ở trên hoặc nhiều chuỗi. Đầu vào sẽ chỉ chứa các cặp số nguyên không âm, domino hợp lệ.
Đầu ra phải là một giá trị trung thực hoặc falsey, cho các trò chơi hợp lệ và không hợp lệ tương ứng.
Mã của bạn nên chấp nhận số domino lớn tùy ý, trong khả năng của các giá trị nguyên tối đa của ngôn ngữ của bạn.
Ví dụ:
0-6
là hợp lệ, như bất kỳ domino duy nhất khác0-6 6-0
không hợp lệ, chỉ có một0-6
domino trong một bộ6-6 6-5 5-3 3-0
là hợp lệ, một sự sắp xếp tuyến tính đơn giản6-6 6-5 3-0 5-3
không hợp lệ, không có3
hoặc0
chơi để domino thứ ba kết nối với trước khi5-3
được chơi1-1 1-2 1-3 1-4 1-5 1-6
không hợp lệ, tất cả bốn1
kết thúc mở được sử dụng hết không để kết nối1-6
1-1 1-2 1-3 1-4 1-5 3-6 1-6
là hợp lệ, 3-6 kết nối với 1-3, sau đó 1-6 có thể kết nối với 3-65-5 5-4 5-0 0-6 6-6 6-4 6-2 2-1 6-3 5-1 1-1 1-6 4-1 1-0 0-0 2-0 3-0 0-4
là hợp lệ, ví dụ minh họa ở trên12-12 12-1 3-12 3-1 1-2 3-3
là hợp lệ, sử dụng domino lớn hơn và có một vị trí mơ hồ
LƯU Ý: Chức năng được yêu cầu ở đây không phải là một kiểm tra hoàn hảo cho các trò chơi Five Up hợp lệ. Chúng tôi đang bỏ qua ở đây các quy tắc về việc domino nào được chơi trước, sẽ yêu cầu thêm thông tin về biến thể của trò chơi và số lượng người chơi, và sẽ loại bỏ một số lượng đáng kể đầu vào.