পলিয়া কলস ফ্লিপ এবং রোল


13

সমস্যা বিবৃতি

পলিয়া আবার তার কলস নিয়ে খেলছে এবং তিনি আপনাকে কিছুটা সম্ভাবনার গণনা করতে সহায়তা করতে চান।

এই অগ্নিকাণ্ডের পরীক্ষায় পল্যায়ের একটি কাল্প রয়েছে যা প্রাথমিকভাবে 1 টি লাল এবং 1 টি নীল জপমালা থাকে।

প্রতিটি পুনরাবৃত্তির জন্য, তিনি পৌঁছে যান এবং একটি পুঁতিটি পুনরুদ্ধার করেন, তারপরে রঙটি পরীক্ষা করে এবং পুঁতিটি পুঁতে রাখেন।

তারপরে তিনি একটি ন্যায্য মুদ্রা ফ্লিপ করেন, মুদ্রাটি যদি অবতরণ করে তবে তিনি একই রঙের জপমালা একটি ফর্সা 6 পার্শ্বযুক্ত ডাই রোল পরিমাণ পোড়াতে willোকান, যদি এটি লেজ অবতরণ করে তবে তিনি একই রঙের পুঁতির অর্ধেক সংখ্যাকে মুছে ফেলবেন will পূর্ণসংখ্যা বিভাগ ব্যবহার করে - সুতরাং যদি নির্বাচিত রঙের পুঁতির সংখ্যাটি বিজোড় হয় তবে তিনি সেটিকে সরিয়ে ফেলবেন (c-1)/2যেখানে সি সেই রঙের পুঁতির সংখ্যা রয়েছে)

একটি পূর্ণসংখ্যা n ≥ 0 এবং দশমিক r> 0 দেওয়া, সম্ভাব্যতাটি 2 দশমিক স্থানে দিন যে n পুনরাবৃত্তির পরে পুঁতির বর্ণের মধ্যে অনুপাতটি সংক্ষিপ্ত সংখ্যায় বাইটের চেয়ে বড় বা সমান।

পুনরাবৃত্তির একটি উদাহরণ সেট:

(X, y) এর কলটি এমনভাবে সংজ্ঞায়িত করা যাক এতে এক্স লাল পুঁতি এবং y নীল জপমালা রয়েছে।

Iteration    Urn       Ratio
0            (1,1)     1
1            (5,1)     5        //Red bead retrieved, coin flip heads, die roll 4
2            (5,1)     5        //Blue bead retrieved, coin flip tails
3            (3,1)     3        //Red bead retrieved, coin flip tails
4            (3,4)     1.333... //Blue bead retrieved, coin flip heads, die roll 3

যেমন দেখা যায় যে অনুপাতটি সবসময় 1 ডলার হয় (তাই এটি লাল বা নীল আরও কম ভাগ করে ভাগ করা হয়)

পরীক্ষার কেস:

F (n, r) n এর পুনরাবৃত্তি এবং r এর অনুপাতের জন্য ফাংশনের অ্যাপ্লিকেশনটি সংজ্ঞায়িত করা যাক

F(0,5) = 0.00
F(1,2) = 0.50
F(1,3) = 0.42
F(5,5) = 0.28
F(10,4) = 0.31
F(40,6.25) = 0.14

এটি কোড গল্ফ, তাই বাইটগুলির মধ্যে সংক্ষিপ্ততম সমাধানটি জয়ী।


আমি মনে করি
এটির

সম্ভবত বিটা বাইনোমিয়ালগুলির সাথে কিছু করার জন্য, তবে এটি লেখা আরও দীর্ঘ হতে পারে
মেয়াদোত্তীর্ণ ডেটা

ভাষার উপর নির্ভর করে; আর ও ম্যাথমেটিকা ​​দক্ষতার সাথে এটি করতে সক্ষম হবেন।
জিউসেপ

উত্তর:


6

জাভাস্ক্রিপ্ট (ES7),  145 ... 129 124  123 বাইট

হিসাবে ইনপুট লাগে (r)(n)। এটি একটি নিষ্পাপ সমাধান যা আসলে পুরো সিমুলেশনটি সম্পাদন করে।

r=>g=(n,B=s=0,R=0,h=d=>++d<7?h(d,[0,d].map(b=>g(n,B/-~!!b,R/-~!b)&g(n,B+b,R+d-b))):s/24**-~n)=>n--?h``:s+=~B<=r*~R|~R<=r*~B

এটি অনলাইন চেষ্টা করুন!

শেষ 2 টি পরীক্ষার ক্ষেত্রে খুব ধীর।

মন্তব্য

r =>                    // r = target ratio
g = (                   // g is a recursive function taking:
  n,                    //   n = number of iterations
  B =                   //   B = number of blue beads, minus 1
  s = 0,                //   s = number of times the target ratio was reached
  R = 0,                //   R = number of red beads, minus 1
  h = d =>              //   h = recursive function taking d = 6-sided die value
    ++d < 7 ?           // increment d; if d is less than or equal to 6:
      h(                //   do a recursive call to h:
        d,              //     using the new value of d
        [0, d].map(b => //     for b = 0 and b = d:
          g(            //       do a first recursive call to g:
            n,          //         leave n unchanged
            B / -~!!b,  //         divide B by 2 if b is not equal to 0
            R / -~!b    //         divide R by 2 if b is equal to 0
          ) & g(        //       do a second recursive call to g:
            n,          //         leave n unchanged
            B + b,      //         add b blue beads
            R + d - b   //         add d - b red beads
          )             //       end of recursive calls to g
        )               //     end of map()
      )                 //   end of recursive call to h
    :                   // else (d > 6):
      s / 24 ** -~n     //   stop recursion and return s / (24 ** (n + 1))
) =>                    // body of g:
  n-- ?                 //   decrement n; if n was not equal to 0:
    h``                 //     invoke h with d = [''] (coerced to 0)
  :                     //   else:
    s +=                //     increment s if:
      ~B <= r * ~R |    //       either (-B-1) <= r*(-R-1), i.e. (B+1)/(R+1) >= r
      ~R <= r * ~B      //       or     (-R-1) <= r*(-B-1), i.e. (R+1)/(B+1) >= r

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

0

ওল্ফ্রাম ভাষা (গণিত) , 133 বাইট

Length@Select[#2/#&@@@(r=Nest[Sort/@Flatten[Table[{{k,0}+#,⌈#/{1,2}⌉},{k,6}]&/@Join[#,Reverse/@#],2]&,{{1,1}},x]),#>=y&]/Length@r


ব্যবহার করে N[F,2], আউটপুট 2 দশমিক অঙ্ক মুদ্রণ করা উচিত কিন্তু টিআইও আরও মুদ্রণ করে ...

এটি অনলাইন চেষ্টা করুন!

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