Đây là một câu đố lập trình cho bạn:
Ví dụ [[A,37],[B,27],[C,21],[D,11],[E,10],[F,9],[G,3],[H,2]]
, đưa ra một danh sách các cặp chuỗi và số tương ứng, hãy đưa ra một danh sách khác sẽ chỉ có các chuỗi theo cách sau:
Tổng số của bất kỳ chuỗi nào phải chính xác bằng số tương ứng của nó trong dữ liệu đầu vào.
Không có chuỗi nào được lặp lại liên tục trong chuỗi và mỗi chuỗi sẽ xuất hiện trong danh sách đầu ra.
Việc lựa chọn chuỗi tiếp theo nên được thực hiện ngẫu nhiên miễn là chúng không vi phạm trên hai quy tắc. Mỗi giải pháp nên có xác suất khác không được chọn.
Nếu không có sự kết hợp nào là có thể, thì đầu ra chỉ là
0
.
Danh sách đầu vào có thể được đưa ra theo bất kỳ thứ tự nào (được sắp xếp hoặc chưa được sắp xếp) và các chuỗi trong danh sách có thể có độ dài bất kỳ.
Đầu ra mẫu cho đầu vào mẫu trên 1
[A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,G,H,G,H,G]
Mẫu đầu vào 2:
[[A,6],[B,1],[C,1]]
Đầu ra cho đầu vào thứ hai:
0
vì không có danh sách có thể dựa trên các quy tắc.
Mẫu đầu vào 3:
[[AC,3],[BD,2]]
đầu ra hợp lệ: [AC,BD,AC,BD,AC]
đầu ra không hợp lệ: [AC,BD,AC,AC,BD]
Nếu cần làm rõ thêm, xin vui lòng, đừng ngần ngại cho tôi biết trong các ý kiến và tôi sẽ nhanh chóng hành động phù hợp.
Đây là mã golf , vì vậy mã ngắn nhất tính theo byte cho mỗi ngôn ngữ sẽ thắng!