चुनौती को चुनौती 6: परिवहन डॉक relabeling!


9

<< पिछला अगला >>

PPCG समुदाय के लिए धन्यवाद, सांता परिवहन डॉक में जाने के लिए अपने आदेशों को सही क्रम में क्रमबद्ध करने में कामयाब रहे। दुर्भाग्य से, परिवहन डॉक संकेत टूट गए हैं, इसलिए वह नहीं जानता कि सभी प्रस्तुतियां कहां रखी जाएं! प्रस्तुत सभी को एक साथ वर्गीकृत किया गया है न कि उनकी सीमाओं के अनुसार, जिसे सांता स्वीकार करता है कि यह एक बेहतर विचार है।

अब, सॉर्ट किए गए क्रम में प्रस्तुत किए गए, सभी संभव न्यूनतम श्रेणी कॉन्फ़िगरेशन निर्धारित करते हैं जिसके परिणामस्वरूप वर्तमान सही क्रम में होगा। यही है, सभी न्यूनतम श्रेणी कॉन्फ़िगरेशन ढूंढें जैसे कि चैलेंज # 5 में एल्गोरिदम के अनुसार प्रस्तुत किए गए सॉर्टिंग क्रम को नहीं बदलते हैं।

चुनौती

एक न्यूनतम श्रेणी कॉन्फ़िगरेशन पर्वतमाला की एक सूची है जैसे कि सीमाएं प्रत्येक के रूप में संभव के रूप में छोटी हैं। यही है, यदि कोई सीमा प्रस्तुत की एक विशेष सबसेट को कवर करने के लिए निर्दिष्ट की जाती है, तो न्यूनतम और अधिकतम सीमा को उपसमुच्चय के समान होना चाहिए। दूसरे शब्दों में, किसी भी रेंज को कवर में सिकोड़ने से यह कवर नहीं रह जाएगा।

चुनौती सभी संभावित न्यूनतम श्रेणी विन्यासों को ढूंढना है जो वर्तमान आकारों पर लागू होंगे। आइए एक उदाहरण लेते हैं:[3, 1, 2, 5, 4, 7, 6]

एक तुच्छ मामला है, जो पूरे वर्तमान विन्यास की सीमा को लेना है। इस मामले में, [[1, 7]]एक समाधान होगा।

अद्वितीय तत्वों वाले उदाहरणों के लिए, एक और तुच्छ मामला होगा [[3], [1], [2], [5], [4], [7], [6]](क्योंकि श्रेणियों को ऑर्डर करने की आवश्यकता नहीं है)।

इस उदाहरण के लिए, हम भी है कि देखने [[1, 3], [4, 7]]और [[1, 3], [4, 5], [6, 7]]करने के साथ ही, काम करेगा [[1, 3], [5], [4], [6, 7]]और [[1, 3], [4, 5], [7], [6]]

के लिए अंतिम उत्तर [3, 1, 2, 5, 4, 7, 6]होगा [[[3], [1], [2], [5], [4], [7], [6]], [[3], [1], [2], [5], [4], [6, 7]], [[3], [1], [2], [4, 5], [7], [6]], [[3], [1], [2], [4, 5], [6, 7]], [[3], [1], [2], [4, 7]], [[3], [1, 2], [5], [4], [7], [6]], [[3], [1, 2], [5], [4], [6, 7]], [[3], [1, 2], [4, 5], [7], [6]], [[3], [1, 2], [4, 5], [6, 7]], [[3], [1, 2], [4, 7]], [[1, 3], [5], [4], [7], [6]], [[1, 3], [5], [4], [6, 7]], [[1, 3], [4, 5], [7], [6]], [[1, 3], [4, 5], [6, 7]], [[1, 3], [4, 7]], [[1, 5], [7], [6]], [[1, 5], [6, 7]], [[1, 7]]]

स्वरूपण विनिर्देशों

इनपुट को किसी भी उचित प्रारूप में आपकी भाषा की उचित समर्थित संख्या सीमा के भीतर सकारात्मक पूर्णांकों की एक फ्लैट सूची के रूप में दिया जाएगा। इनपुट में डुप्लिकेट तत्व हो सकते हैं। आउटपुट को किसी भी उचित प्रारूप में सकारात्मक पूर्णांक की 3 डी सूची के रूप में दिया जाना चाहिए।

आपके आउटपुट में प्रत्येक श्रेणी (जो दूसरी परत पर है) का प्रतिनिधित्व या तो किया जा सकता है [min, max], [num]यदि यह एकल-मूल्य सीमा है, या संपूर्ण सीमा के रूप में है, लेकिन आपका आउटपुट प्रारूप सुसंगत होना चाहिए। कृपया निर्दिष्ट करें कि क्या आप थोड़ा अलग उचित आउटपुट स्वरूप का उपयोग करना चाहते हैं।

डुप्लिकेट मान आउटपुट में एकल श्रेणी द्वारा कवर किया जाना चाहिए; अर्थात्, आउटपुट में कोई दो श्रेणियां कोई भी ओवरलैप नहीं हो सकती हैं।

आपका समाधान किसी भी क्रम में सीमाओं को वापस कर सकता है और इसके लिए नियतात्मक होना आवश्यक नहीं है।

नियम

  • स्टैंडर्ड लोफॉल्स लागू होते हैं
  • ये है तो बाइट्स में सबसे छोटा जवाब जीत जाता है
  • कोई उत्तर स्वीकार नहीं किया जाएगा

डुप्लीकेट तत्वों की सूची के लिए टेस्ट केस:

2 3 2 4 -> [[[2, 3], [4]], [[2, 4]]]

संदर्भ कार्यान्वयन

हैडर लिंक है।

नोट: मैंने इस चुनौती श्रंखला के लिए Advent of Code से प्रेरणा ली । मेरा इस साइट से कोई जुड़ाव नहीं है

आप यहां पहली चुनौती के 'लिंक्ड' सेक्शन को देखकर श्रृंखला की सभी चुनौतियों की सूची देख सकते हैं ।

हैप्पी गोल्फिंग!

जवाबों:



3

ब्रेकीलॉग , 17 16 बाइट्स

{~c⟨⌋⟦₂⌉⟩ᵐ.c≠∧}ᶠ

डुप्लिकेट के साथ सूचियों पर भी काम करता है। रंगों का प्रतिनिधित्व उन तत्वों की सूची द्वारा किया जाता है जिनमें वे होते हैं। इसे ऑनलाइन आज़माएं!

व्याख्या

यह विचार है कि सूची को खंडों में विभाजित किया जाए और खंडों को श्रेणियों में परिवर्तित किया जाए, फिर सत्यापित करें कि वे ओवरलैप नहीं हैं।

{~c⟨⌋⟦₂⌉⟩ᵐ.c≠∧}ᶠ  Input is a list.
{             }ᶠ  Compute all possible outputs for this predicate:
 ~c                Break the list into contiguous blocks.
   ⟨    ⟩ᵐ         For each block,
    ⌋  ⌉           take its minimum and maximum,
     ⟦₂            and create the range between them.
          .        This is the output.
           c       Also, if you concatenate the output,
            ≠      its elements are distinct.
             ∧     Prevent the interpreter from thinking this is also the output.

1

जावास्क्रिप्ट (ईएस 6), 166 164 बाइट्स

संपादित करें: अद्यतन संस्करण जो अब डुप्लिकेट का समर्थन करता है

[मिनट, अधिकतम] प्रारूप में सीधे कंसोल को परिणाम प्रिंट करता है।

f=(a,r=[],l=0)=>a[l++]?f([...a],r,l,f(a,[...r,[Math.min(...x=a.splice(0,l)),Math.max(...x)]])):a[0]|r.some(([x,y],i)=>r.some(([z])=>i--&&z>=x&z<=y))||console.log(r)

परीक्षण के मामलों


0

पायथन 2 , 179 बाइट्स

lambda l:[l for l in[[range(min(x),max(x)+1)for x in P]for P in p(l)]if len(sum(l,[]))==len(set(sum(l,[])))]
p=lambda l:[[l[:i]]+a for i in range(1,len(l))for a in p(l[i:])]+[[l]]

इसे ऑनलाइन आज़माएं!

पूरी श्रृंखला की सूची तैयार करता है।

संदर्भ कार्यान्वयन से भारी प्रेरित।

सभी विभाजन बनाता है, फिर प्रत्येक विभाजन के लिए न्यूनतम / अधिकतम की श्रेणियाँ। यदि कोई मूल्य सूची में एक से अधिक बार प्रकट होता है, तो श्रेणियों की एक सूची मान्य होती है।


sum(l,[]) सूची की एक सूची को समतल करता है, और मुझे डुप्लिकेट की जांच करने की अनुमति देता है:

l=[[1, 2], [2, 3]]
sum(l,[]) = [1,2,2,3]
len([1,2,2,3] == len(set([1,2,2,3]))  -> False (duplicates)

0

पायथ , 17 बाइट्स

f{IsTmm}hSkeSkd./

यहाँ कोशिश करो!

अब यह बहुत बेहतर है। पूरे रेंज को आउटपुट करता है। पिछले संस्करण के लिए संशोधन इतिहास देखें (एक चौंका देने वाला 31 बाइट्स पर)।

यह काम किस प्रकार करता है

f {IsTmm} hSkeSkd./ ~> पूरा कार्यक्रम।

               ./ ~> सूची विभाजन।
     m ~> एक चर d का उपयोग कर नक्शा।
      md ~> एक चर k का उपयोग करके d पर मानचित्र।
        hSk ~> k का न्यूनतम।
           eSk ~> k की अधिकतम।
       } ~> समावेशी पूर्णांक रेंज।
f ~> फ़िल्टर उन ...
   sT ~> जो, ​​जब चपटा,
 {मैं ~> समर्पण पर अपरिवर्तनीय हैं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.