নিজের সাথে একটি অ্যারে যুক্ত করুন


22

আজ আপনার চ্যালেঞ্জ হ'ল একটি অ্যারে নেওয়া, এটিকে খণ্ডগুলিতে ভাগ করা এবং সেই অংশগুলি যুক্ত করা।

এটি কীভাবে কাজ করে তা এখানে: আপনার প্রোগ্রাম বা ফাংশনটিকে একটি পূর্ণসংখ্যার অ্যারে aএবং খণ্ড আকার দেওয়া হবে L। অ্যারের আকারের অ্যারেগুলিতে বিভক্ত হওয়া উচিত L, যদি অ্যারের দৈর্ঘ্যটি বিভাজ্য না হয় Lতবে অ্যারের সাথে 0 এর সংযুক্তি থাকা উচিত যাতে এটি সমানভাবে বিভাজ্য হয়। অ্যারে ছাঁটাই হয়ে গেলে সমস্ত অংশগুলি উপাদান অনুসারে একসাথে যুক্ত করতে হবে। ফলাফল অ্যারে তখন আউটপুট হয়।

আপনি ধরে নিতে পারেন L0 এর চেয়ে বড়, এবং এটি কোনও aগুরুত্বহীন। এর অনুমানগুলি aইতিবাচক যে আপনি অনুমান করতে পারবেন না ।

এখানে একটি উদাহরণ:

[1,2,3,4,5,6,7,8], 3 => [1,2,3]+[4,5,6]+[7,8,0] =>  [1+4+7,2+5+8,3+6+0] => [12,15,9]

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

Array                           Length   Output
[1]                             1        [1]
[1]                             3        [1,0,0]
[0]                             3        [0,0,0]
[1,2]                           3        [1,2,0]
[1,2]                           1        [3]
[-1,1]                          2        [-1,1]
[-7,4,-12,1,5,-3,12,0,14,-2]    4        [12,-1,0,1]
[1,2,3,4,5,6,7,8,9]             3        [12,15,18]

এটি , সবচেয়ে কম বাইট জয়!


এটা কি দোপ নয়?
সার্জিওল

1
@ সার্জিওল যদি আপনি এমন কোনও প্রশ্ন খুঁজে পান যা এটির সদৃশ, তবে আমি নিজেই এই পোস্টটি মুছব। তবে যতদূর আমি বলতে পারি এটি কোনও ডুপ নয়।
পাভেল

উত্তর:


10

এমএটিএল , 4 বাইট

e!Xs

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

আমি লিখেছি এমএটিএল কোড প্রথম বিট! aএকটি সারি ভেক্টর (কমা দ্বারা পৃথক) এবং lএকটি সংখ্যা হিসাবে দুটি ইনপুট নেয় । হতে কাজ করে

e          # reshape `a` into `l` rows (auto pads with 0)
 !         # transpose
  Xs       # sum down the columns



5

জাভা 7, 86 বাইট

কোনও অভিনব ভাঁজ বা ম্যাট্রিক নেই, কেবল একটি ভাল ওল 'ফ্যাশনের forলুপ :)

int[]o(int[]a,int l){int i=0,o[]=new int[l];for(;i<a.length;)o[i%l]+=a[i++];return o;}

আইডিয়নে চেষ্টা করে দেখুন

রেখাযুক্ত:

int[]o(int[]a,int l){
    int i=0,
        o[]=new int[l];
    for(;i<a.length;)
        o[i%l]+=a[i++];
    return o;
}

2
এবং ভাল ওল 'ফ্যাশনযুক্ত জাভা 7 দিয়ে (8 এর পরিবর্তে)। ;)
কেভিন ক্রুইজসেন


5

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

a=>n=>a.map((v,i)=>o[i%n]+=v,o=Array(n).fill(0))&&o

সংবাহন সিনট্যাক্স ইনপুট লাগে: f([1,2])(3)

পরীক্ষার মামলা


(a,n,o=[])=>a.map((v,i)=>o[i%n]=~~o[i%n]+v)&&o
ওকি

1
@ ওকি টু বাইট সংক্ষিপ্ত: a=>n=>a.map((v,i)=>o[i%=n]=~~o[i]+v,o=[])&&oতবে এটি প্রয়োজনীয় শূন্য-প্যাডিং যুক্ত করে না।
জাস্টিন মেরিনার

f=আপনার অক্ষর গণনার অংশ হওয়া উচিত।
এনএল-এক্স

1
@ এনএল-এক্স বেনাম ফাংশনগুলি ডিফল্টরূপে অনুমোদিত হয়, তাই যতক্ষণ না আমি আমার কোডটিতে ফাংশনটির নাম ব্যবহার করছি না, f=প্রয়োজন হয় না। এ সম্পর্কে মেটাতে একটি পোস্ট
জাস্টিন মেরিনার

1
@ এনএল-এক্স: না, এটি করা উচিত নয়; কোনও ক্রিয়াকলাপ কেবল তখনই নামকরণ করা প্রয়োজন যদি এটি পুনরাবৃত্ত হয় (বা, সম্ভবত, একটি রাউইন)। যদি এটি না হয় তবে একটি বেনামি ফাংশন পুরোপুরি বৈধ। এখানে দেখুন ।
শেগি

5

গণিত, 27 বাইট

গণিতের প্রায় এই জন্য একটি বিল্টিন ছিল

Total@Partition[##,#2,1,0]&

ওল্ফ্রাম স্যান্ডবক্সে এটি ব্যবহার করে দেখুন

ব্যবহার

Total@Partition[##,#2,1,0]&[{-7, 4, -12, 1, 5, -3, 12, 0, 14, -2}, 4]

{12, -1, 0, 1}

ব্যাখ্যা

Total@Partition[##,#2,1,0]&

      Partition[##,#2,1,0]   (* Partition the first input into sublists of length
                                second input, using offset second input, and
                                right-pad zeroes for incomplete partitions *)
Total@                       (* Add all *)

আপনার লিঙ্কটি কাজ করছে না।
শেগি

1
@ শেগি আপনাকে ম্যানুয়ালি কোডটি অনুলিপি করে পেস্ট করতে হবে। ওল্ফ্রাম স্যান্ডবক্স প্রাক ভরাট ইনপুট সমর্থন করে না।
জংহওয়ান মিন

4

গণিত, 58 বাইট

Total@Partition[PadRight[#,(s=Length@#)+Mod[-s,#2]],{#2}]&

ইনপুট

[{1}, 3]

আউটপুট

{1,0,0}


এটি [1], 3 এর জন্য কাজ করে আপনি কোডের শেষে ইনপুট যুক্ত করে এবং শিফট + এন্টার
টিপতে

4

পার্ল 6 , 36 বাইট

{[Z+] flat(@^a,0 xx$^b*2).rotor($b)}

এটা পরীক্ষা করো

সম্প্রসারিত:

{  # bare block lambda with 2 placeholder parameters 「@a」, 「$b」
  [Z+]
    flat(
      @^a,         # declare and use the first parameter
      0 xx $^b * 2 # 0 list repeated 2 * the second parameter
    )
    .rotor($b)     # split into chunks that are the size of the second param
}
[1,2], 3

( [1,2], (0,0,0,0,0,0) ) # @^a,0 xx$^b*2
(1,2,0,0,0,0,0,0)        # flat(…)
( (1,2,0), (0,0,0) )     # .rotor($b) # (drops partial lists)
(1,2,0)                  # [Z+]

3

এপিএল (ডায়ালগ) , 22 বাইট

lবাম তর্ক এবং aএকটি সঠিক আর্গুমেন্ট হিসাবে গ্রহণ করে akes

{+⌿s⍴⍵↑⍨×/s←⍺,⍨⌈⍺÷⍨≢⍵}

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

{} বেনাম ফাংশন যেখানে বাম আর্গুমেন্ট ( l) এবং ডান আর্গুমেন্ট ( a)।

≢⍵ এর ট্যালি (দৈর্ঘ্য) a

⍺÷⍨ দ্বারা বিভক্ত করা l

 সিলিং (বৃত্তাকার)

⍺,⍨ পরিশেষে যোগ l

s← সংরক্ষণ করুন s( গুলি জন্য )

×/ এর উত্পাদন (যেমন কতগুলি পূর্ণসংখ্যার প্রয়োজন হয়)

⍵↑⍨ যে অনেকগুলি পূর্ণসংখ্যার a(জিরো দিয়ে প্যাডিং) নেওয়া

s⍴ আকৃতি eshape s(সারি, কলাম)

+⌿ কলামের অঙ্ক



3

পার্ল 6 , 40 বাইট

{[Z+] (|@^a,|(0 xx*)).rotor($^l)[0..@a]}

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

আপনি যদি 42 নম্বর পছন্দ করেন তবে আপনি এটির *জন্য অদলবদল করতে পারেন । এটি এটিকে 42 বাইট :—) করে দেবে।

ব্যাখ্যা :

{[Z+] (|@^a,|(0 xx*)).rotor($^l)[0..@a]} The whole function
{                                      } Anonymous block
      (    ,        )                    List with 2 elements
        @^a                              The first argument (it is a list)
             (0 xx*)                     Infinite list of zeroes
       |    |                            Flatten both of the lists into the larger list.
                    .rotor($^l)          Split the list into a list of lists, each (the second argument) long.
                               [0..@a]   Only the first (1 + length of the first argument) of them.
 [Z+]                                    Add the corresponding elements up.

সর্বশেষ "অ্যাড আপ" এর পিছনে যাদুটি হ'ল অপারেটরটি "+ জিপ সহ হ্রাস"। যাইহোক, এটি যদি কেবলমাত্র 1 টি তালিকা ভিতরে তালিকাভুক্ত ব্যবহার করে তবে এটি ভেঙে যাবে, তবে এটি কখনই আসল তালিকাটি খালি না থাকলে (দ্বিতীয় থেকে শেষের সারিটির কারণে) ঘটে না। এছাড়াও মনে রাখবেন যে আমরা কেবল না @a, বরং @a * $lআইটেমগুলি গ্রহণ করি। ভাগ্যক্রমে আমরা কেবল জিরো যুক্ত করেছি যা চূড়ান্ত ফলাফলকে প্রভাবিত করে না।



3

পাইথ , 8 বাইট

m+F%Q>vz

এখানে চেষ্টা করুন!

পাইথ , 10 বাইট

sMCc.[EZQQ

এখানে চেষ্টা করুন!

ব্যাখ্যা

ব্যাখ্যা # 1

m+F%Q>vz   Full program. Q means input.

m          Map over the implicit range [0, input_1), with a variable d.
     >vz  All the elements of input_2 after d; input_2[d:] in Python.
   %Q     Every Qth element of ^.
 +F       Sum. Implicitly output the result.

ব্যাখ্যা # 2

sMCc। [EZQQ সম্পূর্ণ প্রোগ্রাম।

    । [বারবার অনুলিপি সহ ডানদিকে দ্বিতীয় ইনপুট প্যাড করুন ...
       জেড ... শূন্য (0), এর নিকটতম একাধিক পর্যন্ত ...
        প্রশ্ন ... প্রথম ইনপুট
   সি কিউ প্রথম ইনপুট সমান দৈর্ঘ্যের খণ্ডে কাটা।
  সি ম্যাট্রিক্স ট্রান্সপোজ। নেস্টেড তালিকার সমস্ত কলাম পান।
এসএম সমষ্টি প্রতিটি।
             আউটপুট (অন্তর্নিহিত) 

এরকম কিছু সম্পর্কে:sM.TcEQ
জাকুব

@ জাকুব এটি ভুল, যেহেতু আপনাকে প্রথমে জিরো দিয়ে প্যাড করতে হবে। এটি ছিল লিকির প্রাথমিক প্রচেষ্টা, তবে ব্যর্থ হবে [1], 3, যা তার [1]বদলে দেবে [1, 0, 0]
মিঃ এক্সকোডার

দুঃখিত আমার ভুল.
জাকুব

3

জে , 15 12 বাইট

]{.+/@(]\~-)

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

ব্যাখ্যা

]{.+/@(]\~-)  Input: array A (LHS), chunk size L (RHS)
          -   Negate L
       ]\~    Take each non-overlapping sublist of size L in A
   +/@        Reduce the columns by addition
]             Get L
 {.           Take that many, filling with 0's

কোনও কারণেই আমরা বাক্সগুলি সরিয়ে রাখতে পারি না? কি সম্পর্কে [:+/-@[[\]:?
জোনা

@ জোনাঃ যদি খণ্ডের আকারটি ইনপুট অ্যারের দৈর্ঘ্যের চেয়ে বড় হয় তবে এটি শূন্য প্যাডযুক্ত হবে না।
মাইল 2

সুন্দর সম্পাদনা - এখন অনেক ক্লিনার।
জোনাহ


3

05 এ বি 1 ই , 8 বাইট

Å0+¹ô0ζO

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

Å0       # Push an arrary of all 0s with length l
  +      # Add that to the array
   ¹ô    # Split into chunks of length l
     0ζ  # Zip, padding with 0s
       O # Sum each chunk

আমার নিজের সমাধানের সাথে প্রায় অভিন্ন: কোডগল্ফ.স্ট্যাকেক্সেঞ্জারওআআআ
স্কটনেট

@ স্কটনেট আমি অবশ্যই এটি মিস করেছি। এগুলি যথেষ্ট আলাদা যে আমি আমার ছেড়ে চলে যাব এবং আপনারকে উজ্জীবিত করব :)
রাইলে

আমি আসলে কিছু মনে করি না, কেবল
এটিই

@ স্কোটিনেট এটি আকর্ষণীয় যে আপনি অপারেশনগুলি পুনরায় সাজিয়ে নিতে এবং একই বাইট গণনা এবং প্রায় একই ধরণের বাইট ব্যবহার করতে পারেন ( ¹বনাম ²)
রিলে

2

এসওজিএল ভি0.12 , 14 বাইট

l⁵%⁵κ{0+}nI⌡∑¹

এখানে চেষ্টা করুন! বা সমস্ত পরীক্ষার ক্ষেত্রে চেষ্টা করুন। এটি একটি নামবিহীন ফাংশন হিসাবে লিখিত এবং chunk length; arrayস্ট্যাকের উপর প্রত্যাশা করে।

ব্যাখ্যা:

padding zeroes
l          get the array's length
 ⁵%        modulo the chunk length
   ⁵κ      chunk length - result of above
     {  }  that many times
      0+     append a 0 to the array

adding the array together
n      split into the chunks
 I     rotate clockwise
  ⌡    for each
   ∑     sum
    ¹  wrap the results in an array

Fএখানে চেষ্টা করে দেখুন কোডটির জন্য কী আপনি লিঙ্ক করেছেন?
পাভেল

@ ফাংশন নাম প্যাভেল করুন। জাতীয় একই অংশ গণনা করা হয় - SOGL মধ্যে গণনা করা হয় না। f=a=>a+2f=F\n
dzaima

2

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

gs÷*+Å0¹+ôøO

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

ব্যাখ্যা

gs÷*+Å0¹+ôøO
g            # Get the length of the first input (the array)
 s           # Push the second input on top of the result
  ÷          # integer divide the two values
   *         # Multiply with the second input (the length)...
    +        # and add the second input to the result
     Å0      # Create a list of zeros with that length
       ¹+    # Add it to the first input
         ô   # And finally split it into chunks of the input length...
          ø  # ...transpose it...
           O # and sum each resulting subarray
             # Implicit print



2

আর , 62 57 বাইট

-5 বাইট ব্যবহারকারী 2390246 ধন্যবাদ

function(a,l)rowSums(matrix(c(a,rep(0,l-sum(a|1)%%l)),l))

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

আপডেট হওয়ায় এটি আর খালি কেস পরিচালনা করতে পারে না handle

জিরোস aসহ প্যাডগুলি , lসারিগুলির একটি ম্যাট্রিক্স তৈরি করে এবং গণনা করে এবং সারির অঙ্কগুলি প্রদান করে।



@ ইউজার 2390246 অবশ্যই! আমার যখন এটি খালি কেসটি পরিচালনা করতে হয়েছিল তখন এটি আমার পুরানো সংস্করণে ছিল তবে এটি আমার "প্রাথমিক" ছিল এবং আমি আবার চেষ্টা করার কথা ভাবিনি।
জিউসেপে



2

জাপট , 7 বাইট

মানুষ, আমি [1], 3যুক্তিযুক্ত পরিমাণে বাইটে পরীক্ষার ক্ষেত্রে এটির কাজ করার চেষ্টা করার জন্য দীর্ঘ সময় ধরে ভুল জাপট পদ্ধতির সাথে লড়াই করেছি !

VÆëVX x

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


ব্যাখ্যা

অ্যারে Uএবং পূর্ণসংখ্যার অন্তর্নিহিত ইনপুট V

থেকে পূর্ণসংখ্যার একটি অ্যারের জেনারেট করুন 0থেকে V-1এবং একটি ফাংশন মাধ্যমে একে পাস Xবর্তমান উপাদান হচ্ছে।

ëVX

সূচক থেকে শুরু করে প্রতিটি Vতম উপাদানটি ধরুন ।UX

x

যোগ করে সেই অ্যারে হ্রাস করুন।


2

সি, (জিসিসি) 101 86 বাইট

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

f(int*a,int l,int s,int*m){if(s){int i=l;while(i&&s){m[l-i--]+=*a++;s--;}f(a,l,s,m);}}

ব্যবহার

int main() {
   int l = 3;
   int a[8] = {1,2,3,4,5,6,7,8};
   int *m = (int *)malloc(sizeof(int) * l);
   f(a, l, 8, m);
   for (int i=0; i<3; i++) {
    printf("%d, ",m[i]);
   }
}

নোট করুন যে আপনাকে অ্যারে (গুলি) এর দৈর্ঘ্য এবং হিপ (এম) এর উপর একটি নতুন গতিশীল অ্যারে পাস করতে হবে।



1

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

param($a,$l)1..$l|%{$y=--$_;($o=0)..$l|%{$o+=$a[$y+$_*$l]};$o}

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

আমরা ইনপুট $aরে এবং গ্রহণ $lকরি। তারপরে লুপ করুন1 করুন $l। প্রতিটি পুনরাবৃত্তি আমরা সাহায্যকারীকে $yবর্তমান সংখ্যার চেয়ে কম হতে সেট করে থাকি (এটি পাওয়ারশেল 0-সূচকগুলির মধ্যে তবে $lএনথটি 1-ইনডেক্সিংয়ে থাকে)। তারপরে আমরা আমাদের $oউতপুটটি সেট করেছিলাম 0এবং আবার লুপ করব $l। প্রতিটি অভ্যন্তরীণ পুনরাবৃত্তি আমরা কেবল $oযথাযথ $aসূচকযুক্ত রে উপাদানগুলিতে জমে থাকি। বাস্তবে দেখা যায় যে বিন্যাস দেখায় শেষে গত সূচিবদ্ধ লিভারেজ $nullএবং 0 + $null = 0

অভ্যন্তরীণ লুপটি শেষ হয়ে গেলে, আমরা আউটপুট $oএবং পরবর্তী অংশে চলে যাই। বিভিন্ন আউটপুটগুলি পাইপলাইনে রেখে যায় এবং Write-Outputপ্রোগ্রামের সমাপ্তির সাথে অন্তর্নিহিত মাধ্যমে আউটপুট হয়।




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