Đây là một môn toán khá phức tạp nhưng rất thú vị (được gọi là "vấn đề bao trùm" ),
Và tôi muốn sự giúp đỡ của bạn để thực hiện nó.
Hãy tưởng tượng một trò chơi xổ số, trong đó mỗi vé phải chọn 5 số ngẫu nhiên trong một bộ gồm 50 số (từ 1 đến 50).
Thật dễ dàng để biết xác suất của một vé chiến thắng, hoặc xác suất để có 1, 2, 3 hoặc 4 số tốt.
Cũng khá dễ dàng để "tạo" tất cả các vé có 1, 2, 3, 4 số tốt.
Câu hỏi của tôi (và thử thách mã) có liên quan đến điều này, nhưng hơi khác:
Tôi muốn mua một số vé số (ít nhất có thể), chẳng hạn như ít nhất một trong số các vé của tôi có 3 số tốt.
Thử thách
Mục tiêu của bạn là triển khai một giải pháp chung (như một chương trình hoặc chỉ là một chức năng), như thế này, bằng bất kỳ ngôn ngữ nào:
// Input: 3 prameters
min_lottery_tickets(total_numbers_to_choose_from, how_many_numbers_to_choose, how_many_good_numbers_i_want)
Đối với ví dụ trên, người ta chỉ cần gọi:
min_lottery_tickets(50, 5, 3)
và chương trình sẽ tạo ra một bộ vé nhỏ nhất để chơi để đạt được mục tiêu này.
Thí dụ:
min_lottery_tickets(10, 5, 2)
sẽ xuất 7 vé, giống như:
1 2 3 4 5
5 6 7 8 9
10 1 2 6 7
10 3 4 8 9
3 4 6 7 8
1 2 3 8 9
1 4 9 5 10
bởi vì vé như vậy là đủ để bao gồm bất kỳ cặp số từ 1 đến 10.
Đầu ra
Văn bản, một dòng trên mỗi vé, bảng hoặc khoảng trắng giữa các số
ai thắng
Chương trình hiệu quả nhất sẽ thắng (tức là chương trình tạo ra ít vé nhất cho các tham số trên):
min_lottery_tickets(50, 5, 3)
Cảm ơn!