मॉड 2 मल्टीमोनियल गुणांक


14

क्विंटोपिया ने यहां बहुराष्ट्रीय गुणांकों की गणना करने के लिए एक चुनौती पोस्ट की है (कुछ पाठ यहां से कॉपी किए गए हैं)। बहुराष्ट्रीय गुणांक मॉड 2 की गणना करने के लिए एक मजेदार एल्गोरिदम है।

संख्याओं की सूची को देखते हुए, k 1 , k 2 , ..., k m , बहुराष्ट्रीय गुणांक के अवशेषों का उत्पादन करता है:

यहाँ छवि विवरण दर्ज करें

कम आधुनिक 2. निम्नलिखित कलन विधि इस कुशलता से करता है: प्रत्येक के लिए कश्मीर मैं , की बाइनरी विस्तार की गणना कश्मीर मैं , यह है कि, लगता है एक ij ऐसी है कि प्रत्येक एक ij 1 या 0 और

यहाँ छवि विवरण दर्ज करें

यदि कोई ऐसा j है जो r a s के लिए एक rj = a sj = 1 है , तो संबद्ध mod 2 बहुपद गुणांक 0 होता है, अन्यथा mod 2 बहुपद गुणांक 1 होता है।

कार्य

एक प्रोग्राम या फ़ंक्शन लिखिए जो m नंबर लेता है , k 1 , k 2 , ..., k m , और आउटपुट या संबंधित बहुराष्ट्रीय गुणांक लौटाता है। आपका कार्यक्रम वैकल्पिक रूप से लग सकता है मी एक अतिरिक्त तर्क के रूप में अगर जरूरत हो।

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

  • यदि बहुराष्ट्रीय गुणांक विषम है और बहुराष्ट्रीय गुणांक सम है तो आउटपुट किसी भी सत्य मान का हो सकता है।

  • बहु-आयामी गुणांक की गणना करने के लिए डिज़ाइन किए गए अंतर्निहित इंस की अनुमति नहीं है।

  • मानक खामियां लागू होती हैं।

स्कोरिंग

यह कोड गोल्फ है: बाइट्स जीत में सबसे छोटा समाधान।

उदाहरण:

7, 16 और 1000 के बहुपद गुणांक को खोजने के लिए, हम उनमें से प्रत्येक का बाइनरी विस्तार करते हैं:

यहाँ छवि विवरण दर्ज करें

चूंकि किसी भी कॉलम में 1 से अधिक नहीं है, इसलिए बहुराष्ट्रीय गुणांक विषम है, और इसलिए हमें कुछ सत्य का उत्पादन करना चाहिए।

7, 16 और 76 के बहुपद गुणांक को खोजने के लिए, हम उनमें से प्रत्येक का बाइनरी विस्तार करते हैं:

यहाँ छवि विवरण दर्ज करें

चूंकि 76 और 7 दोनों में उनके द्विआधारी विस्तार में 4 है, इसलिए बहुराष्ट्रीय गुणांक समान है और इसलिए हम एक गलत मूल्य का उत्पादन करते हैं।

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

Input: [2, 0, 1]
Output: Truthy

Input: [5,4,3,2,1]
Output: Falsey

Input: [1,2,4,8,16]
Output: Truthy

Input: [7,16,76]
Output: Falsey

Input: [7,16,1000]
Output: Truthy

Input: [545, 1044, 266, 2240]
Output: Truthy

Input: [1282, 2068, 137, 584]
Output: Falsey

Input: [274728976, 546308480, 67272744, 135004166, 16790592, 33636865]
Output: Truthy

Input: [134285315, 33849872, 553780288, 544928, 4202764, 345243648]
Output: Falsey

1
PPCG में आपका स्वागत है! अच्छी पहली पोस्ट!
R

मुझे लगता है कि ==समानता के लिए कई भाषाओं के साथ एक बाइट बचाई जा सकती है अगर सत्य और असत्य को फ़्लिप करने दिया जाए।
अर्जन जोहान्सन

@ .RjanJohansen जो ठीक लगे।
हुड

जवाबों:



7

पायथन 3 2, 55 43 42 बाइट्स

lambda l:sum(l)==eval(`l`.replace(*',|'))

श्री Xcoder से -12 बाइट्स

-1 रॉड से बाइट

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

स्पष्टीकरण: जाँचता है कि संख्याओं का योग बिटवाइज़-या संख्याओं के बराबर है या नहीं।


43 बाइट्स:lambda l:sum(l)==eval("|".join(map(str,l)))
मिस्टर एक्सकोडर

आप 42 बाइट्स को python2
Rod




2

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

सहेजे गए 2 बाइट्स @ Mr.Xcoder
के लिए धन्यवाद 1 बाइट @ETHproductions के लिए धन्यवाद बचे

बिटवाइज या (जैसे pizzapants184 और Leaky Nun किया था) के साथ राशि की तुलना में 1 3 4 बाइट्स मेरे शुरुआती दृष्टिकोण से कम है:

a=>(q=c=>eval(a.join(c)))`|`==q`+`

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


ऑल्ट। संस्करण, 38 बाइट्स

a=>!a.some((x,i)=>a.some(y=>i--&&x&y))

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


तकनीकी रूप से, pizzapants184 ने मुझसे 14 सेकंड पहले उत्तर दिया ...
लीक नून

-1 बाइट:a=>(q=c=>eval(a.join(c)))`|`==q`+`;
ETHproductions

@ETHproductions अच्छा लगा! यह Node.js. में ठीक काम करता है लेकिन क्या आपने इसे ब्राउज़र में काम करने के लिए प्रबंधित किया है?
अरनुलद

फ़ायरफ़ॉक्स 57 में मेरे लिए ठीक काम करता है। क्या आपको कोई त्रुटि हो रही है या यह ठीक से काम नहीं कर रहा है?
ETHproductions

@ETHproductions वास्तव में, हाँ यह काम करता है। यह सिर्फ repl.it पर विफल होता है ।
अरनौलड

2

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

(==).sum<*>foldl1 xorएक अनाम फ़ंक्शन एक लौट रहा है Bool। के रूप में उपयोग करें ((==).sum<*>foldl1 xor) [2,0,1]

import Data.Bits
(==).sum<*>foldl1 xor

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

  • Pizzapants184 और Leaky Nun द्वारा बहुत ही समान ट्रिक जो हर कोई उपयोग करता है, सिवाय इसके कि हास्केल ऑपरेटर नामों के साथ (बिटवाइज़ या) के xorबजाय एक बिट् यू (बिटवाइज़) का उपयोग करने के लिए इसे बचाता है (.|.)

  • (==).sum<*>foldl1 xorका एक बिंदु मुक्त संस्करण है \l->sum l==foldl1 xor l


2

जावा 8, 53 बाइट्स

a->{int i=0,j=0;for(int x:a){i+=x;j|=x;}return i==j;}

पोर्ट @LeakyNun के जेली उत्तर

स्पष्टीकरण:

इसे यहाँ आज़माएँ।

a->{             // Method with integer-array parameter and boolean return-type
  int i=0,j=0;   //  Two integers, both starting at 0
  for(int x:a){  //  Loop over the array
    i+=x;        //   Add them to the first integer
    j|=x;}       //   And bitwise-OR it with the second integer
  return i==j;}  //  Return if both integers are the same after the loop




1

लाल , 78 बाइट्स

f: func[x][b: :to-binary t: 0 s: b 0 foreach n x[t: t + n s: s or b n]s = b t]

यह काम किस प्रकार करता है:

Ungolfed:

Red []
f: func [x][         -  a function taking a block as an argument
    b: :to-binary    -  an alias for the to-binary function
    t: 0             -  set the sum of the numbers to 0
    s: b 0           -  set the "or" total to binary 0
    foreach n x[     -  for each number in the block
        t: t + n     -  add it to the sum
        s: s or b n  -  bitwise or of its binary representation with the total
    ]
    s = b t          - are the sum (binary) and the "or" total equal?
]

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



0

बैच, 73 बाइट्स

@set/as=o=0
@for %%i in (%*)do @set/as+=%%i,o^|=%%i
@if %s%==%o% echo 1

सत्य के 1लिए आउटपुट , मिथ्या के लिए कुछ भी नहीं। Pizzapants184 / लीक नून के एल्गोरिथ्म का एक और स्पष्ट बंदरगाह।


0

जे , 10 बाइट्स

+/=+./&.#:

अभी तक pizzapants184 के एक और बंदरगाह & लीक नन के समाधान।

यह काम किस प्रकार करता है?

+/.&.#: - संख्याओं को बाइनरी में कनवर्ट करें, बिटवाइज़ या दो की शक्तियों को लागू करें और बाइनरी से दशमलव में वापस कनवर्ट करें

+/ - इसके अलावा इनपुट को कम करें

= - उपरोक्त समान हैं?

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

सीधा विकल्प

जे , 12 बाइट्स

2>[:>./+/@#:

यह काम किस प्रकार करता है?

+/@#: - प्रत्येक संख्या को बाइनरी में कनवर्ट करें और 2 की प्रत्येक शक्ति का योग ढूंढें

>./ - अधिकतम खोजें

2>- क्या यह 2 से कम है? -> सत्य

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


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