Це досить складний, але дуже цікавий математичний предмет (відомий як "висвітлення проблеми" ),
І я хотів би, щоб ваша допомога була реалізована.
Уявіть лотерейну гру, де кожен квиток повинен вибрати 5 випадкових чисел у наборі з 50 номерів (від 1 до 50).
Досить легко дізнатися ймовірність виграшного квитка або ймовірність мати 1, 2, 3 або 4 хороші числа.
Також досить просто "генерувати" всі квитки, які мають 1, 2, 3, 4 хороших числа.
Моє запитання (і виклик коду) пов'язане з цим, але дещо інакше:
Я хочу придбати кілька лотерейних квитків (найменше можливих), наприклад, принаймні один з моїх квитків має 3 хороші номери.
Виклик
Ваша мета - реалізувати загальне рішення (як програму або просто функцію), як це, будь-якою мовою:
// Input: 3 prameters
min_lottery_tickets(total_numbers_to_choose_from, how_many_numbers_to_choose, how_many_good_numbers_i_want)
Для наведеного вище прикладу потрібно було б просто зателефонувати:
min_lottery_tickets(50, 5, 3)
і програма створить найменший набір квитків, які потрібно грати для досягнення цієї мети.
Приклад:
min_lottery_tickets(10, 5, 2)
видасть 7 квитків, як-от такі:
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
адже таких квитків достатньо для покриття будь-якої пари номерів від 1 до 10.
Вихідні дані
Текст, один рядок за квитком, таблиці або пробіли між номерами
хто виграє
Виграє найефективніша програма (тобто програма, що генерує найменші квитки за вказаними вище параметрами):
min_lottery_tickets(50, 5, 3)
Дякую!