একটি অ্যারের থেকে খণ্ডগুলি তৈরি করুন


21

আপনার টাস্কটি এমন একটি প্রোগ্রাম লিখতে হবে যা একটি অ্যারে এবং একটি নম্বর দিয়েছে, আপনাকে অ্যারেটিকে সংখ্যা অনুসারে ভাগ করতে হবে।

বিধি

আপনার প্রোগ্রামটি একটি অ্যারে A, পাশাপাশি ইতিবাচক পূর্ণসংখ্যা প্রাপ্ত করবে n। তারপরে অ্যারেটি দৈর্ঘ্যের খণ্ডে বিভক্ত করা উচিত n, যদি স্ট্রিংয়ের দৈর্ঘ্যটি nকোনও অবশিষ্ট অংশ দ্বারা বিভাজ্য না হয় তবে তার নিজের অংশ হিসাবে বিবেচনা করা উচিত।

  • যদি nঅ্যারের দৈর্ঘ্যের চেয়ে বেশি হয় তবে Aআপনাকে অ্যারে ফিরতে হবে A, উদাহরণস্বরূপ: যদি n = 4এবং array A = [1,2,3], আপনার ফিরে আসা উচিত[1,2,3]

  • অ্যারেতে সংখ্যার চেয়ে কোনও প্রকার থাকতে পারে।

  • বাম থেকে ডানে কোনও আইটেমের ক্রম (বা দিকনির্দেশ) পরিবর্তন করা উচিত নয়। উদাহরণস্বরূপ if n = 2এবং A= [1,2,3]। এর চেয়ে [[1,2],[3]]যে কোনও ফলাফল অকার্যকর হবে।

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

n   A               Output

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

এটি , সুতরাং আপনি প্রতিটি ভাষার সংক্ষিপ্ত বাইটগুলি বিজয়ী হবেন।


4
যদি nআমাদের দৈর্ঘ্যের চেয়ে বেশি Aহয় আমাদের ফিরতে হবে Ayou আপনি নিশ্চিত যে এটি বোঝাতে চাইছেন না [A]?
অ্যাডাম

9
@ চাওগিয়াং আমার এখনও মনে হয় খুব বড় লোকের nফিরে আসা উচিত [A], যেমন [[1,2,3]]nঠিক যদি দৈর্ঘ্য হয় A?
অ্যাডম

4
@ চাওগিয়াং অ্যাডাম সঠিক ইমো। ফেরতের মানটি সামঞ্জস্যপূর্ণ হওয়া উচিত।
জোনাহ

1
@chaugiang ক্যান এন কি কখনো সমান 1 ?
DJMcMayhem

4
দৃ strongly়ভাবে টাইপ করা ভাষায়, ফিরে আসা কেবল অসম্ভব, এর Aচেয়ে [A] ভয়াবহ ভাষা বাদ দেয়।
dfeuer

উত্তর:



9

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

হিসাবে ইনপুট লাগে (n)(array)

n=>g=a=>a+a&&[a.splice(0,n),...g(a)]

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

মন্তব্য

n =>                  // n = chunk size
  g = a =>            // g = recursive function taking the array a[]
    a + a             // if a[] is empty, stop recursion and return an empty string
    &&                // otherwise, return an array made of:
    [ a.splice(0, n), //   the next chunk
      ...g(a)         //   followed by the result of a recursive call
    ]                 //   (the last call leads to ...'', which adds nothing)

এখন এটি একটি ঝরঝরে এবং পরিষ্কার সমাধান, এবং আমি পুনরাবৃত্তি বেনামে ফাংশন সম্পর্কেও শিখেছি!
জো ব্যক্তি

9

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

⊢⊂⍨(⍴⊢)⍴1↑⍨⊣

মূলত সমস্ত গল্ফিং করার জন্য অ্যাডমকে ধন্যবাদ জানাই (এবং মূলত আমার কাছে বর্তমানে সমস্ত এপিএল জ্ঞান রয়েছে> _>)।

ব্যাখ্যা

 ⊂⍨           Partitioned enclose (commuted, i.e. left and right switched) - for each  in left,  in right, if  = 0, create a new sub-array, push  to latest sub-array
             Right argument of entire expression
             Reshape - Change size of right into dimensions specified by left
   (⍴ )       Shape of (here, there is only one dimension - length)
             Right argument of entire expression
         ↑⍨   Take (commuted) - takes  elements from left where  is right. Extra elements (zeroes here) are automatically added
        1     1
             Left argument of entire expression

ফাঁসি

আর্গুমেন্ট 2, 1 2 3 4 5 6 7। নোট করুন যে এপিএল অ্যারেগুলি form a b cচ্ছিক পার্শ্ববর্তী বন্ধনীর সাথে ফর্মের ।

             2
        1     1
         ↑⍨   12 = 1 0
             1 2 3 4 5 6 7
   (⍴ )       1 2 3 4 5 6 7 = 7
             71 0 = 1 0 1 0 1 0 1
             1 2 3 4 5 6 7
 ⊂⍨           1 0 1 0 1 0 11 2 3 4 5 6 7 = (1 2)(3 4)(5 6)(7)

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


7
আপনার প্রথম এপিএল উত্তরের জন্য অভিনন্দন। এবং খুব সুন্দরভাবে ব্যাখ্যা! এখানে, একটি এপিএল পাই: 🥧
অ্যাডম

9

পাইথন 3 , 61 বাইট

lambda A,n:[A,[A[x:x+n]for x in range(0,len(A),n)]][n<len(A)]

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

এন> = লেন (এ) এর জন্য বৈধ আউটপুট উত্পাদন করতে হেনরি টির বিদ্যমান পাইথন 3 সমাধানটি পরিবর্তন করে ।
মন্তব্য করার সুযোগ সুবিধার অভাবে নিজস্ব উত্তর হিসাবে পোস্ট করা।


7

প্রোলোগ (এসডাব্লুআই) , 90 84 61 বাইট

কোড:

[]*_*[].
L*N*[P|R]:-length(P,N),append(P,T,L),T*N*R;P=L,R=[].

ইনপুট ফর্ম্যাটটি কিছুটা অদ্ভুত হতে পারে তবে এটি হ'ল:

A * n * Result.

উদাহরণস্বরূপ, ইনপুটটির জন্য:

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

আপনার ব্যবহার করা দরকার [1, 2, 3, 4, 5, 6] * 2 * Result.

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


অবরুদ্ধ সংস্করণ:

divide([], _, []).
divide(List, N, [Prefix | Result]) :-
    length(Prefix, N), append(Prefix, Remaining, List), divide(Remaining, N, Result) 
  ; Prefix = List, Result = [].

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


6

পিএইচপি, 15 বাইট

$f=array_chunk;

পিএইচপি প্রয়োজন 7. সাথে কল করুন $f(ARRAY, N)


6
আমি মনে করি না আপনি কোনও বিল্টিনকে অন্য নাম দেওয়ার দরকার আছে, তাই এটি কেবল 11 স্কোর, তাই না?
নীল

@ নীল আমি ভেবেছিলাম এটি সম্ভবত একটি নিষিদ্ধ ফাঁস ; তবে আপনি ঠিক থাকতে পারেন।
তিতাস

6

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

{*.batch($_)}

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

batchঅন্তর্নির্মিত মোড়ানো কড়িযুক্ত ফাংশন ।


আপনি যে ;কোনও কোডের পরে যা করতে হবে সেখানে কি তারা বাগটি ঠিক করেছে ?
জো কিং

2
@ জোকিং নং। আপনার সাথে কেবল ;তখনই বা প্রয়োজনের সাথে যুক্তিগুলি পাস করার$^a@_ প্রয়োজন ।
নভেলহোফ


5

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

i,j=input()
while j:print j[:i];j=j[i:]

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

ধরে নিই যে প্রতি লাইনে 1 অংশ গ্রহণযোগ্য আউটপুট।


4
পুনরাবৃত্ত
ল্যাম্বদা

@ ওভস - আপনার ইচ্ছামত আপনার নিজের উত্তর হিসাবে পোস্ট করার জন্য খুব সুন্দর এবং যথেষ্ট আলাদা।
এলপেড্রো

5

ব্রেইনফাক, 71 বাইট

,[>+>+<<-]>>>,[<[>.,<-]>>>++++[<++++++++>-]<.[-]<<<[<+>>+<-]<[->+<]>>>]

ডুনো যদি এই গণনা করা হয় বা না হয় ... ইনপুট ফর্ম্যাট:

<character whose ascii is n>AAAAAAAAAAAAA
For example, in the input:
 1234567890123492034
n is 32 since the ASCII value of space is 32

ইনপুট নেয় এবং প্রতিবার nঅক্ষরগুলি পাস করার সময় একটি জায়গায় রাখে

ব্যাখ্যা (কোনও কমা নেই কারণ এটি প্রোগ্রামটি ভেঙে দেবে):

, take n
[>+>+<<-] copy into next two cells (destroys original)
>>>, take first of A into next cell
[ while that input exists
<[>.,<-] if n is nonzero output take next of A subtract one from n
>>>++++[<++++++++>-]<.[-]< n is zero so put a space
<<[<+>>+<-] copy the old n into surrounding cells
<[->+<] move from first cell to second
>>>] take input, do again

2
71 টি অক্ষরের জন্য স্পেসগুলি সরিয়ে ফেলুন
মিল্কিওয়ে 90

হ্যাঁ, আমি ভেবেছিলাম আমি সে সবগুলি সরিয়ে দিয়েছি কিন্তু আমি সেগুলি লক্ষ্য করি না, ধন্যবাদ!
vityavv

কক্ষগুলি পুনর্গঠনের চেষ্টা করুন যাতে আপনি যে কোষগুলি বেশি ব্যবহার করেন সেগুলি আরও অ্যাক্সেসযোগ্য হয় (উদাহরণস্বরূপ, যদি ইনপুট সেলটি (আপনি যেখানে ,বেশি ব্যবহার করেন ) আরও বেশি ব্যবহৃত হয় তবে এটি এমন একটি ঘর স্থাপন করা যেতে পারে যা স্থাপন করা হয়েছে তার চেয়ে অ্যাক্সেস করা সহজ is অন্যান্য কোষে) বা ব্রুটোফেসার ব্যবহার করুন। আমি বিএফ-তে গল্ফ করার ক্ষেত্রে দক্ষ নই যাতে এই পরামর্শগুলি সহায়ক নাও হতে পারে।
মিল্কিওয়ে 90

এখন পর্যন্ত n n n A spaceআমার সেল সেটআপ হিসাবে আছে , আপনি যদি আরও ভাল
উপায়ের কথা

গেল A space n n n ...কাজ (অথবা space A n n n...)?
মিল্কিওয়ে 90





4

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

এটি অনলাইন চেষ্টা করুন! কাঠকয়ালের ডিফল্ট I / O স্ট্রিং ব্যতীত অন্য কোনও কিছু ব্যবহার করে তা প্রদর্শন করা কঠিন করে তোলে। আপনি যদি এমন একটি সম্পূর্ণ প্রোগ্রাম চান যা সংখ্যার তালিকাগুলি গ্রহণ করে এবং ফর্ম্যাট করা তালিকার আউটপুট দেয় তবে এটি নিম্নলিখিত হিসাবে করা যেতে পারে:

E⪪AN⪫ι,

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

  A      Input array
 ⪪       Split into chunks of
   N     Input number
E       Map over chunks
     ι  Current chunk
    ⪫   Joined with
      , Literal `,`
        Implicitly print each chunk on its own line

4

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 78 77 43 বাইট

a=>b=>{int i=0;return a.GroupBy(_=>i++/b);}

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

আমি মনে করি আমাদের কেবল লিখতে সক্ষম হওয়া উচিত int i;কারণ 0 হল ইনট এর ডিফল্ট। আমি এটা ত্রুটি এড়াতে যাক: error CS0165: Use of unassigned local variable 'i'



4

জে , 4 বাইট

<\~-

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

অ্যারেটিকে বাম দিক হিসাবে এবং আকার আকারকে ডান দিক হিসাবে দেয় g

একটি ডায়াডিক হুক এবং ইনফিক্স অ্যাডভারবকে নেতিবাচক যুক্তি সহ ব্যবহার করে, যা সংজ্ঞা অনুসারে আমরা যা চাই তা করে।

দ্রষ্টব্য: রিটার্নের ধরণটি অবশ্যই বক্স করা উচিত কারণ জে কেবলমাত্র সমান আকারের আইটেমগুলির টেবিলগুলিকে অনুমতি দেয়।



3

পিএইচপি , 45 বাইট

function f($a,$b){return array_chunk($a,$b);}

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


3
শুধু array_chunkএকটি বৈধ উত্তর হবে?
আর্নৌল্ড

@ আরনাউল্ড আমি জানি না। যদিও আমি এটি কর্মক্ষেত্রে ব্যবহার করি, তার আগে কখনও পিএইচপি তে গল্ফ করিনি।
লুইস ফিলিপ ডি জেসুস মুনোজ

আমিও 100% নিশ্চিত নই, তবে আমরা অঘোষিত ভেরিয়েবলের অন্তর্নিহিত রূপটিকে স্ট্রিংয়ে ব্যবহার করতে পারি এবং এর মতো কিছু করতে পারি ।
আর্নৌল্ড

(ত্রুটিযুক্ত: আমি অনির্ধারিত ধ্রুবক বোঝাতে চেয়েছি )
অ্যারনল্ড

3

জাভা 10, 106 80 বাইট

L->n->{for(int l=L.size(),i=0;i<l;)System.out.print(L.subList(i,(i+=n)<l?i:l));}

সীমানা ছাড়াই খণ্ডগুলি মুদ্রণ করে।

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

106 বাইট:

L->n->{var r=new java.util.Stack();for(int l=L.size(),i=0;i<l;)r.add(L.subList(i,(i+=n)<l?i:l));return r;}

আসলে তালিকার একটি তালিকা ফেরত দেয়।

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

ব্যাখ্যা:

L->n->{                       // Method with List and integer parameters and List return-type
  var r=new java.util.Stack();//  Create an empty List
  for(int l=L.size(),         //  Determine the size of the input-List
      i=0;i<l;)               //  Loop `i` in the range [0, size):
    r.add(                    //   Add to the result-List:
      L.subList(i,            //    A sublist of the input-list in the range from `i`
        Math.min(i+=n,l)));   //    to the minimum of: `i` + input-integer or the size
                              //    (and increase `i` by the input-integer at the same)
  return r;}                  //  Return the List of Lists of integers as result






3

ক্লোজার, 14 বাইট

#(partition %)

আমার মনে হয় বিল্টিন


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

3

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

import Data.Lists
chunksOf

এখানে আরও কয়েকটি বাইট সহ আরও আকর্ষণীয় সংস্করণ দেওয়া হয়েছে (প্রতিটি দ্রষ্ট্রে পাঁচ বাইটের জন্য নিমিকে ধন্যবাদ):

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

n![]=[]
n!x=take n x:n!drop n x

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


আমার মনে হয় আপনি এটি করতে পারেন
অলয়েসডিক

1
n!x=take n x:n!drop n xData.Listsপ্রদান করে chunksOf
নিমি

3

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

-২ বাইট ধন্যবাদ অ্যাডমবর্কবার্ককে

param($n,$a)$a|%{$b+=,$_
if($b.Count-ge$n){,$b;rv b}}
if($b){,$b}

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


2
দুটি বাইট সংরক্ষণ করার পরিবর্তে আপনার পক্ষে rv b(ওরফে জন্য Remove-Variable) সক্ষম হওয়া উচিত $b=@()
অ্যাডমবর্কবার্ক

3

জেলি , 1 বাইট

s

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

মুদ্রকটি এটিকে একক-উপাদান বিভাজনের মতো দেখায় তবে তালিকায় মোড়ানো হয় না, তারা আসলে।


1
এই রাতে আরও ভাল আউটপুট দেয় যে দেখায় যে একক উপাদান অ্যারেগুলি এখনও আসলে অ্যারে রয়েছে।
নিক কেনেডি

এর, ডাউনউইটটি কি আমি @ নিক কেনেডি'র লিঙ্কটি যুক্ত না করায়?
ভেন

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