26 টি ধনী বিলিয়নিয়াররা কি সবচেয়ে দরিদ্র 3.8 বিলিয়ন মানুষের মতো সম্পদের মালিক?


37

পরিচিতি:

কিছু দিন আগে আমি এই পোস্টটি এইচএনকিউতে এসে যখন একই শিরোনাম সহ পড়েছিলাম। এই প্রশ্নে রাষ্ট্রপতি-প্রার্থী বার্নি স্যান্ডার্সের দাবি, যিনি নিম্নলিখিত দাবি করেছেন তা নিয়ে আলোচনা করা হচ্ছে:

আজ বিশ্বের ধনী ২ 26 বিলিয়নেয়ার, ২ 26, এখন গ্রহের সবচেয়ে দরিদ্রতম ৩৮.৮ বিলিয়ন মানুষের সমান সম্পদের মালিক, বিশ্বের জনসংখ্যার অর্ধেক।
ভিডিওতে লিঙ্ক

সত্য বা না। উত্তর এবং সেখানে আলোচনার জন্য দয়া করে প্রশ্নটিতে যান।

এই দাবির উপর ভিত্তি করে প্রকৃত চ্যালেঞ্জ হিসাবে:

চ্যালেঞ্জ:

দুই ইনপুট: একটি সাজানো সাজানো সংখ্যা-তালিকা এবং একটি সংখ্যা (যেখানে হয় )। আউটপুট: দীর্ঘতম সম্ভব প্রত্যয় উপ-তালিকা , যার জন্য মোট সমষ্টি প্রথম এর সমষ্টি তালিকায় মান ।Lnn1n<length of Lএল n এল এর দৈর্ঘ্য 
LnL

উদাহরণ:

ইনপুট: = এবং । আউটপুট:L[500,200,150,150,125,100,75,75,55,50,40,30,30,20,10,10,8,5,5,5,3,2,2,1,0,-2,-3]n=2
[125,100,75,75,55,50,40,30,30,20,10,10,8,5,5,5,3,2,2,1,0,-2,-3]

কেন?

প্রথম তালিকার মান ( করা) সমষ্টি । আমরা যদি বাকী সংখ্যার সমস্ত প্রত্যয়, পাশাপাশি তাদের পরিমাণগুলি গ্রহণ করি:n=2L[500,200]700

Suffix:                                                                  Sum:

[-3]                                                                     -3
[-2,-3]                                                                  -5
[0,-2,-3]                                                                -5
[1,0,-2,-3]                                                              -4
[2,1,0,-2,-3]                                                            -2
[2,2,1,0,-2,-3]                                                          0
[3,2,2,1,0,-2,-3]                                                        3
[5,3,2,2,1,0,-2,-3]                                                      8
[5,5,3,2,2,1,0,-2,-3]                                                    13
[5,5,5,3,2,2,1,0,-2,-3]                                                  18
[5,5,5,5,3,2,2,1,0,-2,-3]                                                23
[10,5,5,5,5,3,2,2,1,0,-2,-3]                                             33
[10,10,5,5,5,5,3,2,2,1,0,-2,-3]                                          43
[20,10,10,5,5,5,5,3,2,2,1,0,-2,-3]                                       63
[30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3]                                    93
[30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3]                                 123
[40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3]                              163
[50,40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3]                           213
[55,50,40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3]                        268
[75,55,50,40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3]                     343
[75,75,55,50,40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3]                  418
[100,75,75,55,50,40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3]              518
[125,100,75,75,55,50,40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3]          643
[150,125,100,75,75,55,50,40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3]      793
[150,150,125,100,75,75,55,50,40,30,30,20,10,10,5,5,5,5,3,2,2,1,0,-2,-3]  943

দীর্ঘতম প্রত্যয় একটি সমষ্টি কম বা সমান যা 700হল [125,100,75,75,55,50,40,30,30,20,10,10,8,5,5,5,3,2,2,1,0,-2,-3]একটি সমষ্টি সঙ্গে 643যাতে আমাদের ফল।

চ্যালেঞ্জ বিধি:

  • প্রথম উপসর্গের মানগুলি আউটপুট-প্রত্যয়ের দিকে গণনা করা হয় না। অর্থাৎ ইনপুটস = এবং ফলাফল হবে এবং না ।nL[10,5,5,3]n=2[5,3][5,5,3]
  • I / O নমনীয়। আপনি ইনপুট করতে পারেন পূর্ণসংখ্যার / দশমিক / স্ট্রিং, একটি একক সীমায়িত স্ট্রিং, এক একটি তালিকা / স্ট্রিম / অ্যারের একের পর stdin মাধ্যমে ইত্যাদি পূর্ণসংখ্যার / দশমিক / স্ট্রিং একটি তালিকা / স্ট্রিম / অ্যারে হিসাবে আউটপুট পাশাপাশি আপনি, একটি ডিলিমিট স্ট্রিং প্রিন্ট / রিটার্ন করুন, প্রতিটি নতুন লাইনে একটি নম্বর প্রিন্ট করুন ইত্যাদি আপনার কল।L
  • আউটপুটটি খালি-খালি থাকার নিশ্চয়তা দেয় is তোমার মত পরীক্ষার বিষয় মোকাবেলা করতে হবে না তাই = এবং ফলে । Lএন = 2[-5,-10,-13]n=2[]
  • উভয় (বা হয়) ইনপুট এবং / অথবা আউটপুটও যদি আপনি চান তবে অবতরণ ক্রমের পরিবর্তে আরোহী ক্রমে থাকতে পারে।

সাধারাইওন রুল:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার পক্ষে যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • আপনার উত্তরটির জন্য ডিফল্ট আই / ও বিধিগুলি সহ মানক বিধিগুলি প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং ফিরতি-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে আপনার কোডের (যেমন টিআইও ) একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন ।
  • এছাড়াও, আপনার উত্তরের জন্য একটি ব্যাখ্যা যুক্ত করা অত্যন্ত প্রস্তাবিত।

পরীক্ষার কেস:

Inputs: L=[500,200,150,150,125,100,75,75,55,50,40,30,30,20,10,10,8,5,5,5,3,2,2,1,0,-2,-3], n=2
Output: [125,100,75,75,55,50,40,30,30,20,10,10,8,5,5,5,3,2,2,1,0,-2,-3]

Inputs: L=[10,5,5,3], n=2
Output: [5,3]

Inputs: L=[7,2,1,-2,-4,-5,-10,-12], n=7
Output: [-12]

Inputs: L=[30,20,10,0,-10,-20,-30], n=1
Output: [20,10,0,-10,-20,-30]

Inputs: L=[100,35,25,15,5,5,5,5,5,5,5,5,5,5,5,5,5], n=1
Output: [15,5,5,5,5,5,5,5,5,5,5,5,5,5]

Inputs: L=[0,-5,-10,-15], n=2
Output: [-10,-15]

Inputs: L=[1000,999,998,900,800,766,525,525,400,340,120,110,80,77,33,12,0,-15,-45,-250], n=2
Output: [525,525,400,340,120,110,80,77,33,12,0,-15,-45,-250]

Inputs: L=[10,5,5], n=1
Output: [5,5]

ভাষাতে কোনও পূর্ণসংখ্যার ধরণের অভাবের কারণে আমি কি এমন একটি উত্তর লিখতে পারি যা কেবল ইতিবাচক (বা সম্ভবত সংক্রামক; আমি এখনও এটি লিখিনি)?
নিল

3
@ নীল আমি ধরে নিচ্ছি আপনি এখানে রেটিনার কথা বলছেন? তবে নিশ্চিত, আপনি মান নিতে পারেন যে সমস্ত মান সেই ক্ষেত্রে অ-নেতিবাচক। যদিও, আপনার দ্বিতীয় সংস্করণটিও নেতিবাচক মূল্যবোধের জন্য কাজ করা সবচেয়ে ভাল, কারণ আমার অনুভূতি রয়েছে যা সম্ভবত অর্জনযোগ্য হতে পারে (বাইট-কাউন্ট এবং কিছু কাজ ঘিরে); যা প্রকৃত সত্যের চেয়ে সাধারণ অনুভূতির চেয়ে বেশি, নেতিবাচক মান অংশের আশেপাশে কাজ করা সম্ভব কিনা তা নিশ্চিত নয়)।
কেভিন ক্রুইজসেন

6
আসল পরীক্ষার [131000000000, 96500000000, 82500000000, 76000000000, (7.7 billion more entries)]
কেসটি এর

2
সেই দৃশ্যের কী হবে যেখানে কোনও মানই মানদণ্ড পূরণ করে না: [1,2,3] n = 1? আউটপুট জন্য আপনি কি চান?
ouflak

": @ouflak তৃতীয় চ্যালেঞ্জ নিয়ম দেখুন আউটপুট অ খালি হতে গ্যারান্টী তাই তোমার মত পরীক্ষার বিষয় মোকাবেলা করার থাকবে না। L = [-5,-10,-13]এবং n=2যার ফলে [] (বা" এছাড়াও, ইনপুট-তালিকা সাজানো সাজানো হতে নিশ্চিত করা হয় আপনি যদি এটি বেছে নেন তবে আরোহণ), সুতরাং [1,2,3]শুরু করার জন্য কোনও বৈধ ইনপুট-তালিকা নয় (আপনি যদি আরোহী ইনপুট না বেছে নেন, তবে এর ক্ষেত্রে [1,2]ফলাফল হবে)।
কেভিন ক্রুইজসেন

উত্তর:


17

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 88 81 69 68 63 বাইট

-4 বাইট লাইফডেভেনকে ধন্যবাদ

a=>b=>a.Skip(b).Where((x,i)=>a.Skip(i+b).Sum()<a.Take(b).Sum())

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


আমি তোমাদের দূর করে আরও দুই বন্ধ শেভ পারে চিন্তা করছি +bSkipকল; প্রথম nতালিকাটি পরীক্ষা করা নিরর্থক , তবে আমি মনে করি এটি এখনও সঠিক।
দ্য রবারডাক

3
@ দ্য রবারডাক নোপ, যেখানে প্রিফিক্স এবং প্রত্যয়টি ওভারল্যাপ হয় সে ক্ষেত্রে এটি যুক্ত করতে হয়েছিল। অর্থাত [10,5,5,3], এন = 2
মেয়াদ শেষ হয়েছে


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

এক্সপায়ার্ডডাটা ওহ হ্যাঁ, ভুলে গেছি আমি এটিকে সরিয়ে দিয়েছি
LiefdeWen

12

সমাপ্তি (2 এক্সএএস, 30 টি নির্দেশ, 594-বাইট সমাধান ফাইল)

আমি কিছুক্ষণের জন্য এক্সাপঙ্কস-এ একটি কোড গল্ফ চ্যালেঞ্জ চেষ্টা করে দেখতে চেয়েছিলাম এবং আপনি যে সেরা ফিট খুঁজে পেলেন তার মতোই দেখতে লাগলেন, তাই, অভিনন্দন!

এল এবং এন এর জন্য যথাক্রমে 200 এবং 201 ফাইলের মাধ্যমে ইনপুট দিন। একটি নতুন ফাইলের মাধ্যমে আউটপুট। এল এবং আউটপুট আরোহী ক্রমে হয়।

মূলত, এক্সএ এল এর সর্বশেষ n টি মানগুলিকে যোগ করে, তারপর এটি এক্সবিতে প্রেরণ করে। এটি তখন এল এর শুরুতে সন্ধান করে এবং প্রতিটি মান একে একে এক্সবিতে প্রেরণ করে। এক্সবি প্রথমে এক্সএ থেকে মোট প্রাপ্ত হয় এবং এটি রেজিস্টার এক্সে সংরক্ষণ করে It

XA

GRAB 201
SUBI T F T
DROP
GRAB 200
SEEK 9999
SEEK T
MARK FIRST_SUM
ADDI F X X
ADDI T 1 T
SEEK -1
VOID F
TJMP FIRST_SUM
COPY X M
SEEK -9999
MARK SECOND_SUM
COPY F M
TEST EOF
FJMP SECOND_SUM
KILL

XB

MAKE
COPY M X
MARK LOOP
COPY M T
COPY T F
SUBI X T X
TEST X > 0
TJMP LOOP
SEEK -1
VOID F
KILL

স্তরটি এখানে জাভাস্ক্রিপ্ট


আইআইআরসি এক্সপ্যাঙ্কগুলিতে সমাধানগুলি সংরক্ষণের কোনও উপায় নেই? যদি তাই হয় তবে গেমের নির্দেশের চেয়ে আপনার বাইট কাউন্ট ব্যবহার করা উচিত।
গম উইজার্ড

1
@ শ্রুতচিলিজম ওজাইক, হ্যাঁ, ফাইলগুলি সহজেই অ্যাক্সেসযোগ্য বলে মনে করা হয় নি, তবে আমি সেগুলি সন্ধান করেছি। আমি সাইজ-অন ডিস্ক যুক্ত করব। আমি লিখিনি এমন একগুচ্ছ মেটাডাটি পাশাপাশি বরাবর সঞ্চিত হয়ে যায় তবে আমি মনে করি এই গেমটি থেকে বাস্তবে একটি একক "বাইট গণনা" পাওয়ার সেরা উপায় এটি।
ymbirtt

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

@ শ্রুতচিলিজম ও'জাইক, তারা আসলে তা করে। সমস্ত নির্দেশাবলী প্লেইন টেক্সট হিসাবে সঞ্চিত হয়, তাই শুরু করার জন্য আমরা সমস্ত চিহ্ন একক-বর্ণচিহ্ন সনাক্তকারীগুলিতে পরিণত করতে পারি। আপনার সমাধানের নামটি সেখানে রয়েছে, তাই আমরা সমাধানটিকে 'এ' বলে কিছু বাইট সরিয়ে ফেলতে পারি। যদিও এর কিছু অংশ EXA এর জন্য আপনি তৈরি ভার্চুয়াল নেটওয়ার্কের সাথে সম্পর্কিত বলে মনে হচ্ছে। সত্যিই, আমি মনে করি EXAPUNKS সমাধানগুলি স্কোর করার "সর্বাধিক" উপায়টি হয় আসল কোডের বাইট গণনা, বা নির্দেশের সংখ্যা ব্যবহার করা। এটি একটি মেটা পোস্টের জন্য মূল্যবান হতে পারে ...
5

2
@ এম্বিটার্ট আমি মনে করি প্রশ্নটি তখনই নেমে আসে আপনি কি এমন কোন দোভাষী লিখতে পারেন যা নির্দেশাবলীটি দেখবে এবং সেভ করা ডেটাতে রূপান্তর করবে? ভাল তুচ্ছভাবে হ্যাঁ, কেবল একটি প্রোগ্রাম লিখুন যা উত্স থেকে আপনার জন্য ইনপুট করে .. এটি যদিও আলাদা ভাষা হিসাবে গণ্য হবে।
মেয়াদোত্তীর্ণ ডেটা

11

পাইথন 2 , 60 বাইট

l,n=input()
s=sum(l[:n])
while sum(l[n:])>s:n+=1
print l[n:]

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


ব্যাখ্যা:

প্রথম প্রথম nআইটেমের যোগফল নেয় ।

তারপরে প্রতিটি সাবলিস্টের যোগফলটি এই যোগফলের সাথে তুলনা করা হয়। যত তাড়াতাড়ি কেউ বড় না হয়, আমরা থামি।

তারপরে ফলাফল (দীর্ঘতম) সাবলিস্টটি মুদ্রিত হয়।


2
প্রকৃতপক্ষে সর্বাধিক পঠনযোগ্য এক +1
ক্রাইটোফ শিখেক

10

05 এ বি 1 ই , 14 12 বাইট

গ্রিমে ধন্যবাদ 2 বাইট সংরক্ষণ করা

.$ΔDOI¹£O›.$

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

ব্যাখ্যা

.$               # drop the first n entries of the list
  Δ              # repeat the following code until the result doesn't change
   DO            # duplicate and sum the copy
     I¹£O        # calculate the sum of the first n items of the input
         ›.$     # if the current sum is greater than the sum of the first n items
                 # remove the first item of the current list

2
সমাধান হিসাবে আমি যা প্রস্তুত করেছি ঠিক তেমন 'একই'। এবং 'ঠিক' দ্বারা আমি বলতে চাচ্ছি আমারই ছিল .$.sʒO²¹£O>‹}θ। :)
কেভিন ক্রুইজসেন

2
@KevinCruijssen এখানে 12 এর
Grimmy

1
ASCII- কেবল 12 (একটি ভিন্ন ইনপুট পদ্ধতি ব্যবহার করে)।
গ্রিমি

1
@ গ্রিমি: হু আমি কখনই |ওভাররোট জানতাম না last-input, আকর্ষণীয়।
এমিগিনা

2
@Grimy: দেখুন এই বনাম এই । সাধারণত যখন সমস্ত ইনপুট গ্রহণ করা হয়, শেষ ইনপুট স্পষ্টভাবে পরবর্তী ইনপুটটির সমস্ত দৃষ্টান্তের জন্য ব্যবহৃত হয়। |এখানে ব্যবহার করলে ফলাফলটি |সর্বশেষ ইনপুটটি পরিবর্তে শেষ ইনপুট হয়ে যায়।
এমিগিনা

7

জে , 18 বাইট

}.#~+/@{.>:+/\.@}.

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

ব্যাখ্যা:

একটি ডায়াডিক ক্রিয়া, nএটি তার বাম আর্গুমেন্ট হিসাবে গ্রহণ করে L- এবং তার ডান যুক্তি হিসাবে।

                }.  drop the first n items from L 
               @    and
             \.     for each suffix (starting from the longest)
           +/       find its sum
         >.         is this sum smaller or equal than (results in a boolean vector)
    +/              the sum 
      @             of
       {.           the first n items of L
  #~                use the 1s in the boolean vector to copy the respective
}.                  elements of L (without the first n)


7

আর , 53 55 বাইট

@ জিউস্পেপ আমাকে অপসারণের পদ্ধতিটি পরিবর্তন করে 2 বাইট সংরক্ষণ করেছিলেন

function(n,L,Y=rev(L[0:-n]))Y[cumsum(Y)<=sum(L[1:n])]

এটি অনলাইন চেষ্টা করুন! নিয়ম 4 দ্বারা অনুমোদিত হিসাবে আরোহণের হিসাবে ইনপুট নেয় এবং আরোহণের ফলাফল আউটপুট নেয়।

  • YLব্যবহার করে মুছে ফেলা 1: n এর সাথে সংশোধন করা হয়0:-n
  • Yযোগফলের যোগফলের যোগফলের সমান হলে কম হয় returnsL[X]

@ জিউসেপ সর্বদা ধন্যবাদ সরানোর চেষ্টা Xব্যবহার -(1:n)কিন্তু অবশ্যই যে একই আকার ছিল, তাই এটি বাম
MickyT

6

জাভাস্ক্রিপ্ট (ES6), 66 বাইট

(a)(n)আরোহী ক্রমের তালিকার মতো ইনপুট নেয় ।

a=>n=>(g=s=>n?g(s+a.pop(n--)):eval(a.join`+`)>s?g(s,a.pop()):a)(0)

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

মন্তব্য

a => n =>               // a[] = list, n = number of richest guys
  ( g = s =>            // g is a recursive function taking a sum s
    n ?                 // if n is not equal to 0:
      g(s + a.pop(n--)) //   recursive call: add the last entry to s and decrement n
    :                   // else:
      eval(a.join`+`)   //   if the sum of the remaining entries
      > s ?             //   is greater than s:
        g(s, a.pop())   //     recursive call with the last entry removed
      :                 //   else:
        a               //     stop recursion and return a[]
  )(0)                  // initial call to g with s = 0

1
@ কেভিন ক্রুজসেন মনে হয় আমি প্রয়োজনীয়তাটি পড়েছি read এখনই ঠিক করা উচিত।
আর্নৌল্ড


5

পাইথন 2 , 59 বাইট

পাইথন 3 এর সাথেও সামঞ্জস্যপূর্ণ

f=lambda l,n:l[n:]*(sum(l)/2>=l.pop(n)+sum(l[n:]))or f(l,n)

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


ব্যাখ্যা

প্রত্যয়ের যোগফলকে পুরো তালিকার যোগফলের অর্ধেকের সাথে তুলনা করা হয়। প্রত্যয়ের যোগফল ছোট বা সমান হলে প্রত্যয়টি ফিরে আসবে। যদি তা না হয় তবে ফাংশনটিকে পুনরাবৃত্তভাবে বলা হয় প্রত্যয়টির প্রথম আইটেমটি পপ আউট করে।


4

পাইথ , 16 15 বাইট

efgs>vzQsT._<vz

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

ইনপুট তালিকাটি উদাহরণগুলিতে ব্যবহৃত হিসাবে নেমে আসার পরিবর্তে আরোহী ক্রমে সাজানো হবে বলে আশা করা হচ্ছে।

এটি এরকম সময়ে যখন আমি সত্যই চাই যে পাইথের কাছে একাধিকবার দ্বিতীয় ইনপুট অ্যাক্সেসের জন্য একক টোকেন অপারেটর থাকত (ইনপুটটির Eপরবর্তী লাইনের মূল্যায়ন করে তবে বারবার কলগুলি পূর্ববর্তী মানটি বাতিল করে দেয়)।

efgs>vzQsT._<vzQ   Implicit: Q=eval(input()), z=input() - that is, Q is list, z is string n
                   Trailing Q inferred
             vz    Evaluate z as integer
            <  Q   Remove the above number of elements from the end of Q
          ._       Generate a list of all prefixes of the above
 f                 Filter keep elements of the above, as T, where:
    >vzQ             Take the last z elements of Q
   s                 Sum
  g                  Is the above greater than or equal to...
        sT           ... the sum of T?
e                  Take the last remaining element, implicit print

সম্পাদনা: মিস্টার এক্সকোডারকে ধন্যবাদ 1 বাইট সংরক্ষিত


@ মিঃ এক্সকোডার ভাল শোক, এটাই কি বাঁচাচ্ছে! ধন্যবাদ 👍
সোক

4

জাভাস্ক্রিপ্ট, 64 বাইট

f=(a,n,s=0,[h,...t]=a)=>n<1?f(a)>s?f(t,0,s):a:1/h?f(t,n-1,s+h):s

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

f=(
  a,               // remaining array
  n,               // if n >= 0: we try to find suffix <= s + a[0..n]
                   // if n is NaN (or undefined): we calculate sum(a) + s
  s = 0,           // previous sum
  [h, ...t] = a    // split array (a) into head (h) and tail (t)
) => (n < 1 ?      // if n == 0
  f(a) > s ?       //   if sum(a) > s
    f(t,0,s) :     //     drop head and test tail again
    a :            //   otherwise, a is the answer
  1 / h ?          // if a is not empty
    f(t,n-1,s+h) : //   add head to sum and recurse
    s              //   we only reach here if n is NaN, return the sum
)

4

স্ট্যাক্স , 12 বাইট

îo╧╫Σ↑>'qµΣº

এটি চালান এবং এটি স্ট্যাক্সএল.এক্সজে ডিবাগ করুন!

আরও ভাল সংস্করণ

প্যাকযুক্ত (14 বাইট) এবং ব্যাখ্যা:

:/|]{|+n|+>!}j
:/                Split array at index.
  |]              Suffixes. The bit after the split (the poor) is on top for this.
    {       }j    First item in array that yields truthy under the block:
     |+             Sum array (collective wealth of the many).
       n            Copy second item to top of stack.
        |+          Sum again. Wasted computation, but this location saves a byte.
          >!        Second item on stack less than or equal to first?

Sens কমত্য দ্বারা , আমি এই ফলাফলটি স্ট্যাকের উপর ছেড়ে দিতে পারি। স্ট্যাক্স একটি অন্তর্নিহিত মুদ্রণের চেষ্টা করবে, যা ব্যর্থ হতে পারে তবে আনপ্যাকড mপ্রোগ্রামে একটি যুক্ত করা আপনাকে আউটপুটটি সুন্দরভাবে দেখতে দেয়।

দেখতে দেখতে { ... }jএকই রকম { ... fh। হাহ। সম্পাদনা: এটি তেমন ঘটনা নয়; সত্যিকারের ফলাফল পেলে কেবলমাত্র প্রাক্তনই থামবে, সম্ভবত পরে পার্শ্ব প্রতিক্রিয়া বা মারাত্মক ত্রুটি এড়ানো।



3

জাপট , 16 বাইট

£sV+YÃæ_x §U¯V x

চেষ্টা করে দেখুন

£sV+YÃæ_x §U¯V x     :Implicit input of U=L and V=n
£                    :Map U, with Y being the 0-based indices
 sV+Y                :  Slice U from index V+Y
     Ã               :End map
      æ              :First element that returns true
       _             :When passed through the following function
        x            :  Reduce by addition
          §          :  Less than or equal to
           U¯V       :    Slice U to index V
               x     :    Reduce by addition

3

জেলি , 13 12 বাইট

ṫḊÐƤS>¥ÞḣS¥Ḣ

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

একটি বাইট সংরক্ষণ করার জন্য @ জোনাথান অ্যালানকে ধন্যবাদ!

Ln

ব্যাখ্যা

ṫ            | Tail: take all values of L from the nth onwards (which is actually one too many; dealt with below)
 ḊÐƤ         | Take all suffixes, removing the first value from each. This will yield a list of all possible suffixes of L that exclude the first n values
       Þ     | Sort by:
    S>¥ ḣS¥  | - The sum is greater than the sum of the first n values of L
           Ḣ | Take the first resulting list and return from link (implicitly output when called as a full program)

আপনি ফিল্টারিংয়ের পরিবর্তে বাছাই করে একটি বাইট সংরক্ষণ করতে পারেন:ṫḊÐƤS>¥ÞḣS¥Ḣ
জোনাথন অ্যালান

3

গাইয়া , 12 বাইট

eSe¤Σ¤┅⟪Σ⊃⟫∇

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

আমি মনে করি একটি বাইট আছে আমি গল্ফ করতে পারি যদি আমি স্ট্যাকটি ঠিক ঠিক পাই।

e	| eval first input as Gaia code
S	| Split into a list of ["first n elements" "rest of elements"]
e	| dump onto stack
¤Σ	| swap and take the sum (sum of first n elements)
¤┅	| swap and take suffixes
⟪  ⟫∇	| return the first element of suffixes where:
 Σ⊃	| the sum(first n elements) ≥ sum(suffix)

3

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

এটি দেখতে কেমন তা দেখে অসন্তুষ্ট; আশা করি আমি কিছু স্পষ্ট গল্ফ মিস করছি।

n#l=until(((sum$take n l)>=).sum)tail$drop n l

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

আমি splitAtগার্ডের সাথে প্রিফিক্স এবং প্রত্যয়টি ব্যবহার করে এবং প্যাটার্ন মেলানোর চেষ্টা করেছি , তবে এটি আরও 3 বাইটে পরিণত হয়েছে। পরে গার্ডদের সাথে একটি পুনরাবৃত্ত ফাংশনে রূপান্তর করার চেষ্টা করার পরিকল্পনা পরে তা দেখার জন্য যে এটি বাইটের গণনা কমিয়ে দেয় কিনা।

ব্যাখ্যা

n # l = until (((sum $ take n l) >= ) . sum) tail $ drop n l
n # l =                                                        -- define infix operator
n                                                              --  the number of elements
    l                                                          --  the list
        until                                                  -- until
                                        sum                    --  the sum of the suffix
               ((sum $ take n l) >=)                           --  is <= the sum of the prefix
                                             tail              --  remove the first element
                                                    drop n l   -- the suffix

আমি "উপসর্গ" হিসাবে যা উল্লেখ করি তা হ'ল প্রথম nউপাদান এবং "প্রত্যয়" তালিকার বাকী অংশ।


3

এপিএল (ডায়ালগ ইউনিকোড) , 23 21 বাইট এসবিসিএস

nL

{⍵↓⍨⍺⌈⊥⍨(+/⍺↑⍵)<+\⌽⍵}

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

{}nL

⌽⍵L

+\ উপসর্গ যোগফল

()< বুলিয়ান মাস্ক যেখানে এর চেয়ে কম:

  ⍺↑⍵  এর প্রথম গ্রহণ করুনnL

  +/ যোগফল

⊥⍨চলমান সত্য গণনা

⍺⌈n

⍵↓⍨  এর সামনে থেকে অনেক উপাদান ড্রপL


1
নিবন্ধন করুন সংশোধন করা হয়েছে।
আদম

3

এমএটিএল , 13 12 বাইট

@ মিকিটি- র উত্তরের ভিত্তিতে 1 বাইট @ জিউজ্পে ধন্যবাদ রক্ষা করেছে

:&)PtYsbs>~)

আউটপুট আরোহী ক্রমে হয়।

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

ইনপুট 2এবং বিবেচনা করুন [500,200,150,150,125,100,75,75,55,50,40,30,30,20,10,10,8,5,5,5,3,2,2,1,0,-2,-3]

:      % Implicit input: n. Push [1 2 ... n]
       % STACK: [1 2]
&)     % Implicit input: array. Two-output indexing: pushes the subarray
       % indexed by [1 2 ... n] and the remaining subarray
       % STACK: [500 200], [150 150 125 ... -2 -3]
P      % Flip
       % STACK: [500 200], [-3 -2 ... 125 150 150]
t      % Duplicate top of the stack
       % STACK: [500 200], [-3 -2 ... 125 150 150], [-3 -2 ... 125 150 150]
Ys     % Cumulative sum
       % STACK: [500 200], [-3 -2 ... 125 150 150], [-3 -5 ...646 796 946]
b      % Bubble up in the stack
       % STACK: [-3 -2 ... 125 150 150], [-3 -5 ...646 796 946], [500 200]
s      % Sum
       % STACK: [-3 -2 ... 125 150 150], [-3 -5 ...646 796 946], 7
>~     % Greater than, negate; element-wise
       % STACK: [-3 -2 ... 125 150 150], [1 1 ... 1 0 0]
)      % Index. Implicit display
       % STACK: [-3 -2 ... 125]

3

পাওয়ারশেল , 99 97 বাইট

param($n,$l)do{$a+=$l[$i++]}until($a-gt($l[-1..-$n]-join'+'|iex)-or$i-gt$l.count-$n)$l[($i-2)..0]

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

আরোহী ক্রমের তালিকায় নিয়ে যায়, আউটপুট অবতরণ হয় (কারণ পরীক্ষার কেসের সাথে তুলনা করা সহজ ছিল: ^))

তালিকা মাধ্যমে যায় পিছন ফরোয়ার্ড শেষ সঁচায়ক তুলনা n(তাদের একসঙ্গে gluing সঙ্গে মাধ্যমে একসঙ্গে যোগ এন্ট্রি +গুলি এবং তার ফলে স্ট্রিং ক্ষণস্থায়ী invoke-expression)। ধনী নিকটবর্তী অঞ্চলে প্রবেশ করতে লুপের অতিরিক্ত যুক্তির প্রয়োজন ছিল কারণ এটি পুরোপুরি তালিকার মধ্যে মন্থন না হওয়া অবধি আমরা এখনও ধনী লোকদের চেয়ে সমৃদ্ধ না হলে এটি থামবে না।

Unrolled:

param($n,$list)
do{
  $acc+=$list[$i++]
}until($acc -gt ($list[-1..-$n] -join '+'|invoke-expression) -or ($i -eq $list.count-$n))
$list[($i-2)..0]

3

রেটিনা 0.8.2 , 99 বাইট

\d+
$*
^
;,
+`;,(1+)(,.*)1$
$1;$2
,
;$'¶$`,
;.*(;.*)
$1$1
T`,`_`.*;
1G`(1+);\1;
.*;

(1*),
$.1,
,$

এটি অনলাইন চেষ্টা করুন! লিঙ্কটিতে কয়েকটি পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে; আমি এটি কিছু ক্ষেত্রে 12 বাইট ব্যয়ে নেতিবাচক সংখ্যার সাথে কাজ করতে পারি (বিশেষত প্রথম nএন্ট্রিগুলিতে Lএখনও ইতিবাচক হওয়া দরকার; তাত্ত্বিকভাবে আমি সম্ভবত প্রথম nএন্ট্রিগুলির যোগফলকে ইতিবাচক হতে পারি)। ব্যাখ্যা:

\d+
$*

অ্যানারিতে রূপান্তর করুন।

^
;,

শুরুতে একটি চিহ্নিতকারী sertোকান L

+`;,(1+)(,.*)1$
$1;$2

আমাদের চলার সাথে nসংক্ষেপে তালিকাটিকে এটিকে নিচে নামান । এটি মুছে ফেলা হয় nতবে এর কমাটি রয়ে গেছে।

,
;$'¶$`,

প্রতিটি প্রত্যয় জন্য একটি এন্ট্রি তৈরি করুন L

;.*(;.*)
$1$1

প্রত্যয়টির একটি অনুলিপি দিয়ে মাঝখানে প্রতিস্থাপন করুন।

T`,`_`.*;

প্রত্যয়টির অনুলিপি যোগ করুন।

1G`(1+);\1;

প্রথম এন্ট্রিটি গ্রহণ করুন যেখানে প্রত্যয় যোগফল উপসর্গের যোগফলের বেশি হবে না।

.*;

অঙ্কগুলি মুছুন।

(1*),
$.1,

দশমিক রূপান্তর।

.,$

এর আগে আসা ট্রেলিং কমাটি মুছুন n


n

1
@ কেভিন ক্রুজসেন আমার নেতিবাচক নম্বর সংস্করণটি নিষেধাত্মকভাবে ধীর হয়ে গেছে, তবে আমি rবিকল্পটি ব্যবহার করে এটি ঠিক করতে পেরেছি, তাই এখন আমি এটি পরীক্ষার কিছু ক্ষেত্রে যুক্ত করেছি।
নীল

2

কাঠকয়লা , 17 বাইট

IΦθ¬∨‹κη‹Σ…θηΣ✂θκ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

  θ                 Input `L`
 Φ ¬                Filter out elements where
      κ             Current index
     ‹              Is less than
       η            Input `n`
    ∨               Logical Or
           θ        Input `L`
          … η       First `n` terms
         Σ          Summed
        ‹           Is less than
              ✂θκ   Remainder of `L`
             Σ      Summed
I                   Cast to string
                    Implicitly print on separate lines


2

পাওয়ারশেল , 86 বাইট

param($n,$l)$l|?{$k++-ge$n}|?{(&{$l|%{$s+=($_,0,-$_)[($n-le$i)+(++$i-ge$k)]};$s})-ge0}

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

Unrolled:

param($n,$list)
$list|?{$k++-ge$n}|?{                               # tail elements after $n only
    $sumLeftSegmentMinusSumRightSgement = &{        # calc in a new scope to reinit variables $s, $i
        $l|%{$s+=($_,0,-$_)[($n-le$i)+(++$i-ge$k)]} # sum(list[0..n-1]) - sum(list[k-1..list.Count-1])
        $s                                          # output sum to the outer scope
    }
    $sumLeftSegmentMinusSumRightSgement -ge 0       # output elements where sum >= 0
}

2

ম্যাথগল্ফ , 13 বাইট

(‼≥≤Σ\æ╞`Σ≥▼Þ

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

ব্যাখ্যা

হিসাবে ইনপুট লাগে n L

(               pops n and decrements (TOS is n-1)
 ‼              apply next two operators to stack simultaneously
  ≥             slice L[n-1:] (gets all elements with index >= n-1)
   ≤            slice L[:n] (gets all elements with index <= n-1)
    Σ           get sum of topmost list (this is the sum of n largest elements)
     \          swap top elements
      æ    ▼    do while false with pop using block of length 4
       ╞        discard from left of string/array
        `       duplicate the top two items on the stack
         Σ      sum the list which is on top
          ≥     is the sum of the partial list >= the desired sum?
            Þ   discard everything but TOS

এই কাজ করার কারণটি হ'ল প্রথম ধাপে, আমরা আসলে তালিকাকে দুটি ওভারল্যাপিং অংশে বিভক্ত করি। একটি উদাহরণ হিসাবে, L = [4, 3, 2, 1], n = 2তালিকা হিসাবে [3, 2, 1]এবং হিসাবে বিভক্ত হবে [4, 3]। প্রথম তালিকায় অতিরিক্ত উপাদান থাকার কারণ হ'ল লুপে, প্রথমটি ঘটে যা হয় তা বাতিল করা। যদি কোনও অতিরিক্ত উপাদান চালিত না করা হয় তবে আউটপুট পুরো তালিকা হওয়া উচিত সেই ক্ষেত্রে ব্যর্থ হয়।



1

ক্লোজার, 66 75 বাইট

#(loop[v(drop %2 %)](if(>(apply + v)(apply +(take %2 %)))(recur(rest v))v))

দুঃখজনকভাবে কোনও অনুক্রমের মোট যোগফলের জন্য একটি ছোট খাটিয়া বলে মনে হয় না।

সম্পাদনা করুন : ওহ উদাহরণস্বরূপ যুক্ত করার সময় এটি অনলাইনে ব্যবহার করে দেখুন! লিঙ্ক আমি লক্ষ্য করেছি যে অনেকগুলি নেতিবাচক সংখ্যা উপস্থিত থাকলে আসল উত্তরটি ভুল ফল দেয়।

doseqব্যবহারসমূহ "কি" ডেসট্রাকচারিং তাই এটি যা প্রতীক কিছুটা স্পষ্ট কোন ডেটা শেষ পর্যন্ত থাকতে হবে। #(...)এটি একটি বেনামি ফাংশন, এখানে আমি এটি প্রতীককে আবদ্ধ করছি f:

(def f #(loop[v(drop %2 %)](if(>(apply + v)(apply +(take %2 %)))(recur(rest v))v)))


(doseq [{:keys [L n]} [{:L [10,5,5,3] :n 2}
                       {:L [7,2,1,-2,-4,-5,-10,-12] :n 7}
                       {:L [30,20,10,0,-10,-20,-30] :n 1}]]
  (println (f L n)))

আউটপুট:

(5 3)
(-12)
(20 10 0 -10 -20 -30)

1
আপনি কি পরীক্ষার কোড সহ একটি টিআইও যুক্ত করতে আপত্তি করবেন (আমি তালিকায় ক্লোজার দেখতে পাচ্ছি)? যদি এটি কোনওভাবেই সম্ভব না হয় (সংস্করণ মেলানো নয়, বা টিআইওতে পাওয়া যায় না এমন বিল্টিনগুলি ব্যবহার করছে), আপনি পরীক্ষার কিছু ক্ষেত্রে স্ক্রিনশটটি যাচাইয়ের জন্য অন্তর্ভুক্ত করতে পারেন?
কেভিন ক্রুইজসেন

1

এপিএল (এনএআরএস), 32 টি অক্ষর, 64 বাইট

{v/⍨(+/⍺↑⍵)≥+/¨{⍵↓v}¨¯1+⍳≢v←⍺↓⍵}

পরীক্ষা এবং মন্তব্যসমূহ:

  q←{v/⍨(+/⍺↑⍵)≥+/¨{⍵↓v}¨¯1+⍳≢v←⍺↓⍵}
  2 q 500,200,150,150,125,100,75,75,55,50,40,30,30,20,10,10,8,5,5,5,3,2,2,1,0,¯2,¯3
125 100 75 75 55 50 40 30 30 20 10 10 8 5 5 5 3 2 2 1 0 ¯2 ¯3 
  2 q 10,5,5,3
5 3 
  ⎕fmt  7 q 7,2,1,¯2,¯4,¯5,¯10,¯12
┌1───┐
│ ¯12│
└~───┘
  2 q 0,¯5,¯10,¯15
¯10 ¯15 
  ⎕fmt 1 q 100,35,25,15,5,5,5,5,5,5,5,5,5,5,5,5,5
┌14───────────────────────────┐
│ 15 5 5 5 5 5 5 5 5 5 5 5 5 5│
└~────────────────────────────┘
  2 q 1000,999,998,900,800,766,525,525,400,340,120,110,80,77,33,12,0,¯15,¯45,¯250
525 525 400 340 120 110 80 77 33 12 0 ¯15 ¯45 ¯250 
  1 q 10,5,5
5 5 
  ⎕fmt  2 q ¯5,¯10,¯13
┌0─┐
│ 0│
└~─┘
  ⎕fmt  1 q 30,20,10,0,¯10,¯20,¯30
┌6───────────────────┐
│ 20 10 0 ¯10 ¯20 ¯30│
└~───────────────────┘


   {v/⍨(+/⍺↑⍵)≥+/¨{⍵↓v}¨¯1+⍳≢v←⍺↓⍵}
                             v←⍺↓⍵   v is ⍵[(⍺+1)..≢⍵] 
                  {⍵↓v}¨¯1+⍳≢v        build the array of array cut v of 0..((≢v)-1) elements
               +/¨                   sum each of these element of array above
      (+/⍺↑⍵)≥                       compare ≥ with the sum of ⍵[1..⍺] obtain one bolean array
                                     has the same lenght of v
   v/⍨                               return the element of v that are 1 of the boolean array above

আমি ভুলভাবে বাইটের দৈর্ঘ্যটি জানিয়েছি ...


1

এমএস এসকিউএল সার্ভার 2017 , 271 বাইট

create function f(@L nvarchar(max),@ int)returns table return
select v
from(select*,sum(iif(n<=@,v,0))over()r,sum(v)over(order by v)p
from(select row_number()over(order by-v)n,v
from STRING_SPLIT(@L,',')cross apply(select
try_parse(value as int)v)t)t)t
where p<=r and @<n

আমি জানি যে ইনপুট ডেটা সঞ্চয় করার জন্য আরও বেশি সম্পর্কের মতো টেবিল ব্যবহার করা কোডটি আরও সংক্ষিপ্ত করে তুলতে পারে তবে সংখ্যার তালিকা এবং STRING_SPLITফাংশনটি সংরক্ষণ করতে অক্ষর ডেটা টাইপ ব্যবহার করে আমি Build Schemaঅংশটি

আরও সংক্ষিপ্ত করে তুলছি :) আরও পাঠযোগ্য সংস্করণ:

CREATE FUNCTION f(@L NVARCHAR(MAX), @n INT)
  RETURNS TABLE AS RETURN (
    SELECT
      v
    FROM (
      SELECT
        *,
        SUM(IIF(n<=@n, v, 0)) OVER() AS r,
        SUM(v) OVER(ORDER BY v) AS p
      FROM(
        SELECT ROW_NUMBER() OVER(ORDER BY -v) AS n, v
        FROM STRING_SPLIT(@L, ',')
        CROSS APPLY(
          SELECT TRY_PARSE(value AS INT) AS v
        ) AS t
      ) AS t
    ) AS t
    WHERE p <= r AND @n < n
  );

এসকিউএল ফিডল এ চেষ্টা করে দেখুন !


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