এটি একটি জটিল কিন্তু অত্যন্ত আকর্ষণীয় গণিত বিষয় ( "কাভারিং সমস্যা" নামে পরিচিত ),
এবং এটি বাস্তবায়নের জন্য আপনার সহায়তা চাই।
একটি লটারি গেমটি কল্পনা করুন, যেখানে প্রতিটি টিকিটকে অবশ্যই 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)
ধন্যবাদ!