आपका मिशन एक एल्गोरिथ्म (प्रोग्राम या फ़ंक्शन) का निर्माण करना है जो एक कन्वेयर बेल्ट से फलों को बैग में पैक करके खुदरा विक्रेताओं को भेजा जा सकता है, जो बड़ी संख्या में बैग के लिए अनुकूलन करते हैं।
प्रत्येक बैग को कम से कम एक निश्चित मात्रा में वजन करना पड़ता है, लेकिन किसी भी अतिरिक्त लाभ को खो दिया जाता है क्योंकि उस वजन का उपयोग दूसरे बैग को भरने के लिए किया जा सकता है। आपके बैगिंग मशीन में हमेशा n
कतार से फलों का एक लुक होता है और इनमें से किसी भी n
फल को जोड़ने के लिए चुन सकते हैं (एकल) बैग जिसे संसाधित किया जा रहा है। यह n
कतार में पहले तत्वों से परे नहीं देख सकता है । कार्यक्रम हमेशा जानता है कि बैग में पहले से ही कितना वजन है।
यह कल्पना करने का दूसरा तरीका n
अंत में आकार के लोडिंग क्षेत्र के साथ एक कन्वेयर बेल्ट है , जहां से एक नए फल आने से पहले एक फल लेना होता है। किसी भी बचे हुए फल और अंत में एक गैर-पूर्ण बैग को छोड़ दिया जाता है।
इनपुट
- कतार में फलों के वजन की सूची / सरणी (सकारात्मक पूर्णांक)
- बैग के लिए न्यूनतम कुल वजन (सकारात्मक पूर्णांक)
- लाहदहेड
n
(सकारात्मक पूर्णांक)
उत्पादन
आपके एल्गोरिथ्म को उन सभी फलों के वजन के लिए वापस जाना चाहिए, जो कुछ भी आपके और आपकी भाषा के लिए सुविधाजनक है, स्टैड या रिटर्न वैल्यू या कुछ और। आपको प्रोग्राम चलाने और अपने स्कोर की गणना अपने कंप्यूटर पर एक मिनट में करने में सक्षम होना चाहिए।
उदाहरण
Total weight 1000, lookahead of 3 and fruit queue:
[171,163,172,196,156,175,162,176,155,182,189,142,161,160,152,162,174,172,191,185]
One possible output (indented to show how the lookahead affects the bagging):
[171,163,172, 156,175, 176]
[162, 155,182,189, 161,160]
[152,162,174,172,191,185]
स्कोरिंग
आपके एल्गोरिथ्म को 10000 संतरे के एक बैच पर छह रनों पर परीक्षण किया जाएगा , जो मैंने आपके लिए तैयार किए हैं, दोनों छोरों पर समावेशी, 2 से 7 तक दिखते हैं। आप उन्हें कम से कम 1000 इकाइयों के वजन वाले बैग में पैक करेंगे। संतरे को आमतौर पर 170 के औसत वजन और 13 के मानक विचलन के साथ वितरित किया जाता है, यदि वह किसी भी मदद का हो।
आपका स्कोर छह रनों से बैग की संख्या का योग होगा। सबसे ज्यादा अंक जीते। मानक खामियों को अस्वीकार कर दिया जाता है।
हास्केल में सरल उदाहरण कार्यान्वयन और परीक्षण सूट बॉयलरप्लेट