ইনপুটটির যোগফলের জন্য নিবন্ধহীন তালিকা থেকে দুটি পূর্ণসংখ্যার সন্ধান করুন


13

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

কাজটি:

একটি নিরপেক্ষ তালিকা থেকে 2 পূর্ণসংখ্যার সন্ধান করুন যা প্রদত্ত পূর্ণসংখ্যার যোগফল।

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

(দ্রষ্টব্য: ভিডিওতে, এগুলি ঠিক তেমন প্রয়োজনীয়তা নয় are 'সাক্ষাত্কারকারী' তার একাধিকবার পরিবর্তন করেছে changed)

যেমন।

sum2 8 <<EOF
1
7
4
6
5
3
8
2
EOF

ছাপে 3এবং 5করে প্রস্থান অবস্থা যে এই 0. নোট হয় 1,7এবং 2,6এছাড়াও অনুমতি ফলাফল হবে।

sum2 8 <<EOF
1
2
3
4

কোনও সম্ভাব্য কম্বো না হওয়ায় প্রস্থান স্থিতি 1 প্রদান করে। 4,4অনুমোদিত নয়, নিয়ম 5 অনুযায়ী।


15
এটি প্রথমে স্যান্ডবক্সের কিছু শিথিল প্রান্তকে ঝেড়ে ফেলার সুযোগ পেলে এটি একটি দুর্দান্ত প্রশ্ন হতে পারে । উদাহরণস্বরূপ, এর মতো কোনও কিছুর জন্য আমি এমন একটি ফাংশন লিখতে আশা করব যা প্রতারণামূলক মান বা সংখ্যার জোড় ফিরে পেয়েছে।
নীল

2
উদাহরণস্বরূপ, কেন ফেরত জুটি (3,5) এবং (1,7) নয়?
রড

4
আনর্ডারড তালিকায় কীভাবে "প্রথম" জুটি থাকতে পারে? এটাই স্বভাবত স্ববিরোধী।
পিটার টেলর

23
আমি সত্যিই প্রস্থান 0 / প্রস্থান 1 জিনিসটি একটি ভাল ধারণা বলে মনে করি না। অনেকগুলি ভাষা এর মতো সহজেই অস্তিত্ব রাখতে পারে না এবং এটিকে সাধারণত একটি ত্রুটি দিয়ে প্রস্থান করার অনুমতি দেওয়া হয় (যেমন এসটিডিআরআর উপেক্ষা করুন) অনেক গল্ফিংয়ের ভাষাগুলিরও প্রস্থান কোডের দ্বারা প্রস্থান করার সহজ উপায় নেই বলে আমি মনে করি
R

2
দ্বিতীয় ভাবাতে, কিছু উত্তর প্রস্থান কোড 1 তৈরির চেষ্টা করে গেছে, তাই এখনই প্রয়োজনীয়তাগুলি না পরিবর্তন করা ভাল
লুইস মেন্ডো

উত্তর:


5

বাশ, 84 বাইট

আমার (মোটামুটিভাবে) গুগলের ইঞ্জিনিয়ারের সমাধানটি প্রয়োগ করা হয়েছে তবে ব্যাশ এবং একটি ইনপুট স্ট্রিম ব্যবহার করা হচ্ছে - আমার সমাধান নয়, তাই এটি গণনা করে না।

while read V;do((V<$1))&&{ ((T=R[V]))&&echo $T $V&&exit;((R[$1-V]=V));};done;exit 1

পদ্ধতি

যখন আমরা ইনপুট স্ট্রিম থেকে পূর্ণসংখ্য V পড়তে পারি তবে লক্ষ্য $ 1 এর চেয়ে কম হয় তবে ইতিমধ্যে যদি $ 1-V দেখা যায় তবে $ 1-V এবং V মুদ্রণ করুন এবং প্রস্থান করুন 0 (অন্য) ইনপুট candidate 1-V প্রস্থান 1 এর জন্য প্রার্থীকে সংরক্ষণ করুন


4

ব্র্যাচল্যাগ , 9 বাইট

h⊇Ċ.+~t?∧

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

ধরে নিচ্ছি আমি চ্যালেঞ্জটি সঠিকভাবে বুঝতে পেরেছি ...

ব্যাখ্যা

h⊇Ċ          Ċ ('couple') has two elements, and is a subset of the head of the input
  Ċ.         Output = Ċ
   .+~t?     The sum of the elements of the Output is the tail of the Input
        ∧    (disable implicit unification)

4

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

$_=get;put lines().combinations(2).first(*.sum==$_)//exit 1

এটি ব্যবহার করে দেখুন
কোন সম্ভাব্য ফলাফল নিয়ে এটি ব্যবহার করে দেখুন

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

$_ = get;            # get one line (the value to sum to)

put                  # print with trailing newline
    lines()          # get the rest of the lines of input
    .combinations(2) # get the possible combinations
    .first(          # find the first one
      *.sum == $_    # that sums to the input
    )
  //                 # if there is no value (「Nil」)
    exit 1           # exit with a non-zero value (「put」 is not executed)

4

জাভাস্ক্রিপ্ট ES6, 58 70 68 64 বাইট

a=>b=>{for(i in a)if(a.includes(b-a[i],i+1))return[a[i],b-a[i]]}

অ্যারে আকারে একজোড়া সংখ্যার সন্ধান undefinedপেলে অন্যথায় ফিরে আসে , একটি মিথ্যা মান।

f=a=>b=>{for(i in a)if(a.includes(b-a[i],i+1))return[a[i],b-a[i]]}

console.log(f([1,7,4,6,5,3,8,2])(8));
console.log(f([1,2,3,4,5,6,7,8])(8));
console.log(f([1,2,3,4])(8));
console.log(f([2,2])(4));


উদাহরণটি ছিল 3, 5তবে এই ফলাফলগুলি 1, 7...
নীল

@ নীল, দুঃখিত, আমি বিধিগুলি সংশোধন করেছি কারণ আমি গণ্ডগোল পেয়েছি। 1,7 ঠিক আছে।
ফিলাকলবর্ণ

1
এটা কি কাজ করবে না f([2,2] 4)?
ক্লিফ্রুট 14

1
@ ক্লিফ্রুটকে এখন সেই মামলার জন্য কাজ করা উচিত
টম

1
দুর্দান্ত includesকৌশল।
নিল

4

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

পূর্ণসংখ্যার অ্যারে aএবং sবাক্য গঠন বাক্য গঠনে প্রত্যাশিত যোগফল নিয়ে যায় (a)(s)। মিলের পূর্ণসংখ্যার জুড়িটিকে অ্যারে হিসাবে ফেরত দেয়, বা undefinedযদি এরকম কোনও জুড়ি না থাকে।

a=>s=>(r=a.find((b,i)=>a.some(c=>i--&&b+c==s)))&&[r,s-r]

ফর্ম্যাট এবং মন্তব্য

a =>                      // given an array of integers (a)
  s => (                  // and an expected sum (s)
    r = a.find((b, i) =>  // look for b at position i in a such that:
      a.some(c =>         //   there exists another c in a:
        i-- &&            //     - at a different position
        b + c == s        //     - satisfying b + c == s
      )                   //   end of some()
    )                     // end of find(): assign the result to r
  ) &&                    // if it's not falsy:
  [r, s - r]              // return the pair of integers

পরীক্ষা


3

জেলি , 14 বাইট

ŒcS=⁹$$ÐfḢṄo⁶H

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

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

এই প্রোগ্রামটি প্রস্থান কোডের প্রয়োজনীয়তার জন্য না হলে 4 বাইট সংক্ষিপ্ত হতে পারে; জেলিতে 1 এর একটি প্রস্থান কোড ফেরত দেওয়া মোটামুটি শক্ত। (এটা সম্ভব যে এটি করার জন্য একটি নিদারুণ উপায় রয়েছে))

ব্যাখ্যা

ŒcS=⁹$$ÐfḢṄo⁶H
Œc                All pairs of values from {the first argument}
       Ðf         Take only those which
  S=⁹               sum to {the second argument}
     $$           Parse the preceding three builtins as a group
         Ḣ        Take the first result (0 if there are no results)

          Ṅ       Output this result (plus a newline) on standard output
           o⁶     If this value is falsey, replace it with a space character
             H    Halve every element of the value

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


3

পার্ল 5 , 51 বাইট

-pliপতাকাগুলির জন্য 5 বাইটের জন্য 46 কোডের বাইট ।

$\="$_ $v"if$h{$v=$^I-$_};$h{$_}=1}{$\||exit 1

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

ধারণাটি হ'ল ইনপুট তালিকার পুনরাবৃত্তি: একটি সংখ্যায় x( $_), যদি আমরা আগে দেখেছি n-x( $^I-$_) তবে আমরা যা খুঁজছিলাম তা আমরা খুঁজে পেয়েছি এবং $\এই দুটি মান ( "$_ $v") এ সেট করেছি । শেষে, যদি $\সেট না করা থাকে, তবে আমরা exit 1, অন্যথায় এটি স্পষ্টভাবে মুদ্রিত হবে।


একটি অক্ষর ট্যাব দুটি চরিত্রের জায়গায় কাজ করে ^I?

@ ais523 দেখে মনে হচ্ছে আমি পারছি না। পার্ল এর পুরানো সংস্করণে যদিও এটি সম্ভব ছিল।
দাদা

3

রাদা , 60 56 বাইট

f s,a{seq 1,s|{|x|[[x,s-x]]if[x in a,s-x in a-x]}_|pull}

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

কোনও উত্তর না থাকলে এই কোডটি একটি ত্রুটি ছুড়ে দেয়। এটি সমস্ত সম্ভাব্য জোড়া তৈরি করে যা যোগফল গঠন করতে পারে s, অর্থাৎ। 1, s-1, 2, s-2, 3, s-3, ... তারপর এটা পরীক্ষা করে উভয় সংখ্যার অ্যারের মধ্যে হয় aএবং তাই যদি তাদের প্রবাহে push কর্মের। pullস্ট্রিম থেকে একটি মান পড়ে এবং তা ফেরত দেয়। স্ট্রিমে কোনও মান না থাকলে এটি ত্রুটি ছুঁড়ে দেয়। সরানো সঙ্গে a-xঅ্যারে প্রদান ।ax


3

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

এই সংক্ষিপ্ত, কোড 1 সহ প্রস্থানের বিধিগুলি স্পষ্ট না হওয়া পর্যন্ত। এখন কিছু না পাওয়া গেলে ত্রুটি সহ প্রস্থান করে।

-৫ বাইট @ পিলনরয়েজকে ধন্যবাদ জানায়

-4 বাইট @ রডকে ধন্যবাদ

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

a,s=input()
while a:
 x=a.pop()
 if s-x in a:r=s-x,x
print r

@ পিলোনরেজ এটি বুঝতে পারেন নি, আপনাকে ধন্যবাদ!
ডেড পসসাম

@ পিলনরয়েজ এটি নিয়ম লঙ্ঘন করবে: তালিকার বিভিন্ন পদে দু'টি পূর্ণসংখ্যার অবশ্যই ফিরতে হবে। (অর্থাত্ আপনি একই অবস্থান থেকে একই সংখ্যায় দু'বার ফিরে আসতে পারবেন না)
মৃত পসসাম

3
আপনি 2 বাইট হ্রাস করতে মিশ্র ইন্ডেন্টেশনের জন্য স্পেস + ট্যাব ব্যবহার করতে পারেন বা 4 বাইট হ্রাস করতে স্যুইচ করতেinput() পারেন
রড

@ রড ধন্যবাদ! ইনপুটটি আরও সুন্দর মনে হচ্ছে
ডেড পসসাম

2
@ এরিক ডুমিনিল ইয়ে এটি eval(raw_input())(আমার মনে হয়) এর সমতুল্য ।
ইয়াতসি

2

সি ++ 133 বাইট (ঝনঝন 4 এবং গিসি 5.3 -স্টডি = সি ++ 14 দিয়ে সংকলিত)

#include <set>
auto f=[](auto s,int v,int&a,int&b){std::set<int>p;for(auto i:s)if(p.find(i)==end(p))p.insert(v-i);else{a=v-i;b=i;}};

সি 108 বাইট

void f(int*s,int*e,int v,int*a,int*b){do{int*n=s+1;do if(v-*s==*n){*a=*s;*b=*n;}while(++n<e);}while(++s<e);}

1
সাইটে স্বাগতম! দুর্ভাগ্যবশত, আমি তোমার জন্য 15 বাইট যোগ করতে হবে মনে #include <set>এবং জন্য আরো কয়েকটি std::set। যদিও আপনি p.insert(v-i);
জেমস

@ ডিজেএমসিমেহেম ওহ, আপনাকে ধন্যবাদ সুতরাং আমি প্রধান () অন্তর্ভুক্ত করা উচিত?
em2er

@ em2er না, আপনাকে অন্তর্ভুক্ত করার দরকার নেই main। আমরা বিবেচনা করি (চ্যালেঞ্জের অন্যথায় বর্ণিত না হলে) যে কোনও ফাংশনটি বৈধ জমা রয়েছে। (সাইটে বিটিডব্লিউতে স্বাগতম!)
দাদা

না, একটি ফাংশন জমা দেওয়া ঠিক আছে। (এবং আরও সংক্ষিপ্ত কারণ আপনি ইনপুটটিকে আর্গুমেন্ট হিসাবে নিতে পারেন) আপনার কেবলমাত্র জমা দিতে হবে যা আপনার জমা দেওয়ার জন্য প্রয়োজনীয়।
জেমস

1
@ ডিজেএমসিএমহেম @ দাদা অনেক ধন্যবাদ! endআমিও এটির সাথে নিশ্চিত নই , তবে এটি std::
জিসিসি

2

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

(n:v)#s|elem(s-n)v=(n,s-n)|1<2=v#s

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

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


আমি ভয় করি যে এই পদ্ধতিটি ইনপুটগুলির মতো কাজ করে না [2,2]#4
লাইকোনি

@ লাইকোনি আপনাকে ধন্যবাদ, আমি চ্যালেঞ্জটি যথেষ্ট পরিমাণে পড়িনি। এই নতুন সংস্করণটি সঠিক হতে হবে (এবং সংক্ষিপ্ত ^^)
লিও

2

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

param($i,$a)($c=0..($a.count-1))|%{$c-ne($f=$_)|%{if($a[$f]+$a[$_]-eq$i){$a[$f,$_];exit}}};exit 1

অ্যাডমবর্কবার্ক অফার করেছে যে একটি 12 বাইট চুক্তি

ব্যাখ্যা

# Get the parameter passed where $i is the addition target from the array of numbers in $a
param($i,$a)

($c=0..($a.count-1))|%{
    # We are going to have two loops to process the array elements.
    # The first loop element will be held by $f
    $f=$_
    # Create a second loop that will be the same as the first except for the position of $f to
    # prevent counting the same number twice. 
    $c|?{$_-ne$f}|%{
        # Check if the number at the current array indexes add to the target value. If so print and exit.
        if($a[$f]+$a[$_]-eq$i){$a[$f],$a[$_];exit}        
    }

}
# If nothing was found in the loop then we just exit with error.
exit 1

বর্তমান নিয়মগুলি প্রস্থান কোড সন্ধান করে যা এটি করে। এগুলি অপসারণ করা যেতে পারে এবং কেবল ফিরে আসা সংখ্যা এবং একটি জালিয়াতির জন্য পরীক্ষা করে দেখুন।

নমুনা ব্যবহার

উপরের কোডটি যদি ফাংশন হিসাবে সংরক্ষণ করা হয় s

s 8 @(1,2,3,4)
s 8 @(1,7,4,6,5,3,8,2) 

আপনি $cনীচের দিকে লুপ করে এবং আরও কয়েকটি বাইট সংরক্ষণ করতে পারেন -($a.count-1)..1|%{$f=$_;--$_..0|%{if...
অ্যাডমবর্কবার্ক

2

আর, 49 বাইট

function(x,y){r=combn(x,2);r[,colSums(r)==y][,1]}

এটি সমস্ত 2-সংমিশ্রণগুলি সন্ধান করে xএবং একটি ম্যাট্রিক্স প্রদান করে। তারপরে, কলাম অনুসারে যোগফলগুলি এবং সমান পরিমাণগুলি খুঁজে বের করে y(সুতরাং [,1]অংশটি ছাড়াই এটি সমস্ত সংমিশ্রণগুলি প্রিন্ট করবে যেগুলি তার সমান পরিমাণে হবে y)


2

জাপট , 9 বাইট

অনেকগুলি বাইট সংরক্ষিত হয়েছে @ ইথ প্রডাকশনগুলির জন্য ধন্যবাদ

à2 æ_x ¥V

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

ব্যাখ্যা

à2 æ_x ¥V
à2         // Creates all combinations of the input, length 2
   æ       // Returns the first item where:
    _x     //     The sum of the two items in each set
       ¥V  //     == Second input   

উদাহরণ

Input:        [1,2,3], 4
à2         // [[1,2],[1,3],[2,3]]
   æ_x     // [3,    4,    5    ]
       ¥V  //  3!=4, 4==4 ✓
Output:    //  1,3

2

জাভাস্ক্রিপ্ট, 114 96 86 84 বাইট

a=>b=>{c=b.length;for(x=0;x<c;x++)for( y=x;++y<c;)if(b[x]+b[y]==a)return[b[x],b[y]]}

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

প্রদত্ত ইনপুট পর্যন্ত যোগ হওয়া তালিকা-উপাদানগুলির প্রথম সংমিশ্রণ সহ কোনও মিল নেই বা কোনও মিল নেই This আমি varফাংশনে এসগুলি সরিয়েছি ; REPL.it এগুলি ছাড়াই ক্র্যাশ হয় তবে Chrome ডি কনসোল এটি ঠিকঠাক করে ...

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


কোড 1 থেকে প্রস্থান করবেন না, কারণ চ্যালেঞ্জটি বিশেষভাবে অবৈধ ইনপুটটির জন্য অনুরোধ করে। এটি আপাতত একটি অবৈধ উত্তর, তবে আমি সেই ভাষাগুলির জন্য এই প্রয়োজনীয়তা সম্পর্কে ওপিকে জিজ্ঞাসা করেছি যা সহজেই তা করতে পারে না।
R:

@ ম্যাট হ্যাঁ, এই নিয়মটি পালন করা হয়: y=x+1এটি যত্ন নেয়।
স্টেইনবার্গ

1
আপনি a=>b=>...বাইট সংরক্ষণ করতে ব্যবহার করতে পারেন
সাইয়েস

1
এর সাথে আরও তিনটি বাইট সংরক্ষণ করতে পারেন for(y=x;++y<b.length;){। এছাড়াও, আপনি বাহ্যিকতম ব্যতীত সমস্ত ধনুর্বন্ধনী সরিয়ে ফেলতে পারেন, এবং আপনি স্থানটি সরিয়ে ফেলতে পারেনreturn
ETH প্রোডাকশনগুলি

1

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

#(first(mapcat(fn[i a](for[b(drop(inc i)%):when(=(+ a b)%2)][a b]))(range)%))

এ জাতীয় প্রথম জোড় বা প্রদান করে nil


1

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

r=return;s#[]=r 1;s#(a:b)|elem(s-a)b=print(a,s-a)>>r 0|1<2=s#b

আমি এখনও জানি না চ্যালেঞ্জের দ্বারা অনুমোদিত কি এবং কী নয়। আমি এমন একটি ফাংশনের জন্য যাচ্ছি যা একটি সংখ্যার প্রিন্ট করে এবং 0 সমাধান করে যদি 0 প্রদান করে এবং কোনও সমাধান না করে এবং 1 সমাধান না হলে 1 প্রদান করে। মুদ্রণটি I / O হওয়ায় আমাকে ফিরতি মানগুলি IO-Monad (মাধ্যমে return) এ নিয়ে যেতে হবে এবং ফাংশনের আসল ধরণটি Num a => IO a

ব্যবহারের উদাহরণ (রিপল দ্বারা মুদ্রিত রিটার্ন মান সহ):

*Main> 4 # [2,2]
(2,2)
0

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

যদি ব্যতিক্রম উত্থাপনের অনুমতি দেওয়া হয় তবে failকিছু বাইট সংরক্ষণ করবে (মোট 51):

s#[]=fail"";s#(a:b)|elem(s-a)b=print(a,s-a)|1<2=s#b

1

জেলি , 9 বাইট

ŒcS=¥ÐfḢZ

জেলি এর নির্ধারিত কোডগুলিকে স্বেচ্ছাচারিত মানগুলিতে সেট করার কোনও উপায় নেই, সুতরাং এটি কোনও বৈধ সমাধান ছাড়াই ইনপুটটির জন্য টাইপআররের উত্পাদন করে যা পিতামাত্ত দোভাষীকে প্রস্থান কোড 1 সহ প্রস্থান করতে পারে ।

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

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

ŒcS=¥ÐfḢZ  Main link. Argument: A (array of integers), n (integer)

Œc         Yield all 2-combinations of different elements of A.
     Ðf    Filter by the link to the left.
    ¥        Combine the two links to the left into a dyadic chain.
  S            Take the sum of the pair.
   =           Compare the result with n.
       Ḣ   Head; extract the first pair of the resulting array.
           This yields 0 if the array is empty.
        Z  Zip/transpose the result.
           This doesn't (visibly) alter pairs, but it raise a TypeError for 0.

1

নোভা , 101 বাইট

q(Int[] a,Int x)=>a{if(Int y=a.firstWhere({a.contains(x-a.remove(0))}))return [y,x-y];System.exit(1)}

কোড গল্ফ সম্পর্কে একটি দুর্দান্ত জিনিস হ'ল এটি আমার ভাষায় বাগগুলি খুঁজে পেতে সহায়তা করে। যেমন স্থান মধ্যে প্রয়োজনীয় returnএবং [y,x-y]

আমি একবার অ্যারে.নোভাতে পুশ / পপ ফাংশন যুক্ত করে ফিরতি ফিরিয়ে আনলে, 96 বাইট হবে:

q(Int[] a,Int x)=>a{if(Int y=a.firstWhere({a.contains(x-a.pop())}))return[y,x-y];System.exit(1)}

ব্যবহার:

class Test {
    static q(Int[] a,Int x)=>a{if(Int y=a.firstWhere({a.contains(x-a.remove(0))}))return [y,x-y];System.exit(1)}

    public static main(String[] args) {
        Console.log(q([1, 2, 3, 4, 5], 8)) // [5, 3]
        Console.log(q([1, 2, 3, 4, 5], 5)) // [1, 4]
        Console.log(q([1, 2, 3, 4], 8)) // exit code 1
    }
}

সম্পাদনা: এছাড়াও, এখানে 73 বাইট (পপ ব্যবহার করে 69) এও রয়েছে:

q(Int[] a,Int x)=>[Int y=a.firstOrThrow({a.contains(x-a.remove(0))}),x-y]

ফার্স্টঅরথ্রো একটি ব্যতিক্রম ছুঁড়ে ফেলবে, যা অবিরত থাকবে এবং ফলস্বরূপ প্রস্থানটি প্রস্থান কোড 1 সহ প্রস্থান করবে))

এই উপায়টি আরও পঠনযোগ্য বলে মনে হয়।


0

পাইথ, 12 বাইট

hfqsThQ.ceQ2

ব্যাখ্যা

       .ceQ2   Get all pairs from the second input
 fqsThQ        Find the ones whose sum is the first input
h              Take the first (exits with error code 1 if there aren't any)

0

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

for($i=1;$a=$argv[$k=++$i];)for(;$b=$argv[++$k];)if($a+$b==$argv[1])die("$a $b");die(1);

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়, প্রথম যোগফল। সাথে চালাও -nr

ভাগ্যক্রমে, die/ আপনি যখন প্যারামিটার হিসাবে একটি স্ট্রিং দেন তখন তা থেকে exitবেরিয়ে আসে 0

আমি একটিতে লুপগুলি একীভূত করার চেষ্টা করেছি; তবে এটির জন্য এখন আর সূচনা এবং পরীক্ষা প্রয়োজন।


খারাপ দিন? for($i=1;$a=$argv[$k=++$i];)for(;$b=$argv[++$k];)$a+$b!=$argv[1]?:die(!0);এবং আপনার এই কোডগল্ফ.স্ট্যাকেক্সেঞ্জারভিউ
জার্গ হালসারম্যান

0

গণিত, 76 বাইট

f::e="1";If[(l=Cases[#~Subsets~{2},x_/;Tr@x==#2])=={},Message@f::e,First@l]&

মোটামুটি সোজা: #~Subsets~{2}তালিকার সমস্ত 2-উপাদান সাবসেটগুলি পেয়ে যায়, তারপরে Cases[...,x_/;Tr@x==#2]কেবলমাত্র তার সংখ্যাকে আমরা চাই সংখ্যাটি বেছে নেয়। এর মধ্যে যদি কিছু না থাকে If[l=={}, Message@f::e,First@l]তবে ত্রুটি বার্তাটি প্রিন্ট করে f::e : 1যা আমরা পূর্বে সংজ্ঞায়িত করেছি (যেহেতু ম্যাথেমেটিকার জন্য "প্রস্থান স্থিতি 1" এর অর্থ কী হতে পারে আমার কোনও ধারণা নেই); অন্যথায়, এটি জোড়গুলির তালিকার প্রথম এন্ট্রিটি প্রদান করে যা সঠিক জিনিসের যোগফল দেয়।

যদি আমাদের সেই অদ্ভুত প্রস্থান স্থিতি জিনিসটি না করে একটি মিথ্যা মান ফেরত দেওয়ার অনুমতি দেওয়া হয় তবে নিম্নলিখিত কোডটিতে 58 বাইট রয়েছে:

If[(l=Cases[#~Subsets~{2},x_/;Tr@x==#2])=={},1<0,First@l]&

0

স্কালা, 55 41 বাইট

(l,n)=>l combinations 2 find(_.sum==n)get

দুটি সংখ্যা উপস্থিত থাকলে তাদের একটি তালিকা ফিরে আসে এবং অন্যথায় ত্রুটি ছুড়ে দেয়। অপরিচিত, এই ত্রুটির ফলে 1 এর প্রস্থান স্থিতি হবে।


0

রুবি, 53 48 বাইট

->a,s{p(a.combination(2).find{|x,y|x+y==s})?0:1}

ইনপুট: একটি তালিকা, এর প্রত্যাশিত যোগফল।

যদি 2 নম্বর পাওয়া যায় তবে সেগুলি মুদ্রণ করুন এবং 0 এ ফিরে আসুন, অন্যথায় স্পেসিফিকেশন অনুসারে 1 ফিরিয়ে দিন।


0

টিআই-বেসিক, 59 বাইট

Prompt L1
Prompt X
While 1
L1(1→B
seq(L1(C),C,2,dim(L1→L1
If sum(not(X-L1-B
Then
Disp B,X-B
Return
End
End

ব্যাখ্যা:

Prompt L1               # 4 bytes, input array like "{1, 2, 3}"
Prompt X                # 3 bytes, Input target sum
While 1                 # 3 bytes, until the list is empty
L1(1→B                  # 7 bytes, try the first element (now B)
seq(L1(C),C,2,dim(L1→L1  # 18 bytes, remove first element from list
If sum(not(X-L1-B       # 10 bytes, if any element in the list plus B is the target
Then                    # 2 bytes, then...
Disp B,X-B              # 7 bytes, print it and it's "complement"
Return                  # 2 bytes, and exit gracefully
End                     # 2 bytes
End                     # 1 byte

প্রোগ্রামটি যদি মনোনিবেশ করে না বেরিয়ে আসে, তালিকায় পর্যাপ্ত উপাদান না থাকলে এটি চালিয়ে যাওয়ার ফলে এটি একটি ত্রুটি ঘটবে।


0

সিজেম, 23 বাইট

l~_,1>{e!2f<::+#)}{;;}?

ইনপুট হয় sum numbers। উদাহরণস্বরূপ: 6 [3 2 3]। সত্যের জন্য একটি ধনাত্মক সংখ্যা এবং একটি ফাঁকা স্ট্রিং বা মিথ্যাটির জন্য 0 রেখে দেয়।

ব্যাখ্যা:

l~    e# Read input and evaluate:  | 7 [3 2 3]
_     e# Duplicate:                | 7 [3 2 3] [3 2 3]
,     e# Take the length:          | 7 [3 2 3] 3
1>{   e# If more than 1:           | 7 [3 2 3]
  e!  e#   Unique permutations:    | 7 [[2 3 3] [3 2 3] [3 3 2]]
  2f< e#   Slice each to length 2: | 7 [[2 3] [3 2] [3 3]]
  ::+ e#   Some each:              | 7 [5 5 6]
  #   e#   Index:                  | -1
  )   e#   Increment:              | 0
}{    e# Else:                     | 7 [3 2 3]
  ;   e#   Pop                     | 7
  ;   e#   pop                     |
}?    e# Endif
e# Implicit output: 0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.