समान तत्वों के बीच अधिकतम रन


24

यह अब कांग द्वारा इस हटाए गए सवाल का एक ओवरहाल है । अगर उस प्रश्न का ओपी इस प्रश्न को पुनः प्राप्त करना चाहेगा या मेरे पास पोस्ट करने में कोई समस्या है तो मुझे समायोजित करने में खुशी होगी

पूर्णांक की एक सूची को देखते हुए इनपुट के रूप में एक निरंतर सबलिस्ट का अधिकतम संभव योग प्राप्त होता है जो उसी मूल्य के साथ शुरू और समाप्त होता है। सब्स्टलिस्ट की लंबाई कम से कम 2 होनी चाहिए। उदाहरण के लिए सूची में

[1, 2, -2, 4, 1, 4]

2 अलग-अलग निरंतर उपविजेता हैं और एक ही मूल्य के साथ शुरू होते हैं

[1,2,-2,4,1] -> 6
[4,1,4]      -> 9

बड़ा योग 9 है इसलिए आप 9 का उत्पादन करते हैं।

आप मान सकते हैं कि हर इनपुट में कम से कम 1 डुप्लिकेट है।

यह इसलिए उत्तर बाइट्स में कम बाइट के साथ बेहतर स्कोर किए जाएंगे।

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

[1,2,-2,4,1,4]  -> 9
[1,2,1,2]       -> 5
[-1,-2,-1,-2]   -> -4
[1,1,1,8,-1,8]  -> 15
[1,1,1,-1,6,-1] -> 4
[2,8,2,-3,2]    -> 12
[1,1,80]        -> 2
[2,8,2,3,2]     -> 17

[2,8,2,3,2]12 या 17 होना चाहिए? मैं 17 को मानता हूं।
निकोनिरह

@NikoNyrh यह 17 होना चाहिए।
गेहूं जादूगर

CC BY / SA के लिए हुर्रे। आपके पास किसी अन्य के व्युत्पन्न प्रश्न को पोस्ट करने का अधिकार है, भले ही बाद में इसे समुदाय के सदस्यों द्वारा डुबो दिया गया हो। ऐसा लगता है कि आपको ओपी के पेज पर एक लिंक जोड़ना चाहिए जैसा कि मुझे इस ब्लॉग पोस्ट से मिला है। 2. "प्रत्येक प्रश्न और उत्तर के लिए लेखक के नाम दिखाएं [...] 4. हाइपरलिंक प्रत्येक लेखक का नाम सीधे स्रोत साइट पर अपने उपयोगकर्ता प्रोफ़ाइल पृष्ठ पर वापस आ जाता है" - मेरे पास हटाए गए प्रश्नों को देखने के लिए विशेषाधिकार नहीं हैं, इसलिए मैं डॉन 'पता नहीं कि मूल किसने बनाया था।
माइंडविन

@Mindwin धन्यवाद, मैंने ओपी के पेज के लिए एक लिंक जोड़ा है। मैंने इसे मूल रूप से छोड़ दिया क्योंकि मुझे लगा कि अगर ओपी ने अपनी पोस्ट को हटा दिया तो वे प्रश्न से जुड़े होने से बचना चाहते हैं।
गेहूं जादूगर

हटाने का कारण अप्रासंगिक है और आम उपयोगकर्ता (मेरे) के लिए पारदर्शी नहीं है। लेकिन एट्रिब्यूशन ऑप्ट-आउट किस्म का है। लाइसेंस जमा करके और सहमति देकर उन्होंने हमें उन शर्तों के तहत उन अधिकारों को प्रदान किया। इसके बाहर कुछ भी एक अपवाद है। जी जे।
माइंडविन

जवाबों:


9

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

f पूर्णांकों की सूची लेता है और पूर्णांक लौटाता है।

f l=maximum[x+sum m-sum n|x:m<-t l,y:n<-t m,x==y]
t=scanr(:)[]

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

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

  • tमानक "आयात किए बिना सूची के सभी प्रत्ययों को प्राप्त Data.List.tailsकरता है"।
  • में f l, सभी तर्क सूची की गैर खाली प्रत्यय के माध्यम से सूची समझ दोहराता l, पहला तत्व के साथ xऔर शेष m
  • प्रत्येक के लिए, यह mपहले तत्व yऔर शेष का चयन करते हुए , सभी गैर-रिक्त प्रत्ययों के लिए समान है n
  • यदि xऔर yसमान हैं, तो सूची की समझ में उनके बीच तत्वों का योग शामिल है। यह सबलिस्ट उसी तरह है जैसे x:mइसका प्रत्यय nछीन लिया गया है, इसलिए राशि की गणना की जा सकती है x+sum m-sum n

8

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

a=>a.map(m=(x,i)=>a.map((y,j)=>m=j<=i||(x+=y)<m|y-a[i]?m:x))|m

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

टिप्पणी की गई

a =>                    // a = input array
  a.map(m =             // initialize m to a function (gives NaN in arithmetic operations)
    (x, i) =>           // for each entry x at position i in a:
    a.map((y, j) =>     //   for each entry y at position j in a:
      m =               //     update m:
        j <= i ||       //       if j is not after i
        (x += y) < m |  //       or the sum x, once updated, is less than m
        y - a[i] ?      //       or the current entry is not equal to the reference entry:
          m             //         let m unchanged
        :               //       else:
          x             //         update m to the current sum
    )                   //   end of inner map()
  ) | m                 // end of outer map(); return m

मैं के आदेश से थोड़ा उलझन में था y - a[i]और (x += y) < m- IMHO कोड उनके साथ थोड़ा स्पष्ट हो जाएगा, तब से यह एक साधारण गोल्फ से दिखता है (x += y) < m || y != a[i]
नील

@ मैं आपकी बात देख रहा हूँ, लेकिन (x+=y)<m|y-a[i]साथ (x+=y)<(m|y-a[i])ही साथ इसका गलत अर्थ भी निकाला जा सकता है । मुझे यकीन नहीं है कि यह वास्तव में अस्पष्टता को दूर कर देगा। (वैसे भी संपादित किया जाता है क्योंकि मैं इस संस्करण को पसंद करता हूं।)
अरनौल्ड

खैर, यह मानता है कि वे गलत व्याख्या नहीं y-a[i]|(x+=y)<mकरेंगे (y-a[i]|(x+=y))<m...
नील

5

जेली , 12 बाइट्स

ĠŒc€Ẏr/€ịḅ1Ṁ

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

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

ĠŒc€Ẏr/€ịḅ1Ṁ  Main link. Argument: A (array)

Ġ             Group the indices of A by their corresponding values.
 Œc€          Take all 2-combinations of grouped indices.
    Ẏ         Dumps all pairs into a single array.
     r/€      Reduce each pair by range, mapping [i, j] to [i, ..., j].
        ị     Index into A.
         ḅ1   Convert each resulting vector from base 1 to integer, effectively
              summing its coordinates.
           Ṁ  Take the maximum.

5

भूसी , 10 बाइट्स

▲mΣfΓ~€;ṫQ

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

व्याख्या

▲mΣfΓ~€;ṫQ  Input is a list, say x=[1,2,-2,4,1,4]
         Q  Slices: [[1],[2],[1,2],..,[1,2,-2,4,1,4]]
   f        Keep those that satisfy this:
    Γ        Deconstruct into head and tail, for example h=2 and t=[-2,4,1]
        ;    Wrap h: [2]
      ~€     Is it an element of
         ṫ   Tails of t: [[-2,4,1],[4,1],[1]]
            Result: [[1,2,-2,4,1],[4,1,4]]
 mΣ         Map sum: [6,9]
▲           Maximum: 9


3

आर , 108 103 90 88 83 बाइट्स

function(l)max(combn(seq(l),2,function(x)"if"(rev(p<-l[x[1]:x[2]])-p,-Inf,sum(p))))

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

combnफिर से स्ट्राईक करें! कम से कम लंबाई के सभी उपखंडों को उत्पन्न 2करता है, -Infयदि पहले और अंतिम बराबर नहीं हैं, तो सबलिस्ट राशि निर्धारित करता है और सभी राशि का अधिकतम लेता है।

"if"चेतावनी के एक झुंड को बढ़ा देंगे, लेकिन वे सुरक्षित रूप से अनदेखा कर रहे हैं - सबसे अच्छा गोल्फ चाल है कि शायद यहाँ, rev(p)-pपहला तत्व है iff में शून्य है p[1]==tail(p,1), और "if"एक चेतावनी के साथ अपनी स्थिति के पहले तत्व का उपयोग करता है।




2

जेली , 13 , 12 बाइट्स

=ṚṖḢ
ẆÇÐfS€Ṁ

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

मिस्टर एक्सकोडर द्वारा सहेजा गया एक बाइट, जो वर्तमान में मुझसे प्रतिस्पर्धा कर रहा है। : डी

स्पष्टीकरण:

        # Helper link:
=Ṛ      # Compare each element of the list to the element on the opposite side (comparing the first and last)
  Ṗ     # Pop the last element of the resulting list (so that single elements return falsy)
   Ḣ    # Return the first element of this list (1 if the first and last are equal, 0 otherwise)

        # Main link:
Ẇ       # Return every sublist
 Ç      # Where the helper link
  Ðf    # Returns true (1)
    S€  # Sum each resulting list
      Ṁ # Return the max


1

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

eSsMf&qhTeTtT.:

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

व्याख्या

eSsMf&qhTeTtT.:
             .:Q  Take all sublists of the (implicit) input.
    f qhTeT       Take the ones that start and end with the same number...
     &     tT     ... and have length at least 2.
  sM              Take the sum of each.
eS                Get the largest.



1

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

डेनिस द्वारा बहिष्कृत

lambda x:max(sum(x[i:j+1])for i,v in enumerate(x)for j in range(i+1,len(x))if v==x[j])

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

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


एक लाम्बा फ़ंक्शन का उपयोग करके 88 बाइट्स
हल्वर्द कैमरें

@HalvardHummel 86 बाइट्स का उपयोग करके enumerate
जोनाथन फ्रीच

डेनिस द्वारा बहिष्कृत - ईमानदारी से, आपको क्या उम्मीद थी?
श्री Xcoder

@ Mr.Xcoder मुझे उसका हल मिल गया होगा, लेकिन मैं सोने चला गया :(
पलटाओ



1

जेली , 11 बाइट्स

कुछ सुविधाओं का उपयोग करता है जो चुनौती के बाद की तारीख देते हैं।

Ẇµ.ịEȧḊµƇ§Ṁ

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

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

ȦḊµƇ§Ṁ.ẆµEẆµ || पूरा कार्यक्रम। CLA से इनपुट लेता है, STDOUT को आउटपुट देता है।
Ẇ || उप-सूचियां।
 µƇ µƇ || फ़िल्टर-उन रखो
    ȧḊ || ... जिसकी लंबाई कम से कम 2 और ...
 । || ... फर्श पर तत्व (0.5) और छत (0.5) (मॉड्यूलर, 1-अनुक्रमित) ...
    ई || ... बराबर हैं।
         § || प्रत्येक योग।
          Ṁ || ज्यादा से ज्यादा।

-1 caird की मदद से ।


0

बैच, 179 बाइट्स

@set s=%*
@set/a"m=-1<<30
:l
@set/at=n=%s: =,%
@set s=%s:* =%
@for %%e in (%s%)do @set/at+=%%e&if %%e==%n% set/a"m+=(m-t)*(m-t>>31)
@if not "%s%"=="%s: =%" goto l
@echo %m%

कमांड-लाइन मापदंडों के रूप में इनपुट लेता है।


0

सी, 104 बाइट्स

i,j,s,l;f(a,n)int*a;{for(i=0,l=1<<31;i<n;++i)for(s=a[j=i];++j<n;l=a[j]-a[i]?l:s>l?s:l)s+=a[j];return l;}

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

सी (जीसीसी) , 99 बाइट्स

i,j,s,l;f(a,n)int*a;{for(i=0,l=1<<31;i<n;++i)for(s=a[j=i];++j<n;l=a[j]-a[i]?l:s>l?s:l)s+=a[j];l=l;}

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


99 बाइट्स , यदि आपको अपरिभाषित व्यवहार पसंद है।
जोनाथन फ्रीच

0

क्लोजर, 92 बाइट्स

#(apply max(for[i(range(count %))j(range i):when(=(% i)(% j))](apply +(subvec % j(inc i)))))

0

जावा 8, 129 बाय

a->a.stream().map(b->a.subList(a.indexOf(b),a.lastIndexOf(b)+1).stream().mapToLong(Long::intValue).sum()).reduce(Long::max).get()

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


मैंने इसका परीक्षण नहीं किया है, लेकिन मुझे ऐसा लग रहा है कि यह [2,8,2,-3,2]परीक्षण के मामले में विफल हो सकता है , और संभवतः [1,1,80]भी।
अर्जन जोहान्सन

0

पर्ल, 61 59 बाइट्स

इसमें शामिल +3हैं -p:

max_ident_run.pl:

#!/usr/bin/perl -p
s:\S+:$%=$&;($%+=$_)<($\//$%)||$_-$&or$\=$%for<$' >:eg}{

ऐसे दोड़ो:

max_ident_run.pl <<< "1 2 -2 4 1 4 1"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.