नूह की गहन सूची


25

परिचय:

मुझे लगता है कि हम सभी ने इसके बारे में सुना है, लेकिन यहां एक बहुत ही संक्षिप्त सारांश: नूह ने महान बाढ़ के दौरान अपने सन्दूक को बचाने के लिए ग्रह पर जानवरों की प्रत्येक प्रजाति, नर और मादा में से दो को इकट्ठा किया। बाइबल से वास्तविक उद्धरण है:

उत्पत्ति Gen: २-३
आपको अपने साथ सात प्रकार के साफ-सुथरे जानवर, नर और उसके साथी, दो तरह के अशुद्ध जानवर, नर और उसके साथी, और आकाश में हर तरह के पक्षी के सात भी लेने चाहिए। , पुरुष और महिला, पृथ्वी के चेहरे पर अपनी संतानों को संरक्षित करने के लिए।
स्रोत

लेकिन इस चुनौती के लिए हम साफ / अशुद्ध भाग और उस हिस्से को नजरअंदाज कर देंगे, जहां वह प्रत्येक जानवर के सात लेता था। यह चुनौती केवल इस भाग के बारे में है:

हर तरह के अशुद्ध जानवर, नर और उसके साथी

चुनौती:

इनपुट:

आपको सकारात्मक पूर्णांक (यादृच्छिक क्रम में) की एक सूची दी गई है।

आउटपुट:

यह दर्शाता है कि यह 'नूह की सूची' है या नहीं। यह आवश्यक नहीं है कि एक सत्य / गलत मूल्य हो, इसलिए कुछ उदाहरण देने के लिए जावा / सी #, या / किसी भी भाषा में 0/ भी हो सकता है ।1'A''B'

एक सूची 'नूह की सूची' कब है? जब सूची में प्रत्येक पूर्णांक के ठीक दो होते हैं।

चुनौती नियम:

  • I / O लचीला है। इनपुट पूर्णांक / फ़्लोट / स्ट्रिंग्स की एक सूची / सरणी / स्ट्रीम या STDIN से एक-एक करके पढ़ा जा सकता है। आउटपुट किसी भी दो अलग-अलग मान हो सकते हैं, एक फ़ंक्शन या आउटपुट से STDOUT / एक फ़ाइल में लौटाया जा सकता है ।
  • इनपुट-सूची में पूर्णांक यादृच्छिक क्रम में हैं, और यह सीमा भीतर सकारात्मक होने की गारंटी है । 1n100000
  • इनपुट-सूची गैर-रिक्त होने की गारंटी है।
  • पूर्णांक होने पर 2 (यानी 4, 6, 8, आदि) के ऊपर मौजूद दो गुना का गुणनफल गलत होगा। Ie [6,4,4,6,4,7,4,7]गलत है, हालांकि आप अभी भी इस तरह के समान जोड़े बना सकते हैं [[4,4],[4,4],[6,6],[7,7]]:।

सामान्य नियम:

  • यह , इसलिए बाइट्स जीत में सबसे छोटा जवाब है।
    कोड-गोल्फ भाषाओं को गैर-कोडगॉल्फिंग भाषाओं के साथ उत्तर पोस्ट करने से हतोत्साहित न करें। 'किसी भी' प्रोग्रामिंग भाषा के लिए यथासंभव संक्षिप्त उत्तर के साथ आने का प्रयास करें।
  • डिफ़ॉल्ट I / O नियमों के साथ आपके उत्तर के लिए मानक नियम लागू होते हैं , इसलिए आपको उचित पैरामीटर और रिटर्न-प्रकार, पूर्ण कार्यक्रमों के साथ STDIN / STDOUT, फ़ंक्शन / विधि का उपयोग करने की अनुमति है। तुम्हारा कॉल।
  • डिफ़ॉल्ट ढीले निषिद्ध हैं।
  • यदि संभव हो, तो कृपया अपने कोड (यानी TIO ) के लिए एक परीक्षण के साथ एक लिंक जोड़ें ।
  • साथ ही, आपके उत्तर के लिए स्पष्टीकरण जोड़ने की अत्यधिक अनुशंसा की जाती है।

परीक्षण के मामलों:

Truthy:
[7,13,9,2,10,2,4,10,7,13,4,9]
[1,2,3,1,2,3]
[10,100,1000,1,100,10,1000,1]
[123,123]
[8,22,57189,492,22,57188,8,492,57188,57189,1,1]

Falsey:
[6,4,4,6,4,7,4,7]
[2,2,2,2,2,2]
[5,1,4,5,1,1,4]
[77,31,5,31,80,77,5,8,8]
[1,2,3,2,1]
[44,4,4]
[500,30,1]
[1,2,1,1]
[2,4,6,4,4,4]
[2,23,34,4]
[2,23,3,3,34,4]

12
और कुरान में भी; सूरह अल-मुमून, पद 27: तो हमने उसे (इस संदेश के साथ) प्रेरित किया: "हमारी दृष्टि के भीतर और हमारे मार्गदर्शन में सन्दूक का निर्माण करें: फिर जब हमारी आज्ञा आती है, और पृथ्वी के फव्वारे आगे निकलते हैं, तो आपको जोड़े में ले जाएं प्रत्येक प्रजाति, नर और मादा, और तेरा परिवार- उन लोगों को छोड़कर जिनके खिलाफ शब्द पहले ही निकल चुका है: और मुझे गलत काम करने वालों के पक्ष में नहीं संबोधित करते हैं, क्योंकि वे डूब जाएंगे (बाढ़ में)। (यूसुफ अली)
इशाक खान Is

जवाबों:


19

पायथन 3 , 31 बाइट्स

lambda l:{*map(l.count,l)}=={2}

इसे ऑनलाइन आज़माएं!


पायथन 2 , 33 बाइट्स

lambda l:set(map(l.count,l))=={2}

इसे ऑनलाइन आज़माएं!


कूल, पता नहीं था कि फाटक ऑपरेटर सेट शाब्दिक के अंदर काम करता था, अगर मैं इसे सही ढंग से व्याख्या कर रहा हूं।
अप्रोचडार्कनेसफिश

13

05AB1E , 4 बाइट्स

¢<PΘ

इसे ऑनलाइन आज़माएं! या टेस्ट सूट के रूप में

व्याख्या

¢      # count all occurrences of each element in the input list
 <     # decrement each
  P    # product
   Θ   # is equal to 1

आह, मैंने तैयार किया था ¢2QP, लेकिन उपयोग Θकरना भी एक अच्छा विकल्प है। :)
केविन क्रूज़सेन

सोचा कि मेरे पास एक 3 था {ιË, लेकिन जब पूर्णांक 4 बार होते हैं, तो निश्चित रूप से विफल रहता है।
ग्रिमि


8

आर , 20 बाइट्स

-6 बाइट्स इनपुट विधि को बदलकर digEmAll के लिए धन्यवाद

any(table(scan())-2)

इसे ऑनलाइन आज़माएं!

आउटपुट FALSEअगर यह नूह की एक सूची है, और TRUEअन्यथा। किसी भी इनपुट प्रकार के लिए काम करता है, न केवल पूर्णांक।

सूची में प्रत्येक मान की गणना करता है, और जाँचता है कि क्या कोई भी गणना 2 से भिन्न है।


आप 6 बाइट्स बचाने वाले स्टड से इनपुट ले सकते हैं: इसे ऑनलाइन आज़माएं!
DigEmAll

@digEmAll धन्यवाद; मैंने चुनौती नियमों को गलत बताया और सोचा कि इसकी अनुमति नहीं थी।
रॉबिन राइडर



6

हास्केल , 33 बाइट्स

f x=and[sum[1|b<-x,b==a]==2|a<-x]

इसे ऑनलाइन आज़माएं!

इनपुट के प्रत्येक तत्व के लिए हम सुनिश्चित करते हैं कि यह इनपुट सूची में दो बार दिखाई दे।

sum[1|b<-x,b==a]का सिर्फ एक गोल्फर संस्करण है length(filter(==a)x)


6

पर्ल 6 , 18 बाइट्स

{so.Bag{*}.all==2}

इसे ऑनलाइन आज़माएं!

  • .Bagइनपुट सूची को Bagगुणनखंड के साथ एक -a सेट में परिवर्तित करता है।
  • {*} गुणकों के सभी निकालता है।
  • .all गुणकों का जंक्शन बनाता है।
  • == 2 बूलियन्स के दूसरे और जंक्शन में परिणाम, प्रत्येक सच है यदि बहुलता 2 है।
  • so एक एकल बूलियन के लिए जंक्शन ढह जाता है।

5

जे , 10 बाइट्स

[:*/2=#/.~

इसे ऑनलाइन आज़माएं!


3
यह भी 10 बाइट्स: [:*/2=1#.=मैं वास्तव में उस कैप को हटाना चाहता हूं लेकिन यह पता नहीं लगा सकता कि कैसे।
कोल

1
@ जब मैंने यह कोशिश की, तो मुझे आपका हल मिल गया। यदि आप वास्तव में आपके द्वारा की जा सकने वाली टोपी को हटाना चाहते हैं 2*/@:=1#.=, तो भी 10 बाइट्स
कॉनर ओ'ब्रायन

@cole अच्छा विकल्प!
गैलेन इवानोव

@ ConorO'Brien हाँ, @:यहाँ भी काम आता है।
गैलेन इवानोव

1
@ गालिन इवानोव को प्यार करना बहुत अच्छा लगता है =, इसलिए अजीब तरीके से उपयोगी है जो कि गोल्फ के परिदृश्य में उपयोगी है
कोल

4

एमएस SQL ​​सर्वर 2017 , 152 150 146 बाइट्स

CREATE FUNCTION f(@ NVARCHAR(MAX))RETURNS
TABLE RETURN SELECT IIF(2=ALL(SELECT
COUNT(*)FROM STRING_SPLIT(@,',')GROUP BY
PARSE(value AS INT)),1,0)r

पठनीय संस्करण:

CREATE FUNCTION f(@ NVARCHAR(MAX)) RETURNS TABLE RETURN
  SELECT IIF(2 = ALL(SELECT COUNT(*)
                     FROM STRING_SPLIT(@, ',')
                     GROUP BY PARSE(value AS INT)), 1, 0) AS r

SQL फिडेल पर इसे आज़माएं !

-2 बाइट्स केविन क्रूज़सेन की बदौलत


1
चूँकि आप उपनाम का उपयोग नहीं करते हैं, के cबाद हटाया नहीं जा सकता COUNT(*)?
केविन क्रूज़सेन

@ केविनक्रूजसेन, आप सही कह रहे हैं, धन्यवाद।
आंद्रेई ओडेगो

4

हास्केल , 61 45 बाइट्स

import Data.List
all((2==).length).group.sort

इसे ऑनलाइन आज़माएं!

12 बाइट्स के लिए @ केविनक्रूजसेन, और @nimi को एक और 4 के लिए धन्यवाद।

पहले हास्केल ने जवाब दिया, लेकिन यह आश्चर्यजनक रूप से करना आसान था। कर सकते हैं शायद एक बहुत golfed जा। इसका स्पष्ट उदाहरण...


3
मैं हास्केल नहीं जानता, लेकिन मुझे पूरा यकीन है कि all(True==).map(2==)यह हो सकता है all(2==)। :)
केविन क्रूज़सेन

4
... और इस कदम lengthके लिए all: all((2==).length).group.sort। फ़ंक्शन को नाम देने की आवश्यकता नहीं है, अर्थात ड्रॉप करें f=
निमि।

दरअसल, all(2==)जब मैंने जीएचसीआई में परीक्षण किया था , तब मैंने इसे नजरअंदाज कर दिया था। धन्यवाद केविन और निमि, मैं जवाब को अपडेट करूंगा।
जे। सल्ल।

4
... ओह और भविष्य के उपयोग के लिए: all(True==)है and
नीमी

4

जावास्क्रिप्ट (ईएस 6), 37 बाइट्स

रिटर्न झूठी नूह के लिए या सच गैर नूह के लिए।

a=>a.some(v=>a.map(x=>t-=v==x,t=2)|t)

इसे ऑनलाइन आज़माएं!

टिप्पणी की गई

a =>               // a[] = input
  a.some(v =>      // for each value v in a[]:
    a.map(x =>     //   for each value x in a[]:
      t -= v == x, //     decrement t if v is equal to x
                   //     (i.e. if v appears exactly twice, t is decremented twice)
      t = 2        //     start with t = 2
    )              //   end of map()
    | t            //   yield t, which is supposed to be equal to 0
  )                // end of some()

3

एपीएल (Dyalog यूनिकोड) , 8 बाइट्स SBCS

बेनामी tacit उपसर्ग समारोह। रिटर्न 0/ 1

∧/2=⊢∘≢⌸

इसे ऑनलाइन आज़माएं!

 बाएं तर्क के रूप में प्रत्येक मान के लिए और सही मान के रूप में उस मूल्य की घटनाओं के सूचकांकों के लिए, कॉल करें:

 दलील दलील दलील (घटनाएँ)
 फिर
 वापसी कि, बाएँ तर्क की अनदेखी

2= बूलियन सूची से संकेत मिलता है कि कौन सी ऊंचाई 2 हैं

∧/ और कमी (यानी वे सब सच हैं?)


3

पॉवरशेल , 66 37 26 बाइट्स

-11 बाइट्स mazzy के लिए धन्यवाद

!(($args|group|% c*t)-ne2)

इसे ऑनलाइन आज़माएं!

समूह $lऔर मिलान मूल्यों के सभी मायने रखता है। फिर यह इस सूची से 2 की सभी गणनाओं को फ़िल्टर करता है। यदि सूची खाली है, तो यह एक नंबर है; अन्यथा, यह गैर-2 गणना के साथ अभी भी आबाद होगा। सूची Trueखाली न होने पर सूची में प्रवेश नहीं करेगी और Falseयदि यह आबाद है


1
यदि मान एक-दूसरे को संतुलित करते हैं, तो विफल रहता है .. यानी [1,2,1,1] इसलिए गिनती 4 है, अद्वितीय की गिनती 2 है और इसलिए नूह नहीं होने के बावजूद नूह के रूप में हल होगा।
समय सीमा समाप्त डेटा

@ExpiredData हेक
वस्कह

मैंने इसे समझने से पहले किसी अन्य भाषा में इस दृष्टिकोण की कोशिश की, यह काम नहीं करेगा ...
समाप्त डेटा

1
¯ \ _ (ツ) _ /
m

1
@mazzy धन्यवाद सब groupकुछ मौजूद है के बारे में भूल गए
Veskah


3

PHP , 60 बाइट्स

function($a){return!array_diff(array_count_values($a),[2]);}

इसे ऑनलाइन आज़माएं!

PHP में इसके लिए शानदार बिल्ट-इन हैं, हालांकि 20 वर्णों पर, array_count_values()यह बहुत गोल्फ वाला नहीं है।


PHP में हमेशा महान अंतर्निहित, लंबे नामों के साथ, उच्छ्वास होता है!
Night2

3

गणितज्ञ, २५ २४ बाइट्स

MatchQ[{{_,2}..}]@*Tally

इसे ऑनलाइन आज़माएं!

Tallyफंक्शन फॉर्म की एक सूची देता है , जो फिर एक पैटर्न है कि सब है कि क्या जाँच करता है के खिलाफ मिलान किया जाता है गिनती कर रहे हैं 2।{{element, count}, ...}


3

अटैची , 16 बाइट्स

${All&x!{_~x=2}}

इसे ऑनलाइन आज़माएं!

व्याख्या

${All&x!{_~x=2}}
${             }    lambda with input x
  All&x!{     }     over each element _ of x:
         _~x            check that the number of occurrences of _ in x
            =2          is 2

वैकल्पिक

17 बाइट्स: {All&_!`=&2@`~&_}

18 बाइट्स: {All[`=&2@`~&_,_]}

23 बाइट्स: Same@2&`'@Sum@Table[`=]

25 बाइट्स: Same«2'Sum@Table[`=,_]»

25 बाइट्स: Same<~2'Sum@Table[`=,_]~>

25 बाइट्स: {Same[2'Sum@Table[`=,_]]}

35 बाइट्स: {Commonest@_==Unique@_and _[0]~_=2}


3

टीआई-बेसिक, 47 बाइट्स

Input(L1
SortA(L1
not(remainder(dim(L1,2)) and prod(not(△List(L1))=seq(remainder(I,2),I,1,-1+dim(L1

मैं टीआई-बेसिक का बहुत बड़ा प्रशंसक हूं। यह वास्तव में किसी भी उद्देश्य के लिए एक महान भाषा नहीं है, लेकिन मैं इसमें प्रोग्रामिंग (और गोल्फिंग) का आनंद लेता हूं।

यह कोड कैसे काम करता है?

सबसे पहले, यह सूची को सॉर्ट करता है।

दूसरा, यह एक और सूची बनाने के लिए function सूची फ़ंक्शन का उपयोग करता है, जो क्रमबद्ध सूची के तत्वों के बीच अंतर है। (उदाहरण के लिए, (सूची ({1,3,7,8}) {2,4,1}) प्राप्त होगी। इस सूची पर लागू नहीं होता है, जो सूची के प्रत्येक गैर-शून्य तत्व को शून्य और प्रत्येक शून्य को एक में परिवर्तित करता है।

फिर, प्रोग्राम यह जाँचता है कि परिणामी सूची पैटर्न को फिट करती है {1, 0, 1, 0, ...}, जो केवल तभी सही होगी जब मूल सूची नूह सूची होगी।

एक अतिरिक्त जांच यह भी है कि कुछ किनारे के मामलों को पकड़ने के लिए सूची की लंबाई सम है।

यहाँ परीक्षण मामलों के कुछ स्क्रीनशॉट दिए गए हैं:

कुछ परीक्षण मामले कुछ और परीक्षण मामले


3

जूलिया 1.0 , 32 बाइट्स

l->sum(isone,l./l')/length(l)==2

इसे ऑनलाइन आज़माएं!

मैट्रिक्स देने lवाले ट्रांसपोज़ द्वारा इनपुट ऐरे के प्रत्येक तत्व को विभाजित l'करता है। isoneप्रत्येक तत्व पर लागू होते समय इस मैट्रिक्स पर सुमिंग दो बार लंबाई देता है lयदि प्रत्येक तत्व बिल्कुल दो बार दिखाई देता है।



3

जूलिया , 30 अक्षर 26 बाइट्स

!a=all(x->2==sum(a.==x),a)

धन्यवाद, इस ट्रिक के लिए H.PWiz!

इसे ऑनलाइन आज़माएं!


1
आपके पास !a=all(x->2==sum(a.==x),a)26 बाइट्स हो सकते हैं । एनबी। मैं इस साइट पर बाइट्स में गिनती करने की सलाह देता हूं
H.PWiz

आपका बहुत बहुत धन्यवाद! मुझे नहीं पता था कि आप !गुमनाम कार्यों के लिए (ab) उपयोग कर सकते हैं
user3263164


2

VDM-SL , 64 बाइट्स

f(a)==forall y in set inds a&card{x|x in set inds a&a(x)=a(y)}=2

व्याख्या

VDM मुख्य रूप से दूसरे क्रम के लॉजिक स्टेटमेंट की तरह काम करता है।

forall y in set inds a                //Bind y to each of the indices of a

{x|x in set inds a&a(x)=a(y)}         //build a set of the indices of a who have the same
                                      //value as the value at y

card {...} = 2                        //and check the cardinality of that set is 2

चूंकि आप TIO VDM यहाँ डिबग सत्र से आउटपुट नहीं कर सकते हैं


मुझे पता है कि शायद इसके लिए कोई ऑनलाइन कंपाइलर नहीं है, लेकिन क्या आप परीक्षण मामलों के कुछ स्क्रीनशॉट्स (कुछ) को सत्यापन के रूप में जोड़ सकते हैं? :)
केविन क्रूज़सेन

@ केविनक्रूजसेन ने बग को ठीक करने वाले कुछ बाइट्स को बचाया, जिससे शायद कोड को समझना आसान हो गया। मैं एक स्पष्टीकरण भी जोड़ दूंगा :)
डेटा

2

MATL , 6 बाइट्स

8#uqqa

इसे ऑनलाइन आज़माएं!

सत्य के लिए ०, मिथ्या के लिए १। पोर्ट्स रॉबिन राइडर का जवाब

MATL , 6 बाइट्स

&=s2=A

इसे ऑनलाइन आज़माएं!

सत्य के लिए १, मिथ्या के लिए ०। पोर्ट्स लुइस मेंडो का जवाब




2

एक्सेल, 45 बाइट्स

=SUM(IF(FREQUENCY(A:A,A:A)=2,1))=COUNT(A:A)/2

कॉलम A में डेटा को शामिल करता है, इसके साथ कॉलम A में एक के अलावा किसी भी सेल में प्रवेश किया जाता है। अगर जोड़े और मेल खाने वाले जोड़े नहीं हैं तो TRUE लौटाता है।

        FREQUENCY(A:A,A:A)                     Counts how many of each value there is
     IF(                  =2,1)                If this is 2, add value of 1 to array otherwise 0
=SUM(                          )               Sum the count in that array that have a exactly 2
                                 COUNT(A:A)/2  Count how many total values in column
                                =              If this is equal, return TRUE else FALSE

योग के लिए / 2 और 5 को जोड़ने की कोशिश की, लेकिन यह काम नहीं किया।
उन आवृत्तियों को गिनने की कोशिश की जो <> 2 हैं और यह सही मात्रा में वापस नहीं आया।


2

ऑक्टेव / MATLAB, 22 21 बाइट्स

@(x)any(sum(x==x')-2)

अनाम फ़ंक्शन जो एक संख्यात्मक वेक्टर, और आउटपुट इनपुट करता है 0 यदि वेक्टर स्थिति को संतुष्ट करता है या 1अन्यथा करता है ।

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

व्याख्या

@(x)                   % define anonymous function with input x
            x          % x
               x'      % x transposed and conjugated
             ==        % equality comparison, element-wise with broadcast. Gives a
                       % square matrix
        sum(     )     % sum of each column
                  -2   % subtract 2, element-wise
    any(            )  % true if and only if any value is not zero

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