बाद में बढ़ने में विभाजन


16

विशिष्टता

यह चुनौती सरल है: आपका इनपुट नॉन-नेटिव पूर्णांकों का एक गैर-रिक्त सरणी है, और आपका कार्य संभव के रूप में कुछ बढ़ते बाद में इसे विभाजित करना है। औपचारिक रूप से, यदि इनपुट ऐरे है A, तो आउटपुट एरे का एक सरणी है Bजैसे:

  • प्रत्येक सरणियों में Bविभाजन का विभाजन होता Aहै (आवश्यक रूप से सन्निहित नहीं) परवर्ती। अनिच्छा से, इसका मतलब यह है कि या तो Bसिंगलटन ऐरे से युक्त है A, या Bइसके बाद का पहला तत्व है Aऔर शेष उस विभाजन के Aसाथ एक विभाजन का निर्माण करता है।
  • हर सरणी में Bहै (जरूरी नहीं कि सख्ती से) बढ़ रही है।
  • में सरणियों की संख्या Bन्यूनतम है।

इनपुट और आउटपुट दोनों को आपकी भाषा के मूल सरणी प्रारूप में लिया जा सकता है। ध्यान दें कि कई सही आउटपुट हो सकते हैं।

उदाहरण

इनपुट सरणी पर विचार करें A = [1,2,1,2,5,4,7,1]। एक संभावित उत्पादन है B = [[1],[1,2,4,7],[1,2,5]]। इस आरेख से विभाजन की स्थिति स्पष्ट है:

A    1 2 1 2 5 4 7 1
B[0]               1
B[1] 1 2       4 7
B[2]     1 2 5

साथ ही, प्रत्येक सरणी Bबढ़ रही है। अंत में, Aदो बढ़ते क्रमों में विभाजित नहीं किया जा सकता है, इसलिए की लंबाई Bभी न्यूनतम है। इस प्रकार यह एक मान्य आउटपुट है।

नियम और स्कोरिंग

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

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

केवल एक संभावित आउटपुट दिखाया गया है, लेकिन कई वैध विकल्प हो सकते हैं। विशेष रूप से, परिणाम में सरणियों का क्रम मायने नहीं रखता है (लेकिन प्रत्येक व्यक्तिगत सरणी बढ़ते क्रम में होनी चाहिए)।

[0] -> [[0]]
[3,5,8] -> [[3,5,8]]
[2,2,2,2] -> [[2,2,2,2]]
[1154,1012,976,845] -> [[845],[976],[1012],[1154]]
[6,32,1,2,34,8] -> [[1,2,8],[6,32,34]]
[1,12,1,12,1,13] -> [[1,1,1,13],[12,12]]
[6,4,6,13,18,0,3] -> [[0,3],[4,6,13,18],[6]]
[1,2,3,2,3,4,7,1] -> [[1,1],[2,2,3,4,7],[3]]
[0,9,2,7,4,5,6,3,8] -> [[0,2,3,8],[4,5,6],[7],[9]]
[7,1,17,15,17,2,15,1,6] -> [[1,1,6],[2,15],[7,15,17],[17]]
[4,12,2,10,15,2,2,19,16,12] -> [[2,2,2,12],[4,10,15,16],[12,19]]
[10,13,9,2,11,1,10,17,19,1] -> [[1,1],[2,10,17,19],[9,11],[10,13]]
[3,7,3,8,14,16,19,15,16,2] -> [[2],[3,3,8,14,15,16],[7,16,19]]
[15,5,13,13,15,9,4,2,2,17] -> [[2,2,17],[4],[5,9],[13,13,15],[15]]

3
नियम ऐसे समाधान की अनुमति देते हैं [0,5,2,0] -> [[0,5],[0,2]](जैसे, उनमें से प्रत्येक का उपयोग करने के बजाय पहले शून्य को पुन: चक्रित करना)। क्या वह जानबूझकर है?
feersum

@ Faersum यह जानबूझकर, अच्छी पकड़ नहीं थी। मैंने शर्तों के लिए फिर से लिखा है B, उम्मीद है कि वे अब स्पष्ट हो गए हैं।
जर्बद डे

जवाबों:


3

हास्केल, 54 बाइट्स

n#[]=[[n]]
n#(l:c)|[n]<=l=(n:l):c|1<2=l:n#c
foldr(#)[]

उपयोग का उदाहरण: foldr(#)[] [4,12,2,10,15,2,2,19,16,12]->[[2,2,2,12],[4,10,15,16],[12,19]]

यह कैसे काम करता है: दाईं ओर से शुरू होने वाली इनपुट सूची पर जाएं। वर्तमान सूची nको पहले सबलिस्ट में lजहां nसिर के बराबर या उससे कम है, को पूर्व निर्धारित करके आउटपुट सूची (सूचियों का) का निर्माण करें l। यदि कोई नहीं है, तो nआउटपुट सूची के अंत में एक नया सिंगलटन सूची बनाएं ।


1

अजगर, 20 बाइट्स

fTu&ahfSI+THGHGQm[)Q

इसे ऑनलाइन आज़माएँ: प्रदर्शन या टेस्ट सूट

लालची दृष्टिकोण। मैं len(input)खाली सूची बनाता हूं । फिर मैं inputपहली सूची का चयन करने में प्रत्येक संख्या पर पुनरावृति करता हूं , जो संख्या को जोड़ने के बाद भी हल किया जाता है।

स्पष्टीकरण:

fTu&ahfSI+THGHGQm[)Q   implicit: Q = input list
                m[)Q   create a list of empty lists and assign to G
  u            Q       iterate over all numbers H in input:
      f     G             filter for lists T in G, which satisfy:
         +TH                 create a new list out of T and H
       SI                    and check if it is sorted
     h                    take the first such list T
    a        H            and append H
   &          G           logical and with G (so that u doesn't overwrite G)
fT                     remove all empty lists

@ThomasKwa ने अब बहुत सारे अतिरिक्त परीक्षण किए हैं। एक भी नहीं मिला, जो गलत परिणाम देता है। मुझे पूरा यकीन है, कि लालची हमेशा सही परिणाम देता है।
जेकुब

@ThomasKwa ओह, यह प्रतिधारण एक अलग लालची रणनीति के लिए था (सबसे लंबे समय तक बढ़ते रहने के बाद, इसे हटा दें और पुन: प्राप्त करें)। मुझे यह भी पता नहीं लग सकता है कि एक टेस्ट केस जिसके लिए यह सबमिशन फेल है ...
झगरब

खैर, मुझे लगता है कि यह साबित करने के लिए जवाबदाता पर बोझ है। अगर यह वैध साबित होता है, तो मैं उत्थान करूंगा।
lirtosiast
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.