एक "छँटाई" एल्गोरिथ्म


33

एक "सॉर्टिंग एल्गोरिथ्म" है जिसे कभी-कभी स्टालिन सॉर्ट कहा जाता है जिसमें एक सूची को सॉर्ट करने के लिए आप सूची से तत्वों को केवल तब तक हटाते हैं जब तक कि यह बढ़ते क्रम में सॉर्ट न हो जाए। उदाहरण के लिए सूची

[1, 2, 4, 5, 3, 6, 6]

जब स्टालिन सॉर्ट का उपयोग करके "सॉर्ट" किया जाता है

[1, 2, 4, 5, 6, 6]

तीनों को हटा दिया गया क्योंकि यह आदेश से बाहर था।

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

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

क्रमबद्ध सूचियाँ एक पंक्ति में एक से अधिक बार एक ही तत्व हो सकती हैं। जब तक आपका प्रोग्राम खुद खाली न हो, आपको खाली सूची का समर्थन करने की आवश्यकता नहीं है।

स्कोरिंग

आपके उत्तर को सबसे लंबे समय तक संभव स्टालिन प्रकार की लंबाई से बनाया जाएगा। कार्यक्रमों को पात्रों के बजाय बाइट्स के अनुक्रम के रूप में व्याख्या किया जाएगा, और उनका क्रम प्राकृतिक होगा जो बाइट्स को संख्याओं के रूप में व्याख्या करके उत्पन्न होता है। कम अंक बेहतर हैं।

यह

यहां आपके जवाब देने में मदद करने के लिए एक साफ-सुथरा उपकरण है।

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

[1, 2, 4, 5, 3, 6, 6] -> 6
[19, 2] -> 1
[3, 3, 4, 3] -> 3
[10] -> 1
[1, 2, 4, 9] -> 4
[1, 90, 2, 3, 4, 5] -> 5
[1, 90, 91, 2, 3, 4, 5] -> 5

3
संक्षेप में: सबसे लंबे (गैर-सख्ती से) बढ़ते अनुक्रम की लंबाई का उत्पादन ।
15:20 बजे user202729

1
मुझे नियम पसंद है "आपको खाली सूची का समर्थन करने की आवश्यकता नहीं है जब तक कि आपका कार्यक्रम स्वयं खाली न हो।"
पाओलो एबरमन

यह चुनौती मुझे कई बूंदों की
Stefnotch

1
मैंने ptpb.pw/SVSt.html पर एक चेकर बनाया । अभी भी बहुत कार्यात्मक नहीं है, लेकिन यह काम करता है। (TODO: * बार चार्ट * विभाजन कम से कम घटते क्रम में * अन्य कोड पेजों के लिए समर्थन)
user202729

@ user202729 कूल! मैंने इसे पोस्ट में जोड़ दिया है। यदि आवश्यक हो तो नए संस्करणों को संपादित करने के लिए स्वतंत्र महसूस करें।
गेहूं जादूगर

जवाबों:


8

अजगर 2 , लंबाई 14 12 10 9

M=max;X=exit;i=input();L=[0]*M(i)
for	a	in	i:L[a-1]=M(L[:a])+1
X(M(L))

आउटपुट निकास कोड के माध्यम से है।

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

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

हर समय, सरणी एल अब तक सामने आई सबसे लंबी छँटनी वाली सबरेज़ का ट्रैक रखता है; एल[-1] सबसे लंबे समय तक की लंबाई है जो एक के साथ समाप्त होती

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

एरे एलिमेंट प्रोसेस करते समय , हम सबसे पहले [एल[0],...,एल[-1]] की अधिकतम सीमा लेते हैं , जो कि अब तक के सबसे लंबे सॉर्ट किए गए सबर्रे की लंबाई है जो एक एरे के साथ समाप्त होता या एक छोटे पूर्णांक के । जोड़ ऐसी एक सरणी के लिए इसे हल कर, तो सबसे लंबे समय तक क्रमबद्ध subarray में समाप्त होने वाले रखेंगे एक तत्व है कि अधिकतम से अधिक है। हम गणना किए गए मान के साथ एल[-1] को अपडेट करते हैं।

अंतिम परिणाम एल का अधिकतम है ।


क्या आप बता सकते हैं कि यह क्यों काम करता है? मुझे इसे समझने में कठिन समय लग रहा है :(
मृत पोसुम

मैंने एक स्पष्टीकरण जोड़ा है।
डेनिस




4

जेली , लंबाई  ४ 

ṢƑƇZLƲ}ŒP

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

जेली के कोड पृष्ठ में बाइट्स

183 146 144 90 76 169 125 19 80

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

ṢƑƇZLƲ}ŒP  Main link. Argument: A (array)

       ŒP  Powerset; yield P, the array of all sub-arrays of A.
     Ʋ     Vier; combine the preceding four links into a monadic chain...
      }    and apply the chain to the right argument (P).
  Ƈ            Comb; only keep arrays for which the link to the left returns 1.
ṢƑ             Sort fixed; yield 1 if sorting doesn't alter the array.
   Z           Zip; read the filtered powerset by columns.
    L          Take the length.

3

पायथ, स्कोर 3 2 ( 7 बाइट्स)

leSI#y

एंडर्स केसेर्ग के लिए एक बिंदु को बचाया।
इसे यहाँ आज़माएँ

व्याख्या

leSI#y
     yQ    Take the power set of the (implicit) input (preserving order).
  SI#      Get the ones that are sorted.
 e         Take the last (longest).
l          Get the length.

leSI#yस्कोर 2.
एंडर्स केसरग


2

आर , स्कोर 15 11, 72 62 बाइट्स

function(L,M=max,A=1:M(L)*0){for(Y in L)A[Y]=M(A[1:Y])+1;M(A)}

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

पोर्ट्स डेनिस 'पायथन ने आर।


केवल परिवर्तनशील नाम बदलने से मदद नहीं मिलेगी, क्योंकि आपके अंतिम लिंक शो के रूप में, उनमें से किसी का भी उपयोग नहीं किया जाता है (पाया) विकल्प जो कि स्कोर 15. देता है
अर्जन जोहान्सन

@ ,RjanJohansen आह, बेशक, मैं गूंगा हूँ। मुझे लगता है कि एक और दृष्टिकोण आवश्यक है।
ग्यूसेप

2

ब्रेकीलॉग , लंबाई 2 (4 बाइट्स)

⊇≤₁l

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

एक उत्तर जो इतना छोटा क्रमबद्ध नहीं होने के कारण संक्षिप्त होने के लिए बनाता है।

( 08 03 80 6Cब्राचिग्लॉग के कोड पृष्ठ में)

        Output
   l    the length of
 ≤₁     a non-decreasing
⊇       sublist of
        the input.
        (maximizing the size of the sublist)

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