कोड की डली
यह एक काल्पनिक स्थिति है जहां यह है शुक्रवार शाम है, और आपने अपने पसंदीदा शौक: कोड गोल्फिंग में भाग लेने के लिए सामान्य गोल्फिंग मित्रों को आमंत्रित किया है। हालाँकि, जैसा कि यह एक मस्तिष्क-जल निकासी कार्य है, आपको समूह के लिए कुछ मस्तिष्क भोजन लेने की आवश्यकता है ताकि आप अपने कोड से जितना संभव हो उतना गोल्फ कर सकें।
अब, हर किसी का पसंदीदा स्नैक चिकन नगेट्स है, लेकिन एक समस्या है: उनमें से एक भी पैक नहीं है जो हर किसी की जरूरतों को कवर करता है। इसलिए, चूंकि आप पहले से ही गोल्फ के मूड में हैं, इसलिए आप एक ऐसा प्रोग्राम बनाने का निर्णय लेते हैं, जो सभी के नगेट की जरूरतों को पूरा करने में सक्षम होने के लिए आपको जो पैक खरीदना चाहिए।
चिकन नगेट पैक का आकार सभी जगह होता है, और आप दुनिया में कहां रहते हैं, इसके आधार पर, मानक आकार भी बदलते हैं। हालाँकि, निकटतम [वह जगह जो सोने की डली परोसती है] स्टॉक के निम्न आकार के नगेट्स पैक:
4, 6, 9, 10, 20, 40
अब आप देख सकते हैं कि आप कुछ विशेष नगेट्स के संयोजन का आदेश नहीं दे सकते। उदाहरण के लिए, 11डली संभव नहीं है, क्योंकि कोई संयोजन नहीं है जो 11बिल्कुल समान है। हालाँकि, आप 431 पैक 20, 1 पैक 10, 1 पैक 9और 1 पैक प्राप्त करके बना सकते हैं 4,
20 + 10 + 9 + 4 = 43 (597)
जहां 597प्रत्येक शब्द को चुकता किया गया है और एक साथ जोड़ा गया है (संकेत: इष्टतम समाधान में यह उच्चतम मूल्य है) । निश्चित 43रूप से बनाने के अन्य तरीके हैं , लेकिन जैसा कि आप जानते हैं, प्रति पैक जितना अधिक सोने का डला है, उतना सस्ता यह प्रति डली मिल जाता है। इसलिए, आप अपनी लागत को कम से कम करने के लिए आदर्श रूप से कम से कम पैक और सबसे बड़ी मात्रा में खरीदना चाहते हैं।
काम
आपको एक प्रोग्राम या फ़ंक्शन बनाना चाहिए जो प्रत्येक व्यक्ति की आवश्यकताओं के अनुरूप पूर्णांक की एक सूची लेता है। आपको चिकन नगेट्स खरीदने के लिए सबसे अधिक लागत प्रभावी α ऑर्डर की गणना और प्रिंट करना चाहिए । सबसे अधिक लागत प्रभावी α आदेश संयोजन है जिसके द्वारा प्रत्येक मात्रा के वर्गों का योग सबसे अधिक है। यदि पूरी तरह से सोने की डली खरीदने का कोई तरीका नहीं है, तो आपको एक नकली मूल्य प्रिंट करना होगा जैसे ,0FalseImpossible! अपनी भाषा में, या , ।
उदाहरण I / O:
[2 7 12 4 15 3] => [20 10 9 4]
1, 1, 2, 1 => False
6 5 5 5 5 5 9 => 40
[6, 4, 9] => 9 10
1 => 0
199 => 40, 40, 40, 40, 20, 10, 9
2 => Impossible!
यहां पहले 400 के लिए आदर्श समाधानों की सूची दी गई है। ध्यान दें कि ये प्रारूपित नहीं हैं कि मैं आपसे कैसे उम्मीद करूंगा कि प्रत्येकtuple फॉर्म में है (N lots of M)।
नियम
- कोई मानक खामियां नहीं हैं।
- अंतर्निहित कार्यों का कोई उपयोग नहीं जो सभी या अधिकांश कार्य करते हैं, जैसे कि
FrobeniusSolveगणितज्ञ।
α - एक उदाहरण के साथ इसे स्पष्ट करने के लिए, आप 43 बनाकर भी कर सकते हैं 4 + 6 + 6 + 9 + 9 + 9 = 43 (319), लेकिन यह इष्टतम नहीं होगा, और इस तरह एक गलत आउटपुट, क्योंकि वर्गों का योग उस संयोजन से कम है जो मैंने परिचय में नोट किया था। अनिवार्य रूप से, वर्गों का उच्च योग = कम लागत = सबसे अधिक लागत कुशल।