एक वोट का C- कारक ज्ञात कीजिए


11

इस चुनौती में आप यह निर्धारित करेंगे कि C- फैक्टर नामक संख्या का पता लगाकर, अन्य मतों की एक सरणी को देखते हुए, एक वोट कितना विवादास्पद है। सी-फैक्टर क्या है, आप पूछें?

ठीक है, कल्पना कीजिए कि आपको एक चुनाव पर कई वोट मिले हैं। हम इस्तेमाल करेंगे 1और 0चुनौती की खातिर किसी चुनाव में दो अलग-अलग उम्मीदवारों प्रतिनिधित्व करते हैं। यहां हमारे नमूना चुनाव में दस वोट हैं:

0110111011

अब, कहते हैं कि हम उम्मीदवार के लिए किसी भी वोट का सी-फैक्टर ढूंढना चाहते हैं 0। हम निम्नलिखित कार्य कर सकते हैं:

(,v)=रों(-n(v))

में , oवोट हम के लिए सी-कारक निर्धारित करने के लिए चाहते हैं, और vवोट की एक सरणी है। इसलिए, उम्मीदवार के लिए किसी भी वोट का सी-फैक्टर प्राप्त करने के लिए हमारे फ़ंक्शन का उपयोग करें 0:

f(0,[0,1,1,0,1,1,1,0,1,1])=0.7

एक कम सी-फैक्टर से पता चलता है कि वोट अन्य वोटों की तुलना में कम विवादास्पद था। इसलिए, उम्मीदवार के लिए 0एक वोट उम्मीदवार के लिए एक वोट की तुलना में अन्य वोटों से अधिक भिन्न होता है 1। इसकी तुलना में, एक उम्मीदवार के 1वोट के लिए सी-फैक्टर 0.3 , इसलिए यह कम विवादास्पद है क्योंकि यह अन्य वोटों की तरह अधिक है।

चुनौती

एक वोट के एक परिणाम के सी-कारक को निर्धारित करने के लिए एक फ़ंक्शन (,v) लिखें ।ov

  • oएक पूर्णांक या तो होना चाहिए, 0या 1

  • v शून्य और लोगों की मनमानी लंबाई वाली एक सरणी (या भाषा के विनिर्देशों के आधार पर इसी तरह का कंटेनर) होना चाहिए।

  • फ़ंक्शन को मापदंडों या दिए गए संशोधित विधि का उपयोग करके, फ़ंक्शन पैरामीटर को दिए गए सी-कारक के कंसोल पर वापस लौटना चाहिए या प्रिंट करना चाहिए।

सौभाग्य! कम से कम बाइट्स जीतता है (पांच दिनों में चुने गए विजेता)।


mean(v)आपके उदाहरण में 0.7 के बराबर नहीं है ?
हाइपरनेत्रिनो

@ हाइपरनेट्रिनो हाँ। मुद्दा क्या है?
संयोजकचर

कैसे के abs(0 - 0.7)बराबर है 0.3?
हाइपरनेत्रिनो

आह। उदाहरण तय किया। मैंने दो नंबरों को उलट दिया
संयोजक

ओह ठीक है। स्पष्टीकरण देने के लिए धन्यवाद!
हाइपरनेत्रिनो

जवाबों:



10

आर , 23 बाइट्स

function(o,v)mean(o!=v)

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

चुनौती (यानी ) vसे भिन्न मूल्यों के अनुपात की गणना करने के लिए उबलती है । इसलिए हम उपयोग करने से बच सकते हैं ।omean(xor(o,v))abs


2
इसके अलावा, मनमाने ढंग से मतदान प्रतिनिधित्व के लिए काम करता है, स्वच्छ।
क्रिमिनल

6

एपीएल (डायलॉग यूनिकोड) , tes ५ बाइट्स

≠⌹⊢=⊢

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

अनाम ट्रेन। @ बाइट के लिए @ Adám को धन्यवाद, और 3 बाइट्स के लिए @ngn को धन्यवाद!

किस तरह:

≠⌹⊢=⊢  Anonymous Train
      The right argument (⍵)
  ⊢=   Equals itself. Generates an array of 1s
      XOR left (⍺) and right args; generates  or (not ⍵), depending on ⍺.
      Divide these matrices.

4
आप इसे 5. संकेत: ⌹
ngn


3

2
मैं 30 सेकंड के बहुत देर हो चुकी .. मेरा आदेश था अलग हालांकि हूँ, पहले αतो ÅA, पी
केविन Cruijssen

2
@ केविनक्रूजसेन मैंने देखा कि आपका समाधान वास्तविक समय में आया, मैंने टिप्पणी करना शुरू कर दिया, और इसे हटा दिया गया, लगभग 30 सेकंड के भीतर। प्रफुल्लित!
संयोजकचर

@ केविनक्रूजसेन मुझे वास्तव में समझ में नहीं आया कि दो आदेश एक ही कैसे काम करते हैं ... :-) मेरा 05AB1E ज्ञान बहुत अच्छा नहीं है
लुइस मेंडू

1
@ केविनक्रूजसेन आह, मैं देख रहा हूं। जो मुझे भ्रमित कर रहा था वह यह है कि दो दृष्टिकोण मनमानी संख्याओं के लिए अलग-अलग परिणाम देते हैं; लेकिन 0/1 इनपुट के लिए वे सहमत प्रतीत होते हैं। उदाहरण
लुइस मेंडू

2
@LuisMendo आह, हाँ, तुम वास्तव में सही हो। मैंने कुछ अन्य पूर्णांक के साथ इसका परीक्षण किया, लेकिन उन लोगों ने आदेश की परवाह किए बिना समान परिणाम दिए (लेकिन 0.8 के साथ आपका परीक्षण मामला वास्तव में भिन्न है)। यदि इनपुट में इसके अलावा कुछ और भी शामिल हो सकता है 0/ 1, तो पहले माध्य प्राप्त करने का आपका दृष्टिकोण और फिर चुनौती विवरण में सूत्र से तुलना करने पर पूर्ण अंतर सही है। केवल 0s / 1s के साथ कुछ वैकल्पिक 3-बायर्स भी संभव हैं, जैसे ÊÅA
केविन क्रूज़सेन


2

अटैच , 11 8 बाइट्स

Mean@`/=

इसे ऑनलाइन आज़माएं! के रूप में तर्क देता है f[o, v]

कुछ भी मूल नहीं।

वैकल्पिक दृष्टिकोण

11 बाइट्स: Average@`/=

11 बाइट्स: ${1-x~y/#y} काउंट्स की घटनाओं xमें yकी लंबाई से विभाजित yहै, तो उस से घटा देती है 1

11 बाइट्स: {1-_2~_/#_} (इसके लिए तर्क उलटे हैं)

15 बाइट्स: ${Sum[x/=y]/#y} उपरोक्त का अधिक स्पष्ट संस्करण, बिना Average



1

प्रोटॉन , 26 बाइट्स

(o,v)=>1-v.count(o)/len(v)

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

आउटपुट एक अंश है क्योंकि प्रोटॉन बेहतर परिशुद्धता के लिए नियमित पायथन नंबरों के बजाय सिम्पी का उपयोग करता है।

(-7 बाइट्स; एब्स-डिफरेंस का मतलब एब्स-डिफरेंस से कम होता है; मैं वास्तव में गूंगा हूं)

-1 बाइट रॉड के लिए धन्यवाद


@Rod मैं यह जानने की कोशिश कर रहा था कि 1/0 इनपुट प्रतिबंध के लिए ऑप्टिमाइज़ कैसे किया जा सकता है। धन्यवाद!
हाइपरनेत्रिनो

1

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

{@_.sum/@_}o(*X!= *)

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

* X!= *एक अनाम फ़ंक्शन है जो अपने दो तर्कों के क्रॉस-बराबर उत्पाद नहीं लेता है। यह बूलियन का एक अनुक्रम पैदा करता है; उदाहरण के लिए, का 1 X!= (1, 0, 1)मूल्यांकन करता है (False, True, False)

{ @_.sum / @_ }एक अन्य अनाम फ़ंक्शन है जो अपने तर्कों का औसत लौटाता है। बूलियन संख्यात्मक रूप से और, का Trueमूल्यांकन करता है ।1False0

oऑपरेटर एक में उन दो कार्यों तैयार करता।


1

सूची , 3 बाइट्स

nÆm

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

nÆm  Main Link
n    Not Equals (returns a list of whether or not each element is unequal to to the value)
 Æm  Arithmetic Mean

यह भाषा जेली से बहुत अधिक प्रेरित है कि यह शायद मुझे और अधिक पसंद है कि जेली को अपने कोड के साथ कैसे पार्स किया जाता है।

-1 बाइट मिस्टर एक्सकोडर की बदौलत


आप 1 को बचाने के nबजाय उपयोग कर सकते हैं _...A( इसे ऑनलाइन आज़माएं! )।
श्री Xcoder

@ Mr.Xcoder ऊह अच्छा। हाँ, मुझे एहसास हुआ! धन्यवाद!
हाइपरनेत्रिनो

1

रेटिना 0.8.2 , 27 बाइट्स

(.),((?(\1)|()).)*$
$#3/$#2

इसे ऑनलाइन आज़माएं! एक अंश आउटपुट करता है। व्याख्या: पहला समूह पकड़ता है oऔर दूसरा समूह प्रत्येक प्रविष्टि को पकड़ता है v, जबकि सशर्त यह सुनिश्चित करता है कि तीसरा समूह केवल तब ही कब्जा कर लेता है जब वोट का प्रसार होता है। $#निर्माण फिर प्रासंगिक कैप्चर की गणना देता है के रूप में वांछित।








0

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

v->o->(o-=v.get().sum()/v.get().count())<0?-o:o

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

या वैकल्पिक रूप से:

v->o->Math.abs(o-v.get().sum()/v.get().count())

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

Supplier<DoubleStream>वोटों की सूची के लिए vऔर वोट के लिए दोनों इनपुट हैं ।doubleo

स्पष्टीकरण:

v->o->                 // Method with DoubleStream-Supplier & double parameters and double return
  (o-=v.get().sum()    //  Get the sum of the DoubleStream-Supplier
      /v.get().count() //  Divide it by the amount of items in the DoubleStream-Supplier
      )                //  Subtract this from `o`
       <0?-o:o         //  And get the absolute value of this updated value `o`

0

आम लिस्प 49 बाइट्स

समाधान:

(defun c(o v)(abs(- o(/(reduce'+ v)(length v)))))

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

स्पष्टीकरण:

(defun c(o v)
  (abs (- o (/ (reduce '+ v) (length v)))))
  • कम सभी सूची तत्वों पर एक फ़ंक्शन लागू होता है (इस मामले में +)
  • बाकी सिर्फ बेस फंक्शन है, एब्स (ओ - माध्य (v))


0

अजगर, 4 बाइट्स

aE.O

स्पष्टीकरण:

       ( implicitly set Q = eval(input()) )
a      Absolute difference between
 E     eval(input()) (this is the second line of input taken)
  .O   and the average of
    Q  (implicit) Q (the first line of input)

इनपुट के प्रारूप में है:

[0,1,1,0,1,1,1,0,1,1]
0

पहले वोटों की संख्या के साथ, और दूसरा उम्मीदवार।

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

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