কলাম অনুসারে যোগফল


30

সংখ্যার অযৌক্তিক সারিগুলির একটি মজাদার তালিকা দেওয়া হয়েছে, কলাম অনুসারে সমষ্টি গণনা করুন , এটি এমন আরও একটি তালিকা যা দীর্ঘতম ইনপুট সারির দৈর্ঘ্য রাখে। আউটপুট তালিকার প্রথম এন্ট্রিটি ইনপুট সারিগুলির প্রথম প্রথম প্রবেশের যোগফল, দ্বিতীয়টি হ'ল সমস্ত দ্বিতীয় উপাদানগুলির যোগফল (যদি পাওয়া যায়) ইত্যাদি I আমি মনে করি নিম্নলিখিত উদাহরণটি আরও ভালভাবে ব্যাখ্যা করবে:

Input:      {[1,2,3,4],[1],[5,2,3],[6,1]}
Computation: [1,2,3,4]
              + . . .
             [1]. . .
              + + + .
             [5,2,3].
              + + . .
             [6,1]. .
              = = = =
    Output: [13,5,6,4]

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

{[0]}                         -> 0
{[1],[1,1,1,1]}               -> [2,1,1,1]
{[1],[1,2],[1,2,3],[1,2,3,4]} -> [4,6,6,4]
{[1,6,2,-6],[-1,2,3,5]}       -> [0,8,5,-1]

অ্যারেতে কি কেবল পূর্ণসংখ্যা থাকবে?
ইটিএইচ প্রডাকশনগুলি

আমি এখনও পর্যন্ত এটি সম্পর্কে ভাবি না তবে আমি মনে করি আপনি এটি ধরে নিতে পারেন। এর বিরুদ্ধে কিছু বলছে?
flawr

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

ঠিক আছে তবে আমি মনে করি যে এই অনুমানটি পুরোপুরি গ্রহণযোগ্য। এটি নিজেও চ্যালেঞ্জ পরিবর্তন করে না।
flawr

উত্তর:


19

জেলি , 1 বাইট

S

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

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

সমষ্টি পরমাণু Sজন্য একটি সাঁটে লেখার হয় +/, যা উপরন্তু দ্বারা হ্রাস সম্পাদন করে।

দ্রুততম /মাত্রা বরাবর দ্রুত হ্রাস করে, তাই এটি ইনপুটটির উপাদানগুলির জন্য এটির লিঙ্কটি কল করে। এখানে, উপাদানগুলি সারি হয়।

সংযোজন পরমাণু +ভেক্টরাইজ করে, সুতরাং দুটি সারি ভেক্টর যোগ করে উপাদান দ্বারা উপাদান যুক্ত করে। যখন আর্গুমেন্টগুলির বিভিন্ন দৈর্ঘ্য থাকে, তখন দীর্ঘতর যুক্তির উপাদানগুলির সংক্ষিপ্ততর অংশে কোনও অংশবিহীন থাকে না।

সর্বোপরি, যুক্তি হিসাবে একটি অনিয়মিত ম্যাট্রিক্স সহ, Sকলামের ভিত্তিতে যোগফলকে সংক্ষিপ্ত করে, সংক্ষিপ্ত সারিগুলিতে নিখোঁজ এন্ট্রিগুলি এড়িয়ে চলে।


1
হু, আমি জেলিতে স্বতঃসংশ্লিষ্টকরণের স্বাভাবিকভাবে যেভাবে কাজ করে তা প্রত্যাশা করেছিলাম row আমি এটি সারি ভিত্তিতে যোগফল নিতে হবে S€, তারপর?

1
একটি 2D অ্যারের জন্য, হ্যাঁ। /ভেক্টরাইজ করে না; এটি কেবল যুক্তিযুক্ত সমস্ত উপাদানের সাথে সম্পর্কিত ডায়াড প্রয়োগ করে।
ডেনিস





8

সিজেম , 7 5 বাইট

ডেনিসকে ধন্যবাদ জানাতে 2 বাইট!

{:.+}

এটি একটি বেনামে ব্লক সংজ্ঞায়িত করে যা তালিকার একটি তালিকা গ্রহণ করে, যেমন [[1 2 3 4] [1] [5 2 3] [6 1]], এবং এটি একটি তালিকা দ্বারা প্রতিস্থাপন করে [13 5 6 4],।

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

ব্যাখ্যা

{   }   e# Define block
 :      e# Fold over the following dyadic function
  .+    e# Vectorized addition

7

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

oXs

( এমএটিএল জানে না যে "ষাঁড়" এর বহুবচন "বলদ" ... )

ইনপুটটি চ্যালেঞ্জ পাঠ্যের মতো একই বিন্যাসে, সংখ্যা সারি ভেক্টরগুলির একটি সেল অ্যারে:

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

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

     % Implicit input
o    % Convert cell array to a matrix, right-padding with zeros each row
Xs   % Sum of each column
     % Implicit display

কোষগুলি ব্যবহার করতে খুব চালাক =)
flawr

4

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

3 টি বাইট সংরক্ষণ করা হয়েছে, ETH প্রডাকশনগুলির জন্য ধন্যবাদ

a=>a.map(b=>b.map((v,i)=>r[i]=~~r[i]+v),r=[])&&r

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


এতে কী ভুল ছিল reduce? a=>a.reduce((l,r)=>r.map((e,i)=>e+(l[i]||0)))শুধুমাত্র 45 বাইট।
নীল

@ নীল কি চূড়ান্ত ফলাফলের আকারকে শেষ প্রক্রিয়াজাত অ্যারের আকারের সীমাবদ্ধ করবে না?
আর্নৌল্ড

আহ, পরীক্ষাগুলি আমার ত্রুটি ধরতে ব্যর্থ হয়েছে, ধন্যবাদ!
নিল


3

সি ++ 14, 130 বাইট

নামবিহীন জেনেরিক ল্যাম্বদা হিসাবে:

[](auto C,auto&r){r.clear();int i=0,b=1;while(b--){r.push_back(0);for(auto c:C)r.back()+=i<c.size()?c[b=1,i]:0;++i;}r.pop_back();}

প্রয়োজন Cমত হতে vector<vector<int>>এবং বিনিময়ে মান rমত হতে vector<int>(অনুযায়ী ঠিক আছে হওয়া উচিত মেটা )।

অবরুদ্ধ এবং ব্যবহার:

#include<vector>
#include<iostream>

auto f=
[](auto C, auto&r){
 r.clear();         //clearing r just to be sure
 int i=0,b=1;       //i is the position in the row, b is a boolean
 while(b--){        //while something was added
  r.push_back(0);   //add zero
  for(auto c:C)     //for each container
   r.back() += i<c.size() ?   //add to the last element 
    c[b=1,i] : 0;             //set b and get the element or zero 
  ++i;              
 }
 r.pop_back();      //remove last unnecessary zero
}
;

using namespace std;

int main(){
 vector<vector<int> > C = { {1,2,3,4}, {1}, {5,2,3}, {6,1} };
 vector<int> r; 
 f(C,r);
 for (int i: r)
  cout << i << ", ";
 cout << endl;
}


3

হাস্কেল, 61 41 40 বাইট

-২০ বাইটের জন্য @ লাইকোনি, ধন্যবাদ -১ বাইটের জন্য @ নিমি!

f[]=[]
f l=sum[h|h:_<-l]:f[t:u|_:t:u<-l]

ব্যাখ্যা: এটি তালিকার প্রথম উপাদানগুলির কেবল একটি পুনরাবৃত্ত সংক্ষিপ্তসার, প্রতিটি মধ্যবর্তী পদক্ষেপে খালি তালিকা বাদ দেওয়ার বিষয়েও ডিল করে:

    sum[h|h:_<-l]                    -- sums up all the first elemetns of the list
                    [t:u|_:t:u<-l]   -- removes the first element of all the list, and removes empty lists
                   f                 -- applies f to the remaining list
                 :                   -- prepends the sum to the rest

তালিকান বোধগম্যতা ব্যবহার করা বেশ কয়েকটি বাইট সংরক্ষণ করে: আপনি এর (sum$sum.(take 1)<$>l)সাথে sum[h|h:_<-l]এবং (f$filter(/=[])$drop 1<$>l)সাথে প্রতিস্থাপন করতে পারেন f[t|_:t<-l,t>[]]
লাইকোনি

বাহ, আপনাকে অনেক ধন্যবাদ! আমি প্যাটার্ন মিলের সম্ভাবনাটি ভুলে যেতে থাকি [h|h:_<-l]!
flawr

এক বাইট recursive কল সংরক্ষিত করা যেতে পারে: f[t:u|_:t:u<-l]
নিমি

2

জে, 5 বাইট

+/@:>

তালিকাগুলির তালিকাভুক্ত তালিকা হিসাবে ইনপুট নেয়।

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

   1 ; 1 1 1 1
+-+-------+
|1|1 1 1 1|
+-+-------+
   (+/@:>) 1 ; 1 1 1 1
2 1 1 1
   1 ; 1 2 ; 1 2 3 ; 1 2 3 4
+-+---+-----+-------+
|1|1 2|1 2 3|1 2 3 4|
+-+---+-----+-------+
   (+/@:>) 1 ; 1 2 ; 1 2 3 ; 1 2 3 4
4 6 6 4

2

ডায়ালগ এপিএল , 3 বাইট

+⌿↑

+⌿ সমষ্টি কলাম অনুসারে

মিশ্র (তালিকার তালিকা, ম্যাট্রিক্সে সজ্জিত, জিরো সহ প্যাডিং) আর্গুমেন্ট

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


2
পৃথিবীতে এই 10 বাইট কেমন?
জাকারি

3
@ জাচারিটি সকাল 12:30 টায় টেমপ্লেট ব্যবহার করার সময় এটি ঘটে।
অ্যাডম


1

জাভা 8, 124 বাইট

এটি একটি এর জন্য ল্যাম্বডা এক্সপ্রেশন Function< int[ ][ ], int[ ] >

i->{int L=0,t,r[];for(int[]a:i)L=(t=a.length)>L?t:L;r=new int[L];for(;0>L--;)for(int[]a:i)r[L]+=a.length>L?a[L]:0;return r;}

এটি ইনপুট থেকে বৃহত্তম অ্যারের দৈর্ঘ্য নেয়, সেই আকারের একটি নতুন অ্যারে তৈরি করে এবং তারপরে প্রতিটি কলামের যোগফলগুলি অ্যারেতে লিখবে।


1

অক্টাভা, 69 বাইট

@(a){g=1:max(s=cellfun(@numel,a))<=s';f=g'+0;f(g')=[a{:}];sum(f')}{4}

1

আর, 105 97 বাইট

a=c();l=length;for(i in 1:l(w)){length(w[[i]])=max(sapply(w,l));a=rbind(a,w[[i]])};colSums(a,n=T)

এটি ইনপুটটিতে ফর্ম listনামে পরিচিত একটি অবজেক্ট গ্রহণ wকরে:

w=list(c(1,2,3,4),c(1),c(1,2))

এটি কলাম অনুসারে যোগফল দেয়: [1] 3 4 3 4

এই সমাধানটি আমার কাছে বেশ দীর্ঘ। আর যখন আপনি বিভিন্ন দৈর্ঘ্যের বেঁধে ভেক্টর চেষ্টা জিনিসকে বিশেষত্ব রয়েছে। উদাহরণ স্বরূপ :

a=c(1,2,3,4)
b=c(1,2)

cbind(a,b)

     a b
[1,] 1 1
[2,] 2 2
[3,] 3 1
[4,] 4 2

b ফিট করার জন্য আবার ব্যবহার করা হয়, এ কারণেই আমি একটি তালিকা দিয়ে শুরু করি।

প্রোগ্রামটি তালিকার সমস্ত উপাদানগুলির দৈর্ঘ্যকে দীর্ঘতম এক হিসাবে সমন্বিত করে, উপাদানগুলিকে বেঁধে রাখে এবং কলাম অনুসারে যোগফলকে গণনা করে। দৈর্ঘ্য সামঞ্জস্যকরণের উত্পাদন করে NAযা দ্বারা উপেক্ষা করা হয় sum

-8 বাইটস @ জারকো ডাবল্ডামকে ধন্যবাদ!


colSums(a,na.rm=T)কয়েক বাইট সাশ্রয়।
জেএডি

এবং আপনি এমনকি চালু করতে পারেন na.rm=Tমধ্যে n=T
জেএডি

1

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

<?foreach($_GETas$a)foreach($a as$i=>$x)$r[$i]+=$x;print_r($r);

ইনপুটগুলির তালিকা হিসাবে জিইটি প্যারামিটার সহ ব্রাউজারে কল করুন।

উদাহরণ:
script.php?a[]=1&a[]=2&a[]=3&a[]=4&b[]=1&c[]=5&c[]=2&c[]=3&d[]=6&d[]=1
(অ্যারের নামগুলি অগ্রাহ্য করা হয়েছে, যাতে আপনি যে কোনওভাবে নাম লিখতে পারেন))

পরীক্ষার জন্য এই ফাংশনটি ব্যবহার করে দেখুন:

function s($a){foreach($a as$b)foreach($b as$i=>$x)$r[$i]+=$x;return$r;}

বা http_build_query($array,a)প্রদত্ত অ্যারের অ্যারেটিকে জিইটি পরামিতিগুলিতে রূপান্তর করতে ব্যবহার করুন ।


0

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

#(for[i(range(apply max(map count %)))](apply +(for[v %](get v i 0))))

একটি বেসিক নেস্টেড লুপ।


0

জাপট, 5 বাইট

Uz mx

এটি অনলাইন পরীক্ষা!

Uইনপুট অ্যারে হয় এবং zঅ্যারেতে অ্যারেটি 90 ডিগ্রি দ্বারা ঘড়ির কাঁটার দিকে ঘোরান। অতএব,

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

হয়ে

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

(ফাঁকা স্থান কেবল প্রদর্শনের উদ্দেশ্যে যুক্ত করা হয়েছে))

mxতারপর mসঙ্কলন (দ্বারা এপিএস x), যা কাঙ্ক্ষিত ফলাফল দেয়: [13,5,6,4]

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