অভিন্ন উপাদানগুলির মধ্যে সর্বাধিক রান


24

এটি আর কংয়ের দ্বারা মুছে ফেলা প্রশ্নের এখন একটি পর্যালোচনা । যদি সেই প্রশ্নের ওপি এই প্রশ্নটি পুনরায় দাবি করতে চায় বা আমার এই পোস্ট করতে কোনও সমস্যা হয় তবে আমি আনন্দিত হতে পারি

সংখ্যার তালিকা হিসাবে ইনপুট হিসাবে দেওয়া হয় একই ধরণের মান দিয়ে শুরু এবং শেষ হয় এমন একটানা সাবস্টিস্টের সর্বাধিক সম্ভাব্য যোগফলটি সন্ধান করে। সাবলিস্টগুলি কমপক্ষে 2 দৈর্ঘ্যের হতে হবে example উদাহরণস্বরূপ তালিকার জন্য

[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.
নিকো ন্যারিহ

@ নিকোনিয়ার এটি 17 হতে হবে
গম উইজার্ড

সিসি বিওয়াই / এসএর জন্য হুরারে। আপনার অন্য কোনও ব্যক্তির ডেরিভেটিভ প্রশ্ন পোস্ট করার অধিকার রয়েছে, যদিও এটি পরে সম্প্রদায়ের সদস্যরা দ্বারা পতাকা চিহ্নিত করা হবে। আমি কেবল এই ব্লগ পোস্টটি পেয়েছি বলে মনে হয় আপনারা ওপি'র পৃষ্ঠায় একটি লিঙ্ক যুক্ত করা উচিত । "৩. প্রতিটি প্রশ্নের উত্তরের জন্য লেখকের নামগুলি দেখান [...] ৪. প্রতিটি লেখকের নাম সোর্স সাইটে সরাসরি তাদের ব্যবহারকারীর প্রোফাইল পৃষ্ঠায় ফিরে যান" - মুছে ফেলা প্রশ্নগুলি দেখার আমার কোনও অধিকার নেই, তাই আমি ডোন না জানি না যে আসলটি কে তৈরি করেছে।
মাইন্ডউইন

@ মাইন্ডউইন ধন্যবাদ, আমি অপের পৃষ্ঠায় একটি লিঙ্ক যুক্ত করেছি। আমি এটিকে মূলত ছেড়ে দিয়েছি কারণ আমি অনুভব করেছি যে ওপি যদি তাদের পোস্ট মুছে ফেলে তবে তারা প্রশ্নের সাথে যুক্ত হওয়া এড়াতে চাইতে পারে।
গম উইজার্ড 16

মোছার কারণটি অপ্রাসঙ্গিক এবং সাধারণ ব্যবহারকারী (আমার) কাছে স্বচ্ছ নয়। তবে এট্রিবিউশনটি অপ্ট-আউট ধরণের। লাইসেন্স জমা দেওয়ার এবং সম্মতি দিয়ে তারা এই শর্তগুলির অধীনে আমাদের সেই অধিকারগুলি দিয়েছিল। এর বাইরে যে কোনও কিছু ব্যতিক্রম। GJ।
মাইন্ডউইন

উত্তর:


9

হাস্কেল , 62 বাইট

f পূর্ণসংখ্যার একটি তালিকা নেয় এবং পূর্ণসংখ্যা ফেরত দেয়।

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

এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে

  • tData.List.tailsকার্যকারিতা " আমদানি না করে তালিকার সমস্ত প্রত্যয় পান" মান ।
  • ইন f l, তালিকার বোধগম্য lপ্রথম উপাদান xএবং বাকী অংশ সহ আর্গুমেন্ট তালিকার সমস্ত খালি খালি প্রত্যয়গুলির মাধ্যমে পুনরাবৃত্তি করে m
  • প্রত্যেকের জন্য, এটি mপ্রথম উপাদানটি yএবং বাকীটি বাছাই করে সমস্ত অযৌক্তিক প্রত্যয়গুলির জন্য একই কাজ করে n
  • যদি xএবং yসমান হয় তবে তালিকাটি বোঝার মধ্যে তাদের মধ্যে উপাদানগুলির যোগফল অন্তর্ভুক্ত রয়েছে। এই সাবলিস্টটি x:mপ্রত্যয়টি nপ্রত্যাহার মতোই , সুতরাং যোগফলটি গণনা করা যায় x+sum m-sum n

8

জাভাস্ক্রিপ্ট (ES6), 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- আইএমএইচও কোডটি তাদের সাথে বিনিময় করা হওয়ার সাথে কিছুটা স্পষ্ট হবে, তখন থেকে এটিকে সাধারণ গল্ফের মতো দেখাচ্ছে (x += y) < m || y != a[i]
নীল

@ নীল আমি আপনার বক্তব্যটি দেখতে পাচ্ছি তবে ঠিক তেমনি (x+=y)<m|y-a[i]ভুল ব্যাখ্যাও করা যেতে পারে (x+=y)<(m|y-a[i])। আমি নিশ্চিত নই যে এটি সত্যই অস্পষ্টতা দূর করবে। (যেভাবেই হোক আমি সম্পাদনা করেছি কারণ আমি এই সংস্করণটিকে পছন্দ করি))
আর্নল্ড

ভাল, যে ধরে নেয় যে তারা would অপব্যাখ্যা করে না 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সর্বোচ্চ গ্রহণ করে takes

"if"সতর্কবার্তা একটি গুচ্ছ তুলবে কিন্তু তারা নিরাপদে উপেক্ষণীয় হয় - শ্রেষ্ঠ golfing কৌতুক যে সম্ভবত এখানে 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 বাইট
হল্ভার্ড হুমেল

@ হালওয়ার্ডহুমেল ৮ বাইট ব্যবহার করে enumerate
জোনাথন ফ্রেচ

ডেনিস আউটগল্ফড - সত্য, আপনি কি আশা করেছিলেন?
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার আমি তার সমাধান পেতে পারতাম, তবে আমি ঘুমাতে গিয়েছিলাম :(
ফ্লিপট্যাক



1

জেলি , 11 বাইট

চ্যালেঞ্জ পরবর্তী তারিখের কিছু বৈশিষ্ট্য ব্যবহার করে।

Ẇµ.ịEȧḊµƇ§Ṁ

এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে?

..ỊEȧḊµƇ§Ṁ || পুরো প্রোগ্রাম। সিএলএ থেকে ইনপুট নেয়, স্টপ আউটপুট।
Ẇ || Sublists।
 । µƇ || ফিল্টার রাখুন
    ȧḊ || ... যার দৈর্ঘ্য কমপক্ষে 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

Clojure, 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"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.