তিনটি ইনপুট পূর্ণসংখ্যার পার্থক্য


30

একটি ফাংশন ডিফ প্রয়োগ করুন যা ইনপুট তিনটি পূর্ণসংখ্যার হিসাবে x, y এবং z গ্রহণ করে। অন্যগুলির থেকে এই সংখ্যার একটিকে বিয়োগ করে তৃতীয়টি দেয় কিনা তা ফিরে আসা উচিত।

Test cases:
diff(5, 3, 2) yields True because 5 - 3 = 2
diff(2, 3, 5) yields True because 5 - 3 = 2
diff(2, 5, 3) yields True because 5 - 3 = 2
diff(-2, 3, 5) yields True because 3 - 5 is -2
diff(-5, -3, -2) # -5 - -2 is -3
diff(2, 3, -5) yields False
diff(10, 6, 4) yields True because 10 - 6 = 4
diff(10, 6, 3) yields False

আপনাকে ফাংশনটির নাম রাখতে হবে না, আপনি ডিফল্ট ইনপুট পদ্ধতিগুলি প্রয়োগ করতে পারেন উপরের উদাহরণগুলি কোনও কঠোর গাইডলাইন নয়।


5
এটি একটি যুক্তিসঙ্গত চ্যালেঞ্জ, তবে পাইথন বা ফাংশনগুলিতে এটিকে সীমাবদ্ধ করার দরকার নেই। সাধারণভাবে, এই জাতীয় বিধিনিষেধগুলিকে অগ্রাহ্য করা হয় কারণ তারা অংশগ্রহণ সীমাবদ্ধ করে। এছাড়াও, আপনার কয়েকটি পরীক্ষার কেস অন্তর্ভুক্ত করা উচিত।
xnor

আরে আমি একটু সংশোধন করেছি। আশা করি এই যথেষ্ট!
মীর

2
ভালো দেখায়! আমি এখনও দৃ programs ়ভাবে ডিফল্ট ইনপুট পদ্ধতিগুলিকে বিশেষ প্রোগ্রামগুলিতে অনুমতি দেওয়ার সুপারিশ করি কারণ কিছু ভাষার কার্যকারিতা নেই। এবং, ফাংশনগুলিকে অন্য নাম বা নাম রাখার অনুমতি দেয়।
xnor

প্রথম এবং শেষ অনুচ্ছেদগুলি এখন বিরোধমূলক, তাই কেবল দ্বিগুণ পরীক্ষা করার জন্য - আমাদের কোনও ফাংশন লিখতে হবে বা পুরো প্রোগ্রামগুলি ঠিক আছে?
Sp3000

সম্পূর্ণ প্রোগ্রামগুলি ঠিক আছে, আমি ডিফল্ট ইনপুট পদ্ধতি অনুসরণ না করে যতটা সম্ভব নিষেধাজ্ঞাগুলি আরোপ করতে চাই। python3 উদাহরণগুলি ঝরঝরে!
মীর

উত্তর:


14

জেলি , 5 3 বাইট

দুটি স্পেস সাশ্রয় করার জন্য @ Sp3000 কে ধন্যবাদ !

কোড, @ xnor এর দুর্দান্ত উত্তরের মতো একই অ্যালগরিদম ব্যবহার করে :

SfḤ

ব্যাখ্যা:

S     # Sum of the argument list
  Ḥ   # Double the list
 f    # Filter, remove everything that isn't equal to the sum of the list

এটি []মিথ্যা এবং সত্য হিসাবে অন্য কিছু দেয় ।

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


51

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

lambda*l:sum(l)/2in l

যদি দুটি সংখ্যা অন্যটিতে যুক্ত হয় তবে তিনটির যোগফল অন্য সংখ্যার দ্বিগুণ হবে, সুতরাং অর্ধেক যোগফলটি তালিকার একটি উপাদান হবে। পাইথন 3, মেঝে-বিভাজন এড়াতে প্রয়োজন যদি না সংখ্যার মত দেওয়া হয় 3.0বদলে 3


7

ES6, 31 বাইট

(a,b,c)=>a+b==c|b+c==a|c+a==b

আপনার যদি ফাংশনটির নাম প্রয়োজন হয় তবে 5 বাইট যুক্ত করুন diff

সম্পাদনা: @ অ্যালেক্স এল কে 2 বাইট সংরক্ষণ করা হয়েছে


আপনি প্রতিস্থাপন দুটি বাইট সংরক্ষণ করতে পারবেন ||সঙ্গে |(আমার ধারণা)
HyperNeutrino

@AlexL। আহ ঠিক আছে আমিও বুলিয়ানদের ফিরিয়ে দিতে পেরেছি।
নীল

এমনকি বুলিয়ান সহ, |একটি বুলিয়ান প্রদান করে যদি এবং উভয় মানই বুলিয়ান হয়। তাই true | false == true, কিন্তু 3 | 5 == 7। একই প্রযোজ্য &&এবং &। শুধুমাত্র মধ্যে পার্থক্য |এবং ||যখন এটা Booleans আসে |প্রথম মান এবং দ্বিতীয় মান গ্রহণ করা এবং পাবেন বা ঐ দুই করুন। ||প্রথম মান গ্রহণ করা হবে; যদি এটি সত্য হয়, প্রত্যাবর্তন করুন true, অন্যথায়, দ্বিতীয় মানটি ফেরত দিন।
হাইপারনিউটারিনো

@AlexL। true | falseজাভাস্ক্রিপ্টে 1 এ মূল্যায়ন করে (যা সত্য, তবে বুলিয়ান নয়)।
নীল

উহু. দুঃখিত, আমি সত্যিই জেএস ব্যবহার করি না। আমি বেশিরভাগ জাভা ব্যবহার করি, সেখান থেকেই আমি সেই তথ্য পেয়েছি। ;)
হাইপারনিউট্রিনো

4

এপিএল, 8 5 বাইট

+/∊+⍨

এটি একটি মোনাডিক ফাংশন ট্রেন যা একটি অ্যারে গ্রহণ করে এবং একটি বুলিয়ান (এপিএলে 0/1) প্রদান করে। এটি xnor এর পাইথন 3 উত্তর হিসাবে একই অ্যালগরিদম ব্যবহার করে ।

ব্যাখ্যা:

   +⍨  ⍝ Double the input (+⍨x is the same as x+x)
  ∊    ⍝ Test the membership of
+/     ⍝ The sum of the input

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

ডেনিসের জন্য 3 টি বাইট সংরক্ষণ করা!


4

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

x=>x.some(a=>2*a==x[0]+x[1]+x[2])

খুব সাধারণ বেনামে ফাংশন, এবং পাইথন উত্তর থেকে ধার নেয়। xঅ্যারে হিসাবে ইনপুট নেয় ; রিটার্ন trueবা false। বোলার মোলারম্যানফুল এবং জরিচে শেভ করা হয়েছে

একটি 38 টি বাইট প্রোগ্রাম, প্রতিটি সংখ্যা যুক্তি হিসাবে গ্রহণ করে:

(a,b,c)=>[a,b,c].some(t=>t==(a+b+c)/2)

চেষ্টা করুন x=>x.some(a=>a==eval(x.join`+`)/2), যা 4 বাইট সংরক্ষণ করে।
মামা ফান রোল

@ ӍѲꝆΛҐӍΛПҒЦꝆ ধন্যবাদ! দুর্দান্ত কৌশল।
কনর ও'ব্রায়েন

x=>x.some(a=>2*a==x[0]+x[1]+x[2])কাজ মনে হচ্ছে।
সমৃদ্ধ

@ জরিচ ধন্যবাদ! দুর্দান্ত কৌশল!
কনর ও'ব্রায়েন

3

ওরাকল এসকিউএল 11.2, 49 বাইট

SELECT 1 FROM DUAL WHERE(:1+:2+:3)/2IN(:1,:2,:3);

@ এক্সনর সলিউশনটির পুনরায় লিখন, তাঁর কাছে কুডো।


3

জে, 6 বাইট

+/e.+:

এটি J.js দিয়ে চেষ্টা করুন ।

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

+/e.+:    Monadic verb. Argument: A
    +:    Double the elements of A.
+/        Compute the sum of the elements of A.
  e.      Test for membership.

3

ডিইউপি , ৩১ টি চর / 39 বাইট

[2ø2ø2ø++2/\%3ø^=3ø2ø=3ø3ø=||.]

Try it here!

আমার প্রথম DUP জমা! ইউনিকোড হ'ল আপনার ঝিনুক।

এটি একটি বেনামে ফাংশন / ল্যাম্বদা। ব্যবহার:

5 3 2[2ø2ø2ø++2/\%3ø^=3ø2ø=3ø3ø=||.]!

ব্যাখ্যা

[                               {start lambda}
 2ø2ø2ø                         {duplicate 3 inputnums}
       ++                       {push sum(3 popped stack items)}
         2/\%                   {push (popped stack item)/2}
             3ø^=3ø2ø=3ø3ø=     {for all 3 inputs, -1 if inputnum=sum/2; else 0}
                           ||   {check if any of the 3 resulting values are truthy}
                             .  {output top of stack (boolean value)}
                              ] {end lambda}

আমি মনে করি না এটি কোনও এনকোডিং কীভাবে কাজ করে ...
কনর ও'ব্রায়েন

øকোড পয়েন্ট 248 রয়েছে, সুতরাং আইএসও 8859-1 হিসাবে এনকোড করা থাকলে এটি একটি বাইট।
ডেনিস

1
... যা ইন্টারপ্রেটারটি আসলে কোনও আইএসও 8859-1 এনকোডেড উত্স ফাইলের সাথে কাজ করতে পারে ততক্ষণ তা ঠিক ।
মার্টিন ইন্ডার

@ মার্টিনবাটনার আমি মনে করি না যে এটি পরীক্ষা করা সম্ভব।
মামা ফান রোল


3

পার্ল 6, 20 19 বাইট

বাইট গণনায় আমার দুটি ফাংশন সমান, তাই আমি উভয়ই রাখব। আপনার অভিনব কল্যাণকামী যে কোনও প্রশংসা করুন।

{@_@_.sum div 2}
{@_∋+~(@_.sum/2)}

ব্যবহার: যে কোনওটিকে ভেরিয়েবলের জন্য নির্ধারণ করুন যার থেকে আপনি এটি কল করতে পারেন।
সম্পাদনা: বাইট হ্রাসের জন্য ধন্যবাদ @ বি 2 গিলস


{@_∋@_.sum div 2}এবং {@_∋+~(@_.sum/2)}উভয়ই খাটো
ব্র্যাড গিলবার্ট বি

ওহ ধন্যবাদ, আমি সর্বদা ভুলে যাই যে আপনি বিন্দু পদ্ধতি হিসাবে যোগফল বলতে পারেন
হটকেজ

কি করে ?
User112638726

"∋" হ'ল 'অন্তর্ভুক্ত' ইনফিক্স অপারেটর, যা বলে যে বামে ডানদিকে রয়েছে। এটি "element" 'উপাদান' অপের বোন যা বলে যে বামটি ডান দিকের একটি উপাদান। তারা উভয় সেট অপ্স এবং পার্ল 6 আসলে আরও অনেককে সমর্থন করে! docs.perl6.org/language/...
হট

3

জাভা 8 (ল্যাম্বদা ফাংশন), 29 বাইট

// Lambda Signature: (int, int, int) -> boolean

(a,b,c)->a+b==c|a+c==b|b+c==a

জাভা কোড গল্ফ সমাধানগুলি কেবল তখনই সংক্ষিপ্ত হয় যখন প্রোগ্রামটি কোনও সম্পূর্ণ কার্যকরী প্রোগ্রাম হতে হয় না। (* কাশি কাশি * শ্রেণির ঘোষণা, প্রধান পদ্ধতি)


2

পাইথ, 6 বাইট

/Q/sQ2

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

পূর্ণসংখ্যার একটি তালিকা হিসাবে ইনপুট আশা করে। আউটপুট 0 যদি কোনও সংখ্যাটি অন্য দুটি এবং> 0 কে বিয়োগ করে তৈরি করা যায় তবে কমপক্ষে একজন পারেন।

ব্যাখ্যা:

@ Xnor এর উত্তর হিসাবে একই অ্যালগরিদম

/ প্রশ্ন / sQ2

   sQ # তালিকার সমস্ত উপাদানকে যোগ করুন
  / 2 # যোগফলকে 2 দিয়ে ভাগ করুন
/ প্রশ্ন # তালিকার উপরের সংখ্যা গণনা ঘটনা

2

05AB1E , অ-প্রতিযোগিতামূলক

4 বাইট , একটি বোকা জিনিস কারণে অ প্রতিযোগিতামূলক। কোড:

DO;¢

0 টি মিথ্যা এবং> 0 টি সত্য হিসাবে ব্যবহার করা। সিপি-1252 এনকোডিং ব্যবহার করে।


"বোকা" জিনিসটি কী এই প্রতিযোগিতামূলক করে তোলে?
কাইল কানোজ

@KyleKanos আমি ইতিমধ্যে লিখে দিয়েছি যে Info.txt যে ;অর্ধেক স্ট্যাকের উপরে। তবে অনুমান করুন, আমি কখনই এটি বাস্তবায়ন করিনি -_-।
আদনান

1
আহ। আমি কীভাবে এটি করতে চাই তা দেখতে পাচ্ছি
কাইল কানস

2

কোনা 16 টি অক্ষর

{((+/x)%2)_in x}

স্ট্যাক থেকে একটি ভেক্টর নেয়, তাদের অঙ্ক করে, 2 দ্বারা ভাগ করে এবং নির্ধারণ করে যে এটি ভেক্টরে রয়েছে কিনা। 1 সত্যবাদী এবং 0 টি মিথ্যা হিসাবে প্রত্যাবর্তন করে।

মাধ্যমে ফোন করা

> {((+/x)%2)_in x} [(2;3;5)]
1
> {((+/x)%2)_in x} [(2;3;4)]
0

2

jq, 17 টি অক্ষর

( Xnor এর পাইথন 3 উত্তরের আরও একটি পুনর্লিখন উত্তরগুলি অবশ্যই সেই একটিতে যেতে হবে))

contains([add/2])

ইনপুট: 3 পূর্ণসংখ্যার অ্যারে।

নমুনা রান:

bash-4.3$ jq 'contains([add/2])' <<< '[5, 3, 2]'
true

bash-4.3$ jq 'contains([add/2])' <<< '[2, 3, -5]'
false

অন-লাইন পরীক্ষা:

jq, 18 টি অক্ষর

(17 টি অক্ষরের কোড + 1 অক্ষর কমান্ড লাইন বিকল্প))

contains([add/2])

ইনপুট: 3 পূর্ণসংখ্যার তালিকা।

নমুনা রান:

bash-4.3$ jq -s 'contains([add/2])' <<< '5 3 2'
true

bash-4.3$ jq -s 'contains([add/2])' <<< '2 3 -5'
false

2

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

@ Xnor এর দুর্দান্ত পদ্ধতির ব্যবহার :

s2/Gm

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

s    % implicitly input array of three numbers. Compute their sum
2/   % divide by 2
G    % push input again
m    % ismember function: true if sum divided by 2 equals some element of the input

ব্রুট ফোর্স পদ্ধতির, 12 বাইট :

Y@TT-1h*!s~a

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

Y@       % input array of three numbers. Matrix with all
         % permutations, each one on a different row
TT-1h    % vector [1,1,-1]
*        % multiply with broadcast
!s       % transpose, sum of each column (former row)
~a       % true if any value is 0


2

সিজেম, 10 12 বাইট

l~:d_:+2/&

@ মার্টিনব্যাটনারকে ধন্যবাদ 2 বাইট সরানো হয়েছে।

এটি সত্যবাদী ফলাফল হিসাবে একটি নম্বর প্রদর্শন করে এবং মিথ্যা ফলাফল হিসাবে কোনও আউটপুট।

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

l~     e# read line and evaluate. Pushes the array
:d     e# convert array to double
_      e# duplicate
:+     e# fold addition on the array. Computes sum of the array
2/     e# divide sum by 2
&      e# setwise and (intersection)

2

সিরিয়াসলি, 6 বাইট

,;䫡u

আউটপুট 0 টি মিথ্যা হলে এবং ধনাত্মক পূর্ণসংখ্যা অন্যথায়।


2

গণিত, 20 19 বাইট

MemberQ[2{##},+##]&

অন্যান্য উত্তরের বেশিরভাগ ক্ষেত্রে একইভাবে কাজ করে।


কীভাবে MemberQ[2{##},+##]&? (এবং আপনি আপনার বাইট গণনা ভুলে গেছেন)
মার্টিন এন্ডার

2

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

(\l->sum l/2`elem`l)

এক্সনোরের সমাধান ব্যবহার করে।


যেহেতু (/)পূর্ণসংখ্যার জন্য কাজ করে না এবং চ্যালেঞ্জটি পূর্ণসংখ্যার জন্য জিজ্ঞাসা করে, আমি নিশ্চিত নই যে এটি আসলে একটি বৈধ সমাধান।
জেটা

আমি তা দেখিনি। ধরণের রূপান্তরটি কি কোডের অংশ হওয়া উচিত? এমন: (\l->sum l/2`elem`l).map fromIntegerএবং এটি এই মত ব্যবহার করা যেতে পারে: ((\l->sum l/2`elem`l).map fromInteger) ([2,3,5] :: [Integer])। আমার ধারণা আমি পাইথন 3 ব্যবহারের কথা উল্লেখ করছিলাম যা ইনপুট ৩ এর পরিবর্তে ৩.০ হওয়া উচিত নয়। আমি ভেবেছিলাম যে ইনপুট টাইপটি নির্দিষ্ট করা হয়নি, ঠিক
সেভাবেই

ধরণটি যদি সত্যিই কোনও সমস্যা হয় তবে এই বিষয়টি কী হওয়া উচিত নয় যে আমি ইনপুট হিসাবে একটি তালিকা নিচ্ছি তা আরও বেশি সমস্যা হতে পারে?
বেসাইল-হেনরি

ভাল যুক্তি. আমি ওপিকে এটি সম্পর্কে জিজ্ঞাসা করব। তবে অন্য সমস্ত উত্তরগুলিও একটি তালিকা ব্যবহার করে, আমি অনুমান করি যে এটি ঠিক আছে (এছাড়াও, এখন আমি পেয়েছি কেন টিপলস ব্যবহার করার সময় আপনার ফাংশনটি চেক টাইপ করেনি)।
জেটা

হ্যাঁ যদি ইনপুটটি তালিকার পরিবর্তে টিউপল না হয় sumএবং elemনা কাজ করত তবে আমার সম্ভবত এটি একটি তালিকা ছিল উল্লেখ করা উচিত তবে যেহেতু এই উত্তরটি আক্ষরিক অর্থে xnor কী জমা দিয়েছিল (হাস্কেলের মধ্যে) আমি এটি প্রয়োজনীয় মনে করি নি। :)
বেসিল-হেনরি

2

পার্ল, 24 + 4 = 28 বাইট

$^+=$_/2 for@F;$_=$^~~@F

-paXচালানোর জন্য পতাকা প্রয়োজন , 1সত্য হিসাবে মুদ্রণ করা এবং মিথ্যা হিসাবে কিছুই নয়:

-X সমস্ত সতর্কতা অক্ষম করে।

$ perl -paXe'$^+=$_/2 for@F;$_=$^~~@F' <<< '5 3 7'
$ perl -paXe'$^+=$_/2 for@F;$_=$^~~@F' <<< '5 3 8'
1

একটি অনুপ্রেরণা। এটি অনুপ্রাণিত: $_=eval(y/ /+/r)/2~~@F(একই কমান্ড-লাইন বিকল্পগুলি ব্যবহার করে)।
manatwork

@ মানাটকার্ক ব্যবহারের আকর্ষণীয় উপায় tr:)
ওআরআরসিআর

-Xকিছু পার্ল সংস্করণ [5.10 .. 5.18) নির্দিষ্ট করে আপনি এটি ছেড়ে দিতে পারেন। (স্মার্ট ম্যাচটি ৫.১০ তে প্রবর্তিত হয়েছিল এবং পরীক্ষামূলক সতর্কতাগুলি ৫.১৮ এ প্রবর্তিত হয়েছিল। এই দুজনের মধ্যে যে কোনও সংস্করণই ~~ছাড়াই দুর্দান্ত কাজ করবে -X।)
manatwork


1

পাইলন , 8

Xnor এর অ্যালগরিদমের আরও একটি বাস্তবায়ন।

i:As2A/_

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

i    # Get command line input.
:A   # Initialize a constant A.
  s  # Set A to the sum of the stack.
2    # Push 2 to the stack.
A    # Push A to the stack.
/    # Divide A/2
_    # Check if the top of the stack is in the previous elements.
     # Print the stack on quit.

1

স্পেসবিএএস - 36 বাইট

Xnors সূত্র ব্যবহার করে

1 INPUT a,b,c: ?(a+b+c)/2 IN [a,b,c]

আউটপুটগুলি সত্য হলে 1 এবং যদি ভুল হয় তবে 0 হয়


1

05 এ বি 1 ই , 6 5 বাইট

;Oм_O

@ Xnor এর পাইথন 3 অ্যালগরিদমের একটি বন্দর তৈরি করে -1 বাইট ।

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

ব্যাখ্যা:

·        # Halve every item in the input-array
         #  i.e. [10,6,4] → [5.0,3.0,2.0]
 O       # Sum this array
         #  i.e. [5.0,3.0,2.0] → 10.0
  м_O    # Output 1 if the input-array contain this sum, 0 otherwise
         #  i.e. [10,6,4] and 10.0 → 1

আমি নিশ্চিত м_Oযে ছোট করা যায়, তবে আমি নিশ্চিত না যে এর জন্য আমাকে কোন আদেশ (গুলি) ব্যবহার করতে হবে ..


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