सिक्के के टॉस के रूप में कई सिर के आधे होने की संभावना की गणना करें।


10

एक प्रोग्राम लिखें, जो मानक इनपुट से एक छोटा सा सकारात्मक भी दिया गया है, इस संभावना की गणना करता है कि फ्लिपिंग से कई सिक्कों के परिणामस्वरूप आधे सिर हो जाएंगे।

उदाहरण के लिए, दिए गए 2 सिक्के संभव परिणाम हैं:

HH HT TH TT

जहां एच और टी सिर और पूंछ हैं। 2 परिणाम ( HTऔर TH) हैं जो सिक्कों की संख्या के आधे के बराबर हैं। कुल 4 परिणाम हैं, इसलिए संभावना 2/4 = 0.5 है।

यह दिखने में जितना आसान है।

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

2 -> 0.5
4 -> 0.375
6 -> 0.3125
8 -> 0.2734375

1
हम मान सकते हैं कि सिक्के सही हैं और सिर या पूंछ प्राप्त करने का एक समान मौका है?
जुआन

क्या हमें आउटपुट को प्रिंटआउट करने की आवश्यकता है?
डॉगबर्ट

@ जुआन हाँ। @ डॉगबर्ट हाँ।
david4dev

क्या हम अपने समाधानों को सत्यापित करने के लिए कुछ और परीक्षण मामले प्राप्त कर सकते हैं?
डॉगबर्ट

@ डॉगबर्ट - किया
david4dev 20

जवाबों:


3

जे, 22 19 (हत्यारा दृष्टिकोण)

मैं अपने हास्केल उत्तर को गोल करते हुए इस पर उतर गया।

%/@:>:@i.&.(".@stdin)_

(वही I / O मेरे अन्य J उत्तर के रूप में )


यह मेरे लिए एक त्रुटि देता है:0 1|domain error: script | %/ >:i.&.(".@stdin)_
david4dev

@ david4dev आउच। मेरी बचे हुए स्क्रिप्ट फ़ाइल या तो काम नहीं किया। मुझे याद नहीं है कि मैंने कहां गड़बड़ की है, लेकिन आपके द्वारा परीक्षण किया गया संस्करण वास्तव में दोषपूर्ण है। यह अब तय हो गया है।
JB

3

परी / जीपी - 32 30 34 चार्ट

print(binomial(n=input(),n\2)/2^n)

वाह, मैंने एक प्रोग्रामिंग भाषा को द्विपद फ़ंक्शन में बनाया नहीं माना।
david4dev

32 वर्ण print(binomial(n=input,n\2)/2^n):।
चार्ल्स

3

पायथन 53 वर्ण

i=r=1.;exec"r*=(2*i-1)/i/2;i+=1;"*(input()/2);print r

3

एक्सेल, २५

कल्पना के अनुसार बिल्कुल नहीं, हालांकि :)

एक सेल का नाम दें nऔर फिर दूसरे सेल में टाइप करें:

=COMBIN(n,n/2)/POWER(2,n)

2
एक्सेल वास्तव में ^ को ठीक से लागू करता है, इसलिए आप इस तरह से कुछ वर्णों को काट सकते हैं।
SuperJedi224

3

हास्केल, 39 43 46

main=do x<-readLn;print$foldr1(/)[1..x]

प्रदर्शन:

$ runhaskell coins.hs <<<2
0.5
$ runhaskell coins.hs <<<4
0.375
$ runhaskell coins.hs <<<6
0.3125
$ runhaskell coins.hs <<<8
0.2734375

मुझे एक त्रुटि मिलती है:Undefined variable "readln"
david4dev

@ david4dev 'L' readLnएक कैपिटल है।
जेबी

मुझे लगता main=do x<-readLn;print$foldr1(/)[1..x]है कि एक ही काम करता है और 3 बाइट्स बचाता है?
लिन

वास्तव में। विलय, धन्यवाद!
जेबी

2

जे, 25 (प्राकृतिक दृष्टिकोण)

((!~-:)%2&^)&.(".@stdin)_

नमूना उपयोग:

$ echo -n 2 | jconsole coins.ijs 
0.5
$ echo -n 4 | jconsole coins.ijs
0.375
$ echo -n 6 | jconsole coins.ijs
0.3125
$ echo -n 8 | jconsole coins.ijs 
0.273438

यह सभी आत्म-व्याख्यात्मक है, लेकिन जिम्मेदारियों के एक मोटे विभाजन के लिए:

  • !~ -:द्विपद (x, x / 2) के रूप में सोचा जा सकता है
  • % 2&^ द्वारा विभाजित है 2 ^ x से " है
  • &. (". @ stdin) _ I / O के लिए



2

गोल्फस्क्रिप्ट - 30 वर्ण

सीमा - केवल 63 से कम इनपुट के लिए काम करता है

'0.'\~..),1>\2//{{*}*}%~\/5@?*

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

$ echo 2 | ruby golfscript.rb binom.gs 
0.50
$ echo 4 | ruby golfscript.rb binom.gs 
0.3750
$ echo 6 | ruby golfscript.rb binom.gs 
0.312500
$ echo 8 | ruby golfscript.rb binom.gs 
0.27343750

विश्लेषण

'0.'जीएस फ्लोटिंग पॉइंट नहीं करता है, इसलिए हम एक पूर्णांक लिखकर इसे नकली बना देंगे। इसके बाद
\~इनपुट को स्टैक के शीर्ष पर खींचें और एक पूर्णांक में कनवर्ट
..करें। इनपुट की 2 प्रतियाँ
),1>बनाएँ। 1. से एक सूची बनाएँ
\2//। सूची में 1..n / 2 और n / 2 + 1..n
{{*}*}%दो उप-तत्वों को देने वाले तत्वों (n / 2) को गुणा करें! और n! / (n / 2)!
~स्टैक पर उन दो नंबरों को निकालें और डिवाइड के
\चारों ओर दो नंबरों को स्वैप करके 5 ** n से गुणा करें। यह ऊपर दी गई सीमा का कारण है
/
5@?*


मैं क्यों सीमा के रूप में उत्सुक हूँ। क्या आप सभी संयोजनों को उत्पन्न करने के लिए गोस्पर की हैक का उपयोग कर रहे हैं? विचार मुझे हुआ (और कल्पना निष्पादन के समय के बारे में कुछ भी नहीं कहता है)।
पीटर टेलर

गोल्फस्क्रिप्ट में एक फ्लोट पॉइंट वैरिएबल क्लास नहीं है, इसलिए वह जो करता है वह एक पूर्णांक की गणना करता है जो स्ट्रिंग के बाद लिखा गया 0.है, उत्तर का दशमलव भाग है, लेकिन यह विधि आवश्यक 0 को छोड़ देती है जब मौका 10% से कम बढ़ता है।
आआआआआआआआआआ आआआआआ

@Peter, क्या eBusiness ने कहा :)
gnibbler

2

TI-BASIC, 10

यह कैलकुलेटर मेमोरी के दस से अधिक बाइट्स लेगा क्योंकि एक प्रोग्राम हेडर है, लेकिन कोड के केवल दस बाइट्स हैं।

binompdf(Ans,.5,.5Ans

//Equivalently:

2^~AnsAns nCr (.5Ans

यह फॉर्म में इनपुट लेता है [number]:[program name]; एक इनपुट कमांड जोड़ने से तीन और बाइट्स का उपयोग होता है। ~एकात्मक शून्य से टोकन है।



1

जे, २०

f=:(]!~[:<.2%~])%2^]

उदाहरण:

f 2
0.5
f 4
0.375
f 6
0.3125
f 8
0.273438

सवाल STDIN से इनपुट मांगता है, फ़ंक्शन नहीं।
डॉगबर्ट

@ डॉगबर्ट: मुझे पता है; मैं यह उल्लेख करना भूल गया। मैंने इसे अद्यतन करने का इरादा किया है ...
इलेक्स

1

एपीएल 21 15 वर्ण

((N÷2)!N)÷2*N←⎕

जहाँ के लिए यह सही प्रस्तुत नहीं करता है

((N{ColonBar}2)!N){ColonBar}2*N{LeftArrow}{Quad}

जहाँ {} में सब कुछ यहाँ की तरह APL विशिष्ट प्रतीक हैं


क्या अंतिम वर्ण को वर्ग माना जाता है?
जेबी

हां यह क्वाड सिंबल होना चाहिए।
jpjacobs

मैं मिलता है�[token]: � undefined
david4dev

मुझे लगता है कि यह एक कोडिंग मुद्दा है। में NARS2000 आप कॉपी पेस्ट कर सकते हैं के रूप में है।
jpjacobs





0

जावास्क्रिप्ट, 86 बाइट्स

a=prompt(f=function(n){return n?n*f(n-1):1});alert(f(a)/(f(a/2)*f(a/2)*Math.pow(2,a)))

0

अजगर 3, 99

यह एक भोली दृष्टिकोण है, मुझे लगता है, और fR0DDY का समाधान बहुत ठंडा है, लेकिन कम से कम मैं इसे हल करने में सक्षम हूं।

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

from itertools import*
n=int(input())
print(sum(n/2==i.count("H")for i in product(*["HT"]*n))/2**n)

अजगर 2, 103

from itertools import*
n=int(raw_input())
print sum(n/2==i.count("H")for i in product(*["HT"]*n))/2.**n

0

उद्देश्य सी:

152 148 बाइट्स सिर्फ फंक्शन के लिए।

क्लास के तरीके, हेडर और UI कोड के भीतर शामिल नहीं हैं।

इनपुट: intसिक्कों की संख्या निर्धारित करने वाला मान।

आउटपुट: floatसंभावना का निर्धारण करने वाला एक मान।

-(float)calcPWithCoins:(int)x {int i=0;int j=0;for (int c=x;c<1;c+-){i=i*c;} for(int d=x/2;d<1;d+-){j=j*d;} return (((float)i/(float)j)/powf(2,x));}

Ungolfed:

-(float)calcPWithCoints:(int)x
{
    int i = 0;
    int j = 0;
    for (int c = x; c < 1; c+-) {
         i = i * c;
    }
    // Calculate the value of x! (Factorial of x)

    for (int d = x / 2; d < 1; d+-)
         j = j * d;
    }
    // Calculate (x/2)! (Factorial of x divided by 2)

    return (((float)i / (float)j) / powf(2, x));
    /* Divides i! by (i/2)!, then divides that result (known as the nCr) by 2^x.
    This is all floating-point and precise. If I didn't have casts in there,
    It would be Integer division and, therefore, wouldn't have any decimal
    precision. */
}

यह Microsoft Excel के उत्तर पर आधारित है । सी और ऑब्जेक्टिव-सी में, चुनौती हार्ड-कोडिंग एल्गोरिदम में है।

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