clojure - Combining two vectors (filling up containers with the contents of several cans) -
मेरे पास दो वैक्टर हैं
(def कंटेनर [{: no 1: volume 10} {: No 2: volume 20}]) (def cans [{: no 1: volume 2} {: no 2: volume 8} {: no 1: volume 5} {: नहीं 2: मात्रा 8}]) मैं कंटेनरों को डिब्बे से भरना चाहूंगा ताकि कुछ ऐसा वापस कर सकें:
[{: no 1: volume 10: cans [ {: नहीं 1: मात्रा 2} {: नहीं 2: मात्रा 8}]} {: नहीं 2: मात्रा 20: केन [{: नहीं 1: मात्रा 5} {: नहीं 2: मात्रा 8}]}] जिससे पता लगाया जा सकता है कि किस कंटेनर में चलाया जा सकता है मैं कम से कम उपयोग करना शुरू कर दिया, लेकिन शेष के डिब्बे पकाने के लिए एक उत्परिवर्तन की दुकान के इस्तेमाल के बिना यह कैसे करना है, उसके बारे में मेरे सिर को नहीं मिल सकता है। किसी भी विचार?
UPDATE भरने से, मेरा अर्थ है पहले कंटेनर में कई डिब्बे में पैक जब तक कि यह पूर्ण नहीं है के कंटेनर के वॉल्यूम से अधिक नहीं हो सकता है), फिर दूसरे कंटेनर को भरना शुरू कर दें जब तक कि यह पूर्ण न हो या जितना करीब हो, और इसी तरह से।
हमें शेष डिब्बे के लिए एक उत्परिवर्तन की दुकान का उपयोग करने की आवश्यकता नहीं है, क्योंकि कमी को एक तर्क के रूप में अनुक्रम होता है, और संचयित समारोह को कम कर देता है, इसे क्रम के प्रत्येक तत्व पर बुलाता है ।
निम्नलिखित में, मैं कंटेनर को भर / भरने में अभी तक अलग नहीं करता, और प्रत्येक कंटेनर में इसे सम्मिलित कर सकता है जिसमें यह सबसे कस योग्य फिट होगा (यह पैकिंग को अनुकूलित करता है)।
उपयोगकर्ता & gt; (डिफ कंटेनर [{: नहीं 1: वॉल्यूम 10} {: नहीं 2: मात्रा 20}]) # 'उपयोगकर्ता / कंटेनर उपयोगकर्ता & gt; (डीफ़ के डिब्बे [{:: 1 नहीं: मात्रा 2} {: नहीं 2: मात्रा 8} {: नहीं 1: मात्रा 5} {: नहीं 2: मात्रा 8}]) # 'उपयोगकर्ता / केन उपयोगकर्ता & gt; (कंटेनर (कंटेनर (मैप # (एशॉक%: क्षमता (: वॉल्यूम%): डिब्बे [] कंटेनर) डालें (एफएन [कंटेनर कर सकते हैं] (- & gt; कंटेनर (अपडेट-इन [: क्षमता] - (: मात्रा) कर सकते हैं) (अपडेट-इन [: केन] कॉंज कर सकते हैं)) संचायक (एफएन [भर भरने] कर सकते हैं] (चलो [[गैर-फिट [चुने गए और अचेत]] (विभाजन के साथ # (& lt; ( (क्षमता:%) (): (सॉर्ट-बाय: क्षमता भरने)) चुना गया (सम्मिलित किया जा सकता है) अभी भी भरना (कॉनटैट गैर-फ़िट नहीं है)] (यदि (& lt; = (: क्षमता चुना गया) 0) [ (चुने गए भरे हुए भरे हुए) अभी भी भरने] [भरा (कॉन्ज अभी भी भरने वाला)])) भरा (संचयक [कंटेनर] के डिब्बे कम करें]] (नक्शा # (Dissoc%: क्षमता) (भरी हुई कॉनटैट लागू करें))) # # उपयोगकर्ता / कंटेनर यूज़र & gt; (क्लोज़र.पीप्रिंट / पीप्रिंट कंटेनरीकृत) ({: केन [{: मात्रा 2,: 1} {: मात्रा 8,: 2}],: मात्रा 10,: नहीं 1} {: डिब्बे [{:: मात्रा 5, : नहीं 1} {: मात्रा 8,: नहीं 2}],: मात्रा 20,: नहीं 2}) शून्य
Comments
Post a Comment