Giới thiệu
Dobble / SpotIt là một trò chơi bài, trong đó mọi người phải phát hiện cùng một biểu tượng trên cặp thẻ trong thời gian ngắn nhất, chỉ ra nó và chuyển sang cặp tiếp theo. Mỗi thẻ có nhiều ký hiệu (8 trong phiên bản bình thường), nhưng chính xác một ký hiệu chung giữa mỗi cặp thẻ.
Ví dụ từ bản sao vật lý của trò chơi:
Thử thách
Viết một chương trình, trong đó đưa ra các ký hiệu (ký tự ascii đơn) và số lượng ký hiệu trên một thẻ sẽ tạo ra các thẻ liệt kê đầu ra với các ký hiệu cho mỗi thẻ. Rõ ràng có nhiều kết hợp tương đương, chương trình của bạn chỉ cần viết bất kỳ kết hợp nào tạo ra số lượng thẻ lớn nhất cho đầu vào đã cho.
Nó là một golf-code, vì vậy mã ngắn hơn, tốt hơn.
Sẽ thật tuyệt nếu tính toán sẽ kết thúc trước cái chết nóng của vũ trụ đối với trường hợp phức tạp nhất.
Đầu vào
Hai đối số cho hàm / stdin (sự lựa chọn của bạn)
Đầu tiên chúng là tập hợp các ký hiệu, đại loại như 'ABCDE "hoặc [' A ',' B ',' C ',' D ',' E '] - lựa chọn định dạng của bạn, có thể là chuỗi, bộ, danh sách, luồng hoặc bất cứ điều gì là thành ngữ cho ngôn ngữ lựa chọn. Các ký tự sẽ được cung cấp từ bộ [A-Za-z0-9], không trùng lặp (vì vậy kích thước tối đa của bộ ký hiệu đầu vào là 62). Chúng sẽ không được sắp xếp theo thứ tự ( vì vậy bạn cũng có thể nhận được "yX4i9A" cho trường hợp 6 ký hiệu).
Đối số thứ hai là số nguyên, biểu thị số lượng ký hiệu trên thẻ đơn. Nó sẽ <= hơn kích thước của bộ ký hiệu.
Đầu ra
In nhiều dòng cách nhau bởi dòng mới, mỗi dòng chứa ký hiệu cho một thẻ.
Ví dụ
ABC
2
>>>>
AB
BC
AC
Hoặc là
ABCDEFG
3
>>>>
ABC
BDE
CEF
BFG
AEG
CDG
ADF
Hoặc là
ABCDE
4
>>>>
ABCD
Gợi ý
- Số lượng thẻ được sản xuất không thể lớn hơn số lượng ký hiệu riêng biệt và trong nhiều kết hợp, nó sẽ nhỏ hơn đáng kể
- Bạn có thể muốn đọc lên một số nền tảng toán học nếu bạn cần trợ giúp về mặt toán học của vấn đề
Đây là thử thách chơi gôn mã đầu tiên của tôi, vì vậy xin vui lòng tha thứ cho các vấn đề có thể xảy ra với định dạng / kiểu - tôi sẽ cố gắng sửa lỗi nếu bạn chỉ ra chúng trong các nhận xét.
('abcdefghijklmnopqrstu', 5)
-> ['abcde', 'afghi', 'ajklm', 'anopq', 'arstu', 'bfjnr', 'bgkpt', 'bhlou', 'bimqs', 'cfkqu', 'cgjos', 'chmpr', 'cilnt', 'dfmot', 'dglqr', 'dhkns', 'dijpu', 'eflps', 'egmnu', 'ehjqt', 'eikor']
hoặc một số giải pháp làm việc 21 thẻ khác. (Lưu ý rằng đây là mặt phẳng hữu hạn chiếu của bậc 4).