কয়েন টসস হিসাবে অর্ধেকের বেশি মাথা পাওয়ার সম্ভাবনা গণনা করুন।


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
আমরা ধরে নিতে পারি যে কয়েনগুলি নিখুঁত এবং মাথা বা লেজ নেওয়ার এমনকি সুযোগ আছে?
জুয়ান

আমাদের কি স্টপআউট আউটপুট মুদ্রণ প্রয়োজন?
ডগবার্ট

@ জুয়ান হ্যাঁ @ ডগবার্ট হ্যাঁ
ডেভিড

আমাদের সমাধানগুলি যাচাই করার জন্য আমরা আরও কিছু পরীক্ষার কেস পেতে পারি?
ডগবার্ট

@ ডগবার্ট - সম্পন্ন হয়েছে
ডেভিড

উত্তর:


3

জে, 22 19 (হত্যাকারী পদ্ধতির)

আমার হাস্কেল উত্তরটি গল্ফ করার সময় আমি এতে নামলাম।

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

( আমার অন্যান্য জে হিসাবে একই আই / ও )


এটি আমার জন্য একটি ত্রুটি দেয়:0 1|domain error: script | %/ >:i.&.(".@stdin)_
ডেভিড 4 দেব

পুনঃটুইট আমার বাকী স্ক্রিপ্ট ফাইলটিও কাজ করে না। আমি কোথায় গোলযোগ করেছি তা মনে নেই তবে আপনি যে সংস্করণটি পরীক্ষা করেছেন তা সত্যই ত্রুটিযুক্ত। এটি এখন স্থির।
জেবি

3

পরী / জিপি - 32 30 34 টি চর

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

বাহ, আমি একটি প্রোগ্রামিং ভাষা দ্বিপদী ফাংশন বিল্ট থাকার বিবেচনা করিনি।
ডেভিড

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

এক্সেল, 25

যদিও নির্দিষ্ট অনুসারে নয়, যদিও :)

একটি কক্ষের নাম দিন nএবং তারপরে নিম্নলিখিত ঘরে অন্য একটি ঘরে টাইপ করুন:

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

2
এক্সেল আসলে ^ সঠিকভাবে প্রয়োগ করে, যাতে আপনি কয়েকটি অক্ষর কেটে ফেলতে পারেন।
সুপারজেডি ২২৪

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"
পেয়েছি

@ ডেভিড 4 দেব 'এল' ইন 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

এটি সমস্ত স্ব-বর্ণনামূলক, তবে দায়িত্বগুলির বিভাজনের জন্য:

  • !~ -:দ্বি দ্বি হিসাবে বিবেচনা করা যেতে পারে (এক্স, এক্স / 2)
  • % 2&^" 2 ^ x দ্বারা বিভক্ত "
  • &. (". @ stdin) _ আমি / ও



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..n থেকে একটি তালিকা তৈরি করুন
\2//স্প্লিট 1..n / 2 এবং n / 2 +
{{*}*}%1..n তে তালিকাভুক্ত করুন। দুটি সাবলিস্টের উপাদানগুলিকে (n / 2) গুণান! এবং এন! / (এন / 2)!
~Two দুটি সংখ্যা স্ট্যাকের উপর আনুন
\এবং দুটি সংখ্যাকে প্রায় 5 ** এন দিয়ে
/ভাগ করুন
5@?** এটি উপরে বর্ণিত সীমাবদ্ধতার কারণ


সীমাবদ্ধতা কেন আমি আগ্রহী। আপনি কি সমস্ত সংমিশ্রণ উত্পন্ন করতে গসপার্স হ্যাক ব্যবহার করছেন? ধারণাটি আমার কাছে এসেছিল (এবং ধারণাটি কার্যকর করার সময় সম্পর্কে কিছুই বলে না)।
পিটার টেলর

গল্ফস্ক্রিপ্টে একটি ফ্লোট পয়েন্ট ভেরিয়েবল ক্লাস নেই, সুতরাং তিনি যা করেন তা পূর্ণসংখ্যার গণনা করা হয় যা স্ট্রিংয়ের পরে লেখা 0.উত্তরটির দশমিক অংশ, তবে সেই পদ্ধতিটি প্রয়োজনীয় 0 টি ছেড়ে দেয় যখন সুযোগটি 10% এর চেয়ে কম বৃদ্ধি পায়।
আআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআ

@ পিটার, ই-বিজনেস কী বলেছে :)
গনিবল

2

টিআই-বেসিক, 10

এটি ক্যালকুলেটর মেমরির দশ বাইটের বেশি গ্রহণ করবে কারণ একটি প্রোগ্রাম শিরোনাম রয়েছে তবে কোডের দশটি বাইট রয়েছে।

binompdf(Ans,.5,.5Ans

//Equivalently:

2^~AnsAns nCr (.5Ans

এটি ফর্ম ইনপুট লাগে [number]:[program name]; একটি ইনপুট কমান্ড যুক্ত করতে আরও তিনটি বাইট ব্যবহার করা হয়। ~আনরি বিয়োগ টোকেন।



1

জে, 20

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

উদাহরণ:

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

প্রশ্নটি কোনও ফাংশন নয়, STDIN থেকে ইনপুট চেয়েছে asks
ডগবার্ট

@ ডগবার্ট: আমি জানি; আমি এটি উল্লেখ করতে ভুলে গেছি। আমি এটি আপডেট করার ইচ্ছা করেছিলাম ...
ইয়েলেক্স

1

এপিএল 21 15 অক্ষর

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

যেখানে এটি সঠিক রেন্ডার করে না

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

কোথায় {} সবকিছু APL হয় নির্দিষ্ট প্রতীক পছন্দ এখানে


শেষ চরিত্রটি কি বর্গক্ষেত্র হওয়ার কথা?
জেবি

হ্যাঁ এটি কোয়াড প্রতীক হওয়া উচিত।
jpjacobs

আমি পেয়েছি�[token]: � undefined
ডেভিড 4

আমার ধারণা এটি একটি কোডিং ইস্যু। ইন NARS2000 আপনি অনুলিপি আটকে দিতে পারেন এটা হয়।
jpjacobs

1

উইন্ডোজ পাওয়ারশেল, 45

($p=1)..($n="$input"/2)|%{$p*=(1+$n/$_)/4}
$p

সাধরণ।



0

পোস্টস্ক্রিপ্ট, 77

([)(%stdin)(r)file token{2 idiv}if def
1
1 1[{[exch div 1 add 4 div mul}for
=


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 বাইট মাত্র ফাংশন জন্য।

শ্রেণীর পদ্ধতি, শিরোনাম এবং ইউআই কোডের মধ্যে অন্তর্ভুক্ত নয়।

ইনপুট: একটি 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. */
}

এটি মাইক্রোসফ্ট এক্সেলের উত্তরের ভিত্তিতে তৈরি । সি এবং অবজেক্টিভ-সি-তে, চ্যালেঞ্জটি অ্যালগোরিদমগুলিকে কঠোর কোডিংয়ের মধ্যে রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.