বিপরীতে অ্যারে যোগফল


34

আপনার প্রোগ্রামটি ইনপুট হিসাবে একটি অ্যারে নেওয়া উচিত।

অ্যারে:

  1. সর্বদা 1 মাত্রিক হবে
  2. শুধুমাত্র পূর্ণসংখ্যা থাকবে
  3. খালি থাকতে পারে

প্রোগ্রামটির অ্যারেটি বিপরীত করা উচিত, এবং তারপরে মূলগুলিতে উপাদানগুলি যুক্ত করা উচিত:

ইনপুট: [1, 2, 3]

মূল: [1, 2, 3]

বিপরীত: [3, 2, 1]

[1, 2, 3]
 +  +  +
[3, 2, 1]

[1+3, 2+2, 3+1]

আউটপুট: [4, 4, 4]


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

#In             #Out
[8, 92],        [100, 100]
[1, 2, 3],      [4, 4, 4]
[5, 24, 85, 6], [11, 109, 109, 11]
[],             []
[999],          [1998]

এটি , সংক্ষিপ্ততম কোড (বাইটে) জয়!


জে 3 বাইট। প্রোগ্রাম টি। T = + |।
রিচার্ড ডোনভান

@ রিচার্ডডোনভান চমৎকার উত্তর! আপনি একটি মন্তব্যের পরিবর্তে উত্তর হিসাবে জমা দিতে পারেন দয়া করে :)
নোহ ক্রিস্টিনো

উত্তর:


13

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

নিম দ্বারা প্রস্তাবিত ফ্রি পয়েন্টে পরিবর্তন করে 5 বাইট সংরক্ষণ করুন

zipWith(+)=<<reverse

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


4
যেতে pointfree: zipWith(+)=<<reverse
নিমি

@ নিমিমি ওয়া আমি এটা করতে ভেবে দেখিনি তবে বেশ স্মার্ট।
গম উইজার্ড

আমি অ্যারে কোথায় রাখব? আমি টিআইও
নোহ ক্রিশ্চিনো

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

3
@maple_shaft: আমরা ব্যবহার =<<ফাংশন একসংখ্যা যা হিসাবে সংজ্ঞায়িত করা হয় থেকে: (=<<) f g x = f (g x) x। এখানে, ইনফিক্সে লিখিত: (zipWith(+) =<< reverse) x-> zipWith(+) (reverse x) x
নিমি

11

জেলি , 2 বাইট

+U

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

অথবা

+Ṛ

এটি অনলাইন চেষ্টা করুন! (দ্বিতীয় প্রোগ্রামের জন্য ধন্যবাদ মিঃ এক্সকোডার)

ব্যাখ্যা, যদিও এটি বেশ স্ব-ব্যাখ্যামূলক

+U  Main link
+   Add, vectorizing, 
 U                    the input, reversed

+Ṛ  Main link
+   Add, vectorizing,
 Ṛ                    the input, reversed, without vectorizing (same thing for depth-1 lists)

খালি অ্যারে জন্য [], এটি কিছুই আউটপুট। ঐটা ঠিক. জেলির খালি তালিকার উপস্থাপনা কেবল কিছুই নয়। নোট করুন যে জেলির একটি একক উপাদান সহ একটি তালিকার প্রতিনিধিত্ব হ'ল উপাদান। ŒṘআউটপুটটির পাইথন অভ্যন্তরীণ উপস্থাপনা দেখতে কোডে যুক্ত করুন ।


আমি 2 টি সমস্যা খুঁজে পেয়েছি। 1) যখন [9]এটি পরীক্ষা করা হয় তার পরিবর্তে 18 আউটপুট দেয় [18]এবং 2) যখন []এটি পরীক্ষিত হয় তখন কিছুই আউটপুট দেয় না।
নুহ ক্রিস্টিনো

@ নোহ ক্রিসটিনো এটি কোনও সম্পূর্ণ প্রোগ্রাম নয়, এবং এর উত্তরের জন্য ইতিমধ্যে একটি ব্যাখ্যা রয়েছে।
এরিক আউটগল্ফার 18

সুতরাং আমি অনুমান করি যে এটি ঠিক আছে, জেলি কীভাবে আউটপুট দেয়
নোহ ক্রিস্টিনো

পুনঃটুইট আমি আমার উত্তরের শেষে একটি অংশ যুক্ত করেছি যাতে আপনি কোডটির শেষে সেই পরমাণুটি পাইথন কীভাবে এটি প্রিন্ট করবেন তা দেখতে পারেন।
হাইপার নিউট্রিনো

+Ṛখুব কাজ করে।
মিঃ এক্সকোডার

11

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

a=>[...a].map(e=>e+a.pop())


ওহ, মানুষ, আমি প্রায় সেখানে ছিলাম, তবে আমি ক্লোনটি করতে স্প্রেড অপারেটরটি ব্যবহার করার কথা ভাবিনি।
রিক হিচকক

আপনি কি এম্বেড যুক্ত জাভাস্ক্রিপ্ট এর জন্য চেষ্টা করতে পারেন?
নোহ ক্রিস্টিনো



7

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

lambda l:[i+j for i,j in zip(l,l[::-1])]

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

অন্যান্য, খাটো পাইথন উত্তর সঙ্গে একটি তালিকা ধী প্রতিস্থাপন map। আশা করি আমি আরও দ্রুত এটি করার চিন্তা করতাম। ; -;


1
আমার সমস্ত পরীক্ষা পাস!
নোহ ক্রিস্টিনো

7

জাপট , 7 বাইট

mÈ+Ug~Y

এটি অনলাইন চেষ্টা করুন! -Qআউটপুট অ্যারে বিন্যাস করতে পতাকা সহ ।

ব্যাখ্যা

অন্তর্ভুক্ত: U= ইনপুট অ্যারে

নিম্নলিখিত ফাংশন দ্বারা ইনপুট মানচিত্র করুন ...

+Ug

ইনডাক্ট অ্যারে ইনডেক্সে মান, এবং মানটি ...

~Y

-(index+1)যা অ্যারের প্রান্ত থেকে উপাদান পায়।


1
ভাল করেছ! আমি একাধিক ইনপুট জিনিস পছন্দ করি!
নোয়া ক্রিস্টিনো

1
আমি সত্যিই একাধিক ইনপুট জাপট ইন্টারপ্রেটার পছন্দ করি। সুন্দর কাজ!
অলিভার

এটি সত্যিই দুর্দান্ত :-) আমি এই বৈশিষ্ট্যটি "অফিসিয়াল" দোভাষীর সাথে যুক্ত করব, তবে বর্তমান নকশার সাহায্যে এটি নিরবিচ্ছিন্ন ...
ETH প্রোডাকশন



6

পাইথন 2 , 33 32 বাইট

-1 বাইট @xnor ধন্যবাদ

lambda l:[i+l.pop()for i in l*1]

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


আমার সমস্ত পরীক্ষার ভাল কাজটি উত্তীর্ণ হয়েছে :)
নোহ ক্রিস্টিনো

কি অস্বাভাবিক পদ্ধতি। l*1একটি বাইট সংরক্ষণ করে।
xnor

আমি সমাবস্থা বুঝতে অসুবিধা হচ্ছে না l*1, কোনো বিবরণাদি
dhssa

@ ডিডিএসএ তালিকাটির l*1একটি অনুলিপি তৈরি করেছেন l। যদি আমরা একটি অনুলিপি না তৈরি করি,pop() লুপের জন্য অ্যাক্সেস করার আগে তালিকা থেকে উপাদানগুলি মুছে ফেলা হবে।
ovs

ব্যাখ্যার জন্য ধন্যবাদ, আমি এখন এটি পেয়েছি। কোডিং জন্য ভাল কৌশল।
dhssa


5

সি # (.নেট কোর) , 61 60 বাইট

-1 বাইট ধন্যবাদ TheLethalCoder

a=>a.Reverse().Zip(a,(x,y)=>x+y).ToArray()

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

বাইট গণনা এছাড়াও অন্তর্ভুক্ত:

using System.Linq;

ব্যাখ্যার জন্য - লিনকিউতে জিপ ফাংশন দুটি সংগ্রহ গ্রহণ করে এবং সমস্ত সম্পর্কিত উপাদানগুলির জন্য প্রদত্ত ফাংশন সম্পাদন করে, যেমন। উভয় প্রথম উপাদান একসাথে, উভয় দ্বিতীয় উপাদান ইত্যাদি।


1
ভাল উত্তর. ইনপুট সম্পর্কে মন্তব্য করার জন্য ধন্যবাদ।
নোহ ক্রিস্টিনো

1
হ্যালো এবং পিপিসিজিতে আপনাকে স্বাগতম! বাইট গণনায় আপনার পিছনের আধা কোলোন লাগবে না। আমি বিশ্বাস করি আপনি Zipকলটি থেকে সরাসরি সংগ্রহটি ফিরিয়ে দিতে পারবেন যাতে কোনও প্রয়োজন নেই ToArray()। সুন্দর কাজ!
দ্য লেথালকোডার

@ দ্য লেথলকোডার ধন্যবাদ, এবং আমি টোআরএ যুক্ত করেছি () যেহেতু চ্যালেঞ্জটি অ্যারে সম্পর্কিত, তাই আমি চেয়েছিলাম স্বতঃসংশ্লিষ্ট ল্যাম্বদা অ্যারে -> অ্যারে হবে।
গ্রজেগোর্জ পুয়াওস্কি

4

এটা তোলে আউটপুট ""জন্য [], যে অদ্ভুত। আপনার দোষ শুধু ভাষা নয়।
নোহ ক্রিস্টিনো

@ নোয়া ক্রিসটিনো এটি সিজেমের উপস্থাপনা []
এরিক আউটগল্ফার

হ্যাঁ, আমার চ্যালেঞ্জের জন্য একটি স্ট্যান্ডার্ড আউটপুট পাওয়া শক্ত কারণ অনেকগুলি ভাষা বিশেষত অ্যারে প্রদর্শন করে []এবং [4]তাই এটি ঠিক আছে।
নোয়া ক্রিস্টিনো

4

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

⌽+⊢

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

ব্যাখ্যা

          The argument reversed
+           Plus
          The argument

1
ninja'd। আমাকে একটি এপিএল কীবোর্ডে স্থানান্তর করা দরকার ... xD
উরিয়েল

@ উরিল আমি সর্বদা আমার এপিএল কীবোর্ডে থাকি: ডি
ক্রিটিক্সী লিথোস

সরলতা পছন্দ। এটি ⌽+⊢কোনও ইনপুট ছাড়াই আউটপুট দেয়
নোহ ক্রিশ্চিনো

@ নোহক্রিস্টিনো খালি ভেক্টর সহ একটি খালি ইনপুট নির্দিষ্ট করা আছে । কোনও যুক্তি ছাড়াই, এটি নিজেই ট্রেনটি
ছাপায়


4

আর , 17 16 বাইট

-1 বাইট ধন্যবাদ জহুরিওকে

rev(l<-scan())+l

স্টিডিন থেকে পড়া; ভেক্টরকে ফেরত দেয়; numeric(0)খালি তালিকার জন্য শূন্য দৈর্ঘ্যের সংখ্যাযুক্ত ভেক্টর।

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


খালি "অ্যারে" এর জন্য এটি ফিরে আসেnumeric(0)
নোহ ক্রিস্টিনো

1
@ নোহ ক্রিশিন্তো একটি খালি ভেক্টরকে numeric(0)আর হিসাবে উপস্থাপিত হয়েছে
লিকি নুন

সেটা ঠিক আছে. @ লিকিউন
নোহ ক্রিস্টিনো

1
rev(l<-scan())+l, 16 বাইট?
djhurio

রেকর্ডের জন্য, একটি আর + পিসিআর কার্যকরী বিকল্প কেবলমাত্র একটি বাইট দীর্ঘ:pryr::f(rev(x)+x)
জাইসি

4

ক্লোজার, 20 17 বাইট

@ ম্যাটপুটনামকে ধন্যবাদ 3 টি বাইট সংরক্ষণ করা হয়েছে

#(map +(rseq %)%)

অ-গল্ফিং ভাষার সাথে বেশ প্রতিযোগিতামূলক বলে মনে হচ্ছে।

এটি অনলাইনে দেখুন


rseqপরিবর্তে ব্যবহার করুন reverse
ম্যাটপুটনাম


3

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

($a=$args)|%{+$a[--$i]+$_}

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

কমান্ড-লাইন আর্গুমেন্ট হিসাবে ইনপুট নেয়।


আপনি একটি টিআইও যোগ করতে পারেন? এবং নামের মতো একটি লিঙ্ক এটির
নোহ

@ নোয়া ক্রিসটিনো: ভালো লেগেছে? এখনও অবধি জিনিসটি ব্যবহার করেন নি, তাই আমি কী ভুল করেছি তা জানি না যাইহোক, যদি আপনি লোকেরা তাদের উত্তরগুলিতে একটি নির্দিষ্ট পরিষেবা ব্যবহার করার প্রত্যাশা করেন, তবে দয়া করে টাস্কের বিবরণে এটি বিবরণ করুন।
জোয়

সেটা ঠিক আছে. এটি কেবল প্রয়োজন উত্তরগুলি আরও উচ্চ মানের করে তোলে এবং ভবিষ্যতের দর্শকদের জন্য এটি পরীক্ষা করা আরও সহজ নয়।
নোয়া ক্রিস্টিনো

3

সি, 49 বাইট

f(a,n,b)int*a,*b;{for(b=a+n;a<b--;a++)*a=*b+=*a;}

কিছু না a,n,bহওয়া a,b,nউচিত?
এরিক আউটগল্ফার

@ এরিকথ আউটগল্ফার নং, ফাংশনের কোনও bপরামিতি নয়, গল্ফিংয়ের কারণে সেখানে কেবল একটি অতিরিক্ত সংজ্ঞা দেওয়া আছে। aঅবশ্যই পূর্ণসংখ্যার পয়েন্টার nহতে হবে এবং অ্যারেতে কতগুলি পূর্ণসংখ্যা রয়েছে তা অবশ্যই হওয়া উচিত।
orlp

আপনি কি একটি টিআইও লিঙ্ক যুক্ত করতে পারেন?
নোহ ক্রিস্টিনো

3

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

($n=$args)|%{$n[-++$i]+$n[$i-1]}

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

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

@ ব্রায়েন্টিস্টকে 8 টি বাইট সংরক্ষণ করা হয়েছে


এটি কোনও অ্যারে আউটপুট দেয় না।
নোহ ক্রিস্টিনো

1
@ নোহক্রিস্টিনো পাওয়ারশেল ইনপুট / আউটপুটটি সাধারণভাবে অদ্ভুত। এটা তোলে হয় একটি অ্যারের হিসাবে outputting, এটা ঠিক কিছুই ক্যাপচারিং বলেন অ্যারে, এবং তাই যখন অন্তর্নিহিত Write-Outputঘটবে, এটা stdout- এ প্রতি লাইনে একটি আইটেমের উপর জিনিষ রাখে। উদাহরণস্বরূপ, আপনি এখানে দেখতে পারেন যে, বন্দী হওয়ার পরে অবজেক্টটি আসলে একটি arrayপ্রকার।
অ্যাডমবর্কবর্ক 18

যথেষ্ট ভাল তবে :) এটি চেষ্টা করেছেন
নোহ ক্রিস্টিনো

আমি মোবাইলে আছি এবং এত সহজে পরীক্ষা পারবেন না, কিন্তু এটি 1 বাইট খাটো মুছে ফেলার জন্য নয় paramএবং তারপর প্রতিস্থাপন 1..$nসঙ্গে 1..($n=$args)?
ব্রিটিশবাদি

@ ব্রায়েন্টিস্ট বেশ কিছু নয়, তবে আপনি আমাকে একাধিক বাইট সংরক্ষণ করে এটি সম্পর্কে চিন্তাভাবনা করার একটি আলাদা উপায় দিয়েছেন। ধন্যবাদ!
অ্যাডমবর্কবর্ক

3

জাভা 8, 61 57 56 53 বাইট

a->{for(int l=0,r=a.length;l<r;a[l]=a[--r]+=a[l++]);}

-1 বাইট এবং বাগ-স্থির ধন্যবাদ @ নেভায়েকে ধন্যবাদ ।
-3 বাইটস @ অলিভারগ্রাগোয়ারকে ধন্যবাদ ।

(এটা এর (ক বন্দর ছিল এবং দ্বারা golfed 4 এর) 8 বাইট @jkelm এর সি # উত্তর , কিন্তু এখন এটি একটি ভিন্ন খাটো সমাধান ধন্যবাদ করার @ OliverGrégoire ।)

ব্যাখ্যা:

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

পদ্ধতিটি বাইটগুলি সংরক্ষণ করতে ইনপুট-অ্যারে সংশোধন করে, সুতরাং কোনও রিটার্ন-টাইপের দরকার নেই।

a->{                    // Method with integer-array parameter and no return-type
  for(int l=0,          //  Left-integer (starting at 0)
          r=a.length;   //  Right-integer (starting at the length of the input-array)
      l<r;              //  Loop as long as left is smaller than right
    a[l]=               //   Change the number at the current left index to:
         a[--r]+=a[l++] //    The number at the right index + itself
                        //    (The += adds the number at the left index also to the right index)
                        //    (And the --/++ increases/decreases the indexes by 1,
                        //     until we've reached the middle of the array)
  );                    //  End of loop
}                       // End of method

1
আপনি ব্যবহার করে 1 বাইট সংরক্ষণ করতে পারেন a->{for(int i=0,l=a.length;i<l/2;a[i]=a[l+~i]+=a[i++]);}
নেভায়ে

1
কোডটি বিজোড় দৈর্ঘ্যের 1,2,3( অ্যারের 4,2,4পরিবর্তে রিটার্ন 4,4,4) সহ অ্যারেগুলিতে ব্যর্থ হয় , লুপটি যতক্ষণ 2*i<lনা চালানো হয়, ততক্ষণ না i<l/2
নেভায়ে

@ নেভা ধন্যবাদ আমি জানতাম এটি গল্ফ করা সম্ভব l-i-1, কেবল এটি নিয়ে আসতে পারিনি ..
কেভিন ক্রুইজসেন

2
53 বাইট: a->{for(int l=0,r=a.length;l<r;a[l]=a[--r]+=a[l++]);}
অলিভিয়ার

1
@ অলিভিয়ারগ্রোওয়ের ধন্যবাদ এবং আপনার lএবং rআপনার বাস্তবায়নের জন্য অর্থবোধ করে, তাই আমি সেগুলিও ব্যবহার করেছি (এবং একটি ব্যাখ্যা যুক্ত করেছি)।
কেভিন ক্রুইজসেন


2

পারফেক্ট, দুর্দান্ত কাজ
নোহ ক্রিস্টিনো

এরিক, languages ​​টি ভাষার মত এক্সডি হিসাবে আমার সমস্যা সমাধান করছে
নোহ ক্রিশ্চিনো

@ নোহ ক্রিশিন্তো হ্যাঁ আমি এটিকে 15 বছরের নিচে রাখার চেষ্টা করছি ...;)
এরিক দি আউটগল্ফার

আমি প্রতিটি জমা দেওয়ার জন্য এক্স -1 যোগ করতে শুরু করতে যাচ্ছি এক্স
নোহ ক্রিশ্চিনো

2

anyfix , 3 বাইট

"U+

ট্রাইটঅনলাইনে সংস্করণ! যে কোনও ফিক্সের একটি পুরানো সংস্করণ, এতে কয়েকটি মারাত্মক ত্রুটি রয়েছে যেমন উত্স কোডে টাইপসের কারণে তালিকাগুলি যোগ করতে না পারা। পরিবর্তে গিটহাবে কোড ব্যবহার করুন।

"U+  Program
"    Duplicate top of stack
 U   Reverse top of stack if it is a list (which it should be...)
  +  Add, vectorizing for lists

2

নিম , 2 বাইট

এটি এমন একটি ফাংশন যা স্ট্যাকের শীর্ষে ইনপুট নেয় এবং স্ট্যাকের শীর্ষে আউটপুট দেয়।

𝕓𝔻

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


সাধারণ ইনপুট পদ্ধতির পরিবর্তে প্রকৃত নিম কোডের মাধ্যমে ইনপুট স্ট্যাকটি সংশোধন করার অনুমতি রয়েছে?
লিফডেভেন

@ লিফডওয়েভেন হ্যাঁ, এটি আই / ও মেটা পোস্টের ডিফল্টগুলিতে অনুমোদিত in
Okx

2

Röda , 22 বাইট

{reverse(_)<>_1|[_+_]}

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

এটি একটি বেনামে ফাংশন যা অ্যারে নেয় এবং মানগুলির একটি স্ট্রিম প্রদান করে, যা টিআইও লিঙ্ক আউটপুটগুলিকে নিউলাইনগুলিতে পৃথক করে।

ব্যাখ্যা

reverse(_)          The array reversed
<>                  interleaved with
_1                  the array itself
                    Push each element to the stream
[_+_]               Pull two values and push their sum

আমার পরীক্ষা পাস! দুর্দান্ত উত্তর।
নোহ ক্রিস্টিনো

2

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

@ETH প্রোডাকশনগুলিতে একটি বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে।

a=>a.map((e,i)=>e+a[a.length+~i])


আপনি কীভাবে পরীক্ষার মামলাগুলিতে রেখেছেন তা আমি পছন্দ করি, +২
নূহ ক্রিশিন্তো

আমার মনে হয় আপনি পরিবর্তন করে একটি বাইট সংরক্ষণ করতে পারবেন -i-1করার +~i
ইটিএইচ প্রোডাকশনগুলি

@ ইথ প্রডাকশনস, হ্যাঁ, ধন্যবাদ!
রিক হিচকক


2

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

for(;a&$c=$argv[++$i];)$a[]=$c+$argv[$argc-$i];print_r($a);

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়; খালি ইনপুট জন্য খালি আউটপুট

পিএইচপি> 7.0 এ একটি সতর্কতা দেয়। এই সংস্করণটি (60 বাইট) করে না:

for(;++$i<$argc;)$a[]=$argv[$i]+$argv[$argc-$i];print_r($a);

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