तीन इनपुट पूर्णांकों का अंतर


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
बेहतर लग रहा है! मैं अभी भी विशेष कार्यक्रमों में डिफ़ॉल्ट इनपुट विधियों की अनुमति देने की दृढ़ता से सलाह देता हूं , क्योंकि कुछ भाषाओं में फ़ंक्शन नहीं होते हैं। और, फ़ंक्शंस को कोई अन्य नाम या कोई नाम नहीं होने देता है।
xnor

पहले और आखिरी पैराग्राफ अब परस्पर विरोधी हैं, इसलिए सिर्फ दोहरी जांच करने के लिए - क्या हमें एक फ़ंक्शन लिखना है या पूर्ण कार्यक्रम ठीक हैं?
Sp3000

पूर्ण कार्यक्रम ठीक हैं, मैं यथासंभव कुछ प्रतिबंध लगाना चाहता हूं इसके अलावा डिफ़ॉल्ट इनपुट विधियों का पालन किया जाता है। efy 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

ईएस 6, 31 बाइट्स

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

यदि आपको फ़ंक्शन का नाम देना है तो 5 बाइट्स जोड़ें diff

संपादित करें: सहेजे गए 2 बाइट्स @Alex L के लिए धन्यवाद।


आप (मुझे लगता है) के ||साथ बदलकर दो बाइट्स बचा सकते हैं|
हाइपरन्यूट्रिनो

@AlexL। आह ठीक है मैं भी बूलियन्स को वापस करने के लिए लटका हुआ था।
नील

|बूलियन के साथ भी, एक बूलियन देता है अगर और केवल अगर दोनों मान बूलियन हैं। तो true | false == true, लेकिन 3 | 5 == 7। यही बात लागू होगी &&और &। केवल |और ||जब यह बूलियन्स के बीच का अंतर होता है : |पहला मूल्य और दूसरा मूल्य लेगा और उन दोनों के OR को खोजेगा। ||पहला मान लेगा; यदि यह सत्य है, तो वापस लौटें true, अन्यथा, दूसरा मान लौटाएं।
HyperNeutrino

@AlexL। true | falseजावास्क्रिप्ट में 1 का मूल्यांकन करता है (जो सत्य है, लेकिन बूलियन नहीं है)।
नील

ओह। क्षमा करें, मैं वास्तव में JS का उपयोग नहीं करता हूं। मैं ज्यादातर जावा का उपयोग करता हूं, जो कि मुझे वह जानकारी कहां से मिली। ;)
हाइपरनेट्रिनो

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

जावास्क्रिप्ट ईएस 6, 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])काम करने लगता है।
2

@jrich धन्यवाद! अच्छी चाल!
कॉनर ओ'ब्रायन

3

ओरेकल SQL 11.2, 49 बाइट्स

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

@Xnor समाधान का पुनर्लेखन, उसके लिए यश।



3

डीयूपी , 31 चार्ट / 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 एन्कोडेड स्रोत फ़ाइल के साथ काम कर सकता है ।
मार्टिन एंडर

@ MartinBüttner मुझे नहीं लगता कि यह परीक्षण करना संभव है।
मामा फन रोल


3

पर्ल 6, 20 19 बाइट्स

बाइट की गिनती में मेरे पास दो कार्य समान हैं, इसलिए मैं दोनों को डालूंगा। जो भी आपके फैंस को गुदगुदाए, उनकी सराहना करें।

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

उपयोग: या तो एक चर से असाइन करें जिससे आप इसे कॉल कर सकते हैं।
संपादित करें: बाइट में कमी के लिए धन्यवाद @ b2gills


{@_∋@_.sum div 2}और {@_∋+~(@_.sum/2)}दोनों छोटे हैं
ब्रैड गिल्बर्ट b2gills

ओह धन्यवाद, मैं हमेशा भूल जाता हूं कि आप योग को एक बिंदु विधि के रूप में कह सकते हैं
हॉटकीज

क्या करता है?
User112638726

"" "वह 'इनफ़िक्स' ऑपरेटर है, जो कहता है कि बाएं में दाईं ओर मौजूद है। यह "∈" 'तत्व' सेशन की बहन है जो कहती है कि बाईं ओर दाईं ओर एक तत्व है। वे दोनों ऑप्स सेट करते हैं और पर्ल 6 वास्तव में कई अन्य लोगों का भी समर्थन करता है! docs.perl6.org/language/...
Hotkeys

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 के उत्तर के रूप में समान एल्गोरिथ्म

/ Q / sq2

   sQ # सम सूची में सभी तत्व
  / 2 # योग को 2 से भाग दें
/ क्यू # सूची में उपरोक्त संख्या के गणना अवसर

2

05AB1E , गैर-प्रतिस्पर्धात्मक

4 बाइट्स , एक बेवकूफ चीज के कारण गैर-प्रतिस्पर्धी। कोड:

DO;¢

0 को झूठा और> 0 को सत्य के रूप में उपयोग करना। CP-1252 एन्कोडिंग का उपयोग करता है।


"बेवकूफ" चीज़ क्या है जो इसे गैर-प्रतिस्पर्धी बनाती है?
काइल कानोस

@KyleKanos मैं पहले से ही में लिखा है Info.txt कि ;आधा ढेर के शीर्ष। लेकिन लगता है क्या, मैं इसे लागू नहीं किया है -_-।
अदनान

1
आह। मैं देख सकता हूँ कि यह कैसे करेगा
काइल कानोस

2

कोना 16 वर्ण

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

स्टैक से एक वेक्टर लेता है, उन्हें sums करता है, 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

MATL , 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)

Xnor के समाधान का उपयोग करना।


चूंकि (/)पूर्णांक के लिए काम नहीं करता है और चुनौती पूर्णांक के लिए पूछती है, मुझे यकीन नहीं है कि यह वास्तव में एक वैध समाधान है।
ज़ीटा

मैंने वो नहीं देखा। क्या प्रकार रूपांतरण कोड का हिस्सा होना चाहिए? इस तरह: (\l->sum l/2`elem`l).map fromIntegerऔर इसका उपयोग इस तरह किया जा सकता है ((\l->sum l/2`elem`l).map fromInteger) ([2,3,5] :: [Integer]):। मुझे लगता है कि जो मुझे फेंक दिया गया था वह अजगर 3 के उपयोग का उल्लेख था इसलिए इनपुट 3 के बजाय 3.0 नहीं था। मुझे लगा कि इनपुट प्रकार निर्दिष्ट नहीं किया गया था, जिस तरह से वे लिखे गए थे ...
बेसाइल- मेंहदी

यदि प्रकार वास्तव में एक समस्या है, तो मुझे इस तथ्य पर ध्यान नहीं देना चाहिए कि मैं एक सूची ले रहा हूं क्योंकि इनपुट एक समस्या है?
बेसाइल-हेनरी

अच्छी बात। मैं ओपी से उसके बारे में पूछूंगा। लेकिन यह देखते हुए कि अन्य सभी उत्तर भी एक सूची का उपयोग करते हैं, मुझे लगता है कि यह ठीक है (यह भी, अब मुझे पता है कि ट्यूपल्स का उपयोग करते समय आपका फ़ंक्शन टाइप क्यों नहीं किया गया)।
जीटा

हाँ यदि इनपुट सूची के बजाय टपल था 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:)
andlrc

आप -Xकुछ पर्ल संस्करण [५.१० .. ५.१।) को निर्दिष्ट करके छोड़ सकते हैं । (५.१० में स्मार्ट मैच पेश किया गया था और ~~-X
५.१


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

SpecBAS - 36 बाइट्स

Xnors सूत्र का उपयोग करता है

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

आउटपुट 1 यदि सत्य है और 0 यदि गलत है


1

05AB1E , 6 5 बाइट्स

;Oм_O

-1 के एक बंदरगाह बनाने के द्वारा बाइट @xnor के अजगर 3 एल्गोरिथ्म

इसे ऑनलाइन आज़माएं या सभी परीक्षण मामलों को सत्यापित करें

स्पष्टीकरण:

·        # 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इसे छोटा किया जा सकता है, लेकिन मुझे यकीन नहीं है कि मुझे इसके लिए कौन सी कमांड (एस) का उपयोग करना है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.