यह एक बल्कि जटिल लेकिन बहुत ही रोचक गणित विषय (जिसे "समस्या को कवर करना" कहा जाता है ),
और मैं इसे लागू करने के लिए आपकी मदद चाहूंगा।
एक लॉटरी गेम की कल्पना करें, जहां प्रत्येक टिकट को 50 नंबर (1 से 50 तक) के सेट में 5 यादृच्छिक संख्याओं का चयन करना होगा।
जीतने वाले टिकट की संभावना, या 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)
धन्यवाद!