ব্ল্যাকজ্যাক বুস্ট ক্যালকুলেটর


12

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

খেলুন নীচে চলে যায়, ডিলার আপনাকে একটি কার্ড দেয় deals ডিলার তারপরে তাদের একটি কার্ড স্ব-স্ব করে দেয়, মুখ নীচু করে। ডিলার তারপরে আপনাকে আর একটি কার্ড দেয়। তারপরে অবশেষে, ডিলার তাদের সাথে স্ব-কার্ড করে, মুখোমুখি।

চ্যালেঞ্জ

আপনার চ্যালেঞ্জটি এমন একটি প্রোগ্রাম (বা ফাংশন) লিখুন যা চালানো (বা ডাকা) হয়ে গেলে, আউটপুটগুলি (বা প্রত্যাবর্তন করে) ডিলার পরবর্তী কার্ড আপনাকে দেবে এমন সম্ভাব্যতা আপনাকে আবক্ষু করে দেবে, যার অর্থ আপনার হাতে কার্ডের সংখ্যাসমূহের পরে ডিলার আপনাকে 21 টিরও বেশি কার্ড দেয়।

ইনপুট

খেলতে দৃশ্যমান তিনটি কার্ড। আপনার হাতে আপনার হাতে থাকা দুটি কার্ড এবং আপনি ডিলারদের হাতে দেখতে পাবেন এমন একটি মুখ কার্ড। আপনার অ্যাপ্লিকেশনটির জন্য আপনি যে উপযুক্ত বিন্যাসে এটি উপযুক্ত তা এটি হতে পারে।

একটি ডেকে 52 কার্ড রয়েছে (নীচে প্রতিটি কার্ডের 4 টি)। কার্ডগুলির মূল্য নিম্নরূপ:

Symbol(Case Insensitive)  Name     Value
2                         Two      2
3                         Three    3
4                         Four     4
5                         Five     5
6                         Six      6
7                         Seven    7
8                         Eight    8
9                         Nine     9
T                         Ten      10
J                         Jack     10
Q                         Queen    10
K                         King     10
A or 1                    Ace      1 

ব্ল্যাকজ্যাকে, একটি টেক্কাটি 1 বা 11 হিসাবে গণনা করতে পারে আমাদের চ্যালেঞ্জে কেবল এটি 1 হিসাবে গণনা করুন

আউটপুট

অনুপাত বা শতাংশের ফর্ম্যাটে সম্ভাব্যতা, যা আমরা পরের কার্ডটি আঁকব তা আমাদের কামড় দেবে।

আপনি শতাংশ, ভগ্নাংশ বা ভগ্নাংশের কেবলমাত্র আউটপুট দিতে পারেন।

উদাহরণ

এই উদাহরণস্বরূপ, প্রথম দুটি কার্ড আমাদের হাতে, তৃতীয় কার্ডটি হলেন ডিলারদের দৃশ্যমান কার্ড

 Input          ->       Output

 A 2 Q          ->       0.00%  or  0/49 or 0
 A 2 3          ->       0.00%  or  0/49 or 0
 T T T          ->       91.84% or 45/49 or 91.84 
 T J K          ->       91.84% or 45/49 or 45
 9 7 3          ->       61.22% or 30/49 ...
 9 7 Q          ->       59.18% or 29/49 ...

বিধি

স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়।

এটি , তাই প্রতিটি ভাষার জন্য বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী!


2
আমাদের কি এসকে 1 হিসাবে এবং ফেস কার্ডগুলি 10 এর হিসাবে নেওয়ার অনুমতি রয়েছে, বা এটি কি ইনপুট ফর্ম্যাটটি প্রসারিত করবে?

সুতরাং, আমরা 10 হিসাবে ফেস কার্ড নিতে পারি?
wastl

1
@ আরনাউল্ড এই ধরার জন্য আপনাকে ধন্যবাদ। আমি অনুপাত আপডেট করেছি কিন্তু সম্ভাবনাগুলি নয়। আপনার আউটপুট প্রশ্ন ইয়েস্ট হিসাবে এটি ভাল। প্রতিটি উত্তরের জন্য আপনাকে 49 / যোগ করতে হবে না।
ডেভেলপিং

1
"টিজেকে -> 91.84% বা 45/49 বা 45 বা ইত্যাদি ..." - তাই আমরা কী কেবল সংখ্যাকে আউটপুট করতে পারি? যদি তাই হয় আপনি এটি লেখায় বিবৃতি দিতে পারেন?
জোনাথন অ্যালান

1
@ জোনাথন অ্যালান আপডেট হয়েছে
ডেভেলপিং

উত্তর:


7

জেলি ,  26  24 বাইট

O%48«⁵µ13R«⁵ẋ4œ-+ṖS$>21S

অক্ষরগুলির একটি তালিকা গ্রহণ করে একটি মোনাডিক লিঙ্ক (লোয়ার-কেস বিকল্প বা এর সাথে উপরের ক্ষেত্রে বিকল্প 1ব্যবহার করে A) যা সংখ্যার (49 সংখ্যা ) প্রদান করে [0,49]

এটি অনলাইন চেষ্টা করুন! অথবা পরীক্ষা-স্যুটটি দেখুন

কিভাবে?

নোট করুন যে লোয়ার-কেস সর্বনিম্ন 10 এবং অর্ডিনালগুলির 48 টি দ্বারা মডুলো কার্ড ব্যবহার করে values একই উপরের ক্ষেত্রে জন্য ঝুলিতে T, J, Q, Kএবং 1একটি টেক্কা জন্য, ডানে দেখানো (কিন্তু একটি ঊর্ধ্ব-কেস হিসেবে Aকাজ করে না):

     card:   a   2   3   4   5   6   7   8   9   t   j   q   k   |   1   T   J   Q   K
  ordinal:  97  50  51  52  53  54  55  56  57 116 106 113 107   |  49  84  74  81  75
   mod 48:   1   2   3   4   5   6   7   8   9  20  10  17  11   |   1  36  26  33  27
min(_,10):   1   2   3   4   5   6   7   8   9  10  10  10  10   |   1  10  10  10  10

O%48«⁵µ13R«⁵ẋ4œ-+ṖS$>21S - Link: list of characters   e.g. "q3a"
O                        - ordinals (of the input list)    [113, 51, 97]
 %48                     - modulo by 48                    [17,3,1]
     ⁵                   - ten
    «                    - minimum                         [10,3,1]
      µ                  - start a new monadic chain
       13R               - range of 13                     [1,2,3,4,5,6,7,8,9,10,11,12,13]
           ⁵             - ten                             10
          «              - minimum                         [1,2,3,4,5,6,7,8,9,10,10,10,10]
            ẋ4           - repeat four times               [1,2,3,4,5,6,7,8,9,10,10,10,10,1,2,3,4,5,6,7,8,9,10,10,10,10,1,2,3,4,5,6,7,8,9,10,10,10,10,1,2,3,4,5,6,7,8,9,10,10,10,10]
              œ-         - multi-set difference            [1,2,3,4,5,6,7,8,9,10,10,10,10,1,2,3,4,5,6,7,8,9,10,10,10,10,1,2,3,4,5,6,7,8,9,10,10,10,10  ,2  ,4,5,6,7,8,9   ,10,10,10]
                   $     - last two links as a monad:
                 Ṗ       -   pop                           [10,3]
                  S      -   sum                           13
                +        - add (vectorises)                [14,15,16,17,18,19,20,21,22,23,23,23,23,14,15,16,17,18,19,20,21,22,23,23,23,23,14,15,16,17,18,19,20,21,22,23,23,23,23,15,17,18,19,20,21,22,23,23,23]
                    >21  - greater than 21?                [0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1]
                       S - sum                             19

ফ্ল্যাট-আউট লোভ
প্রবণতা মডেল

যদি আমি Mod-48 ব্যবহার করে কোনও উত্তর না দিয়ে শেষ করি তবে মহাকাবিক পর্যবেক্ষণের জন্য আমি আপনাকে 200 বকেয়া দিচ্ছি।
ম্যাজিক অক্টোপাস উরন

4

জাভাস্ক্রিপ্ট (ES6), 73 62 বাইট

এসির জন্য 3 টি অক্ষরের অ্যারে হিসাবে ইনপুট নেয় 1X / 49 টি ফাঁক হওয়ার সম্ভাবনা প্রতিনিধিত্ব করে পূর্ণসংখ্য এক্স প্রদান করে ।

a=>([b,c]=a.map(v=>v*4||40)).map(n=>b-=n+b>52,b+=c-32)|b>12&&b

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

ক্লান্তি পরীক্ষা

গল্ফযুক্ত সূত্রটি খুব স্বজ্ঞাত নয়। সুতরাং, এর ধারাবাহিকতা প্রমাণ করার সবচেয়ে সহজ উপায়টি সম্ভবত একটি বেসিক অব্যক্ত বাস্তবায়ন দ্বারা সরবরাহিত সরবরাহগুলির তুলনায় সমস্ত সম্ভাব্য আউটপুটগুলির তুলনা করা:

g = a => {
  deck = [...'123456789TJQK'.repeat(4)];
  a.forEach(card => deck.splice(deck.indexOf(card), 1));

  return deck.filter(card =>
    (+a[0] || 10) +
    (+a[1] || 10) +
    (+card || 10) > 21
  ).length;
}

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


.map(n=>b-=n+b>52,b+=c-32)সাধারণভাবে কি করে ? আমি জাতীয় এর সঙ্গে খুব পরিচিত নই .mapএবং বুঝতে কি কমা এখানে আছে চেষ্টা .. প্রাথমিকভাবে আমি যদিও এটা একটি সংক্ষিপ্ত এর বৈকল্পিক এর .map(n=>{b-=n+b>52;b+=c-32})বা কিছু .. আমি জানি a=>([b,c]=a.map(v=>v*4||40))ধর্মান্তরিত ['1','2','Q']করার [ 4, 8, 40 ], এবং তারপর এটি এই তিনটি মান উপর loops, যেখানে bপ্রথম মান , এবং cদ্বিতীয়টি (যদি আমি সঠিকভাবে বুঝতে পারি)। তবে আমি বনাম সম্পর্কে কিছুটা বিভ্রান্ত হয়েছি .map(n=>b+=(n+b<53)-1,b+=c-32)(যদি প্রথমটিকে b-=পরিবর্তিত করা হয় b+=) বনাম .map(n=>b+=(n+b<53)-33+c)..
কেভিন ক্রুইজসেন

হুম, অথবা এটি প্রকৃতপক্ষে bপ্রথম মান, = c= দ্বিতীয় মান [4, 8, 40], এবং b-=n+b>52মডিফাই cভাল যদি যেমন দ্বিতীয় পুনরাবৃত্তির কি? কোন ক্ষেত্রে উভয় b-=এবং b+=একক b+=(বা b-=) এর সাথে একত্রিত হওয়ার কারণে এটি কাজ করবে না?
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসেন b+=c-32একটি (অব্যবহৃত) প্যারামিটার map()এবং প্রথম পুনরাবৃত্তির আগে একবারেই মূল্যায়ন করা হয়। n=>b-=n+b>52কলব্যাক ফাংশন (এর 1 ম প্যারামিটার map()) এবং প্রতিটি পুনরাবৃত্তির উপর ডাকা হয়। প্রযুক্তিগতভাবে, map()২ য় প্যারামিটার গ্রহণ করে (যাকে এআরজি বলা হয় ) তবে এটি এখানে অপ্রাসঙ্গিক: আমরা কেবল লুপটি শুরুর আগে কোডটির এই অংশটি কার্যকর করতে চাই।
আর্নল্ড

1
@ কেভিন ক্রুজসেন এখানে কি চলছে তা দেখানোর জন্য কিছু কোড রয়েছে।
আর্নল্ড

আহ ঠিক আছে, এখন এটি সব বোঝার আছে। ধন্যবাদ!
কেভিন ক্রুইজসেন

2

পাইথ, 35 বাইট

Jm?}dGTsdQclf>T-21sPJ.-*4+ST*3]TJ49

অক্ষরের তালিকার হিসাবে (বা স্ট্রিং হিসাবে) ইনপুট নেয়।
এখানে চেষ্টা করুন

ব্যাখ্যা

Jm?}dGTsdQclf>T-21sPJ.-*4+ST*3]TJ49
Jm?}dGTsdQ                            Convert each input to the appropriate number.
                     .-*4+ST*3]TJ     Remove each from the deck.
           lf>T-21sPJ                 Count how many remaining cards bust.
          c                      49   Get the probability.


1

পাইথন 2 , 97 96 বাইট

def f(s):C=[min(int(c,36),10)for c in s];D=C[0]+C[1];return(4*D-35+sum(v+D<22for v in C))*(D>11)

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

ইনস হিসাবে '1' ব্যবহৃত হওয়ার সাথে ইনপুট হিসাবে একটি 3-অক্ষরের স্ট্রিং নেয়। অঙ্কটি ফেরত দেয়।


1

জাভা 8, 109 বাইট

a->{int r=3;for(;r-->0;a[r]=a[r]<59?a[r]*4-192:40);r=a[0]+a[1]-32;for(int v:a)r-=v+r>52?1:0;return r>12?r:0;}

@ আর্নল্ডের জাভাস্ক্রিপ্ট (ES6) এর উত্তর পোর্ট ।
তিনটি মান সহ অক্ষর-অ্যারে হিসাবে ইনপুট, এসেস এ্যাস '1'; আউটপুট সম্ভাব্যতা pমধ্যে p/49

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

ব্যাখ্যা:

a->{                   // Method with integer-array as parameter and integer return-type
  int r=3;for(;r-->0;  //  Loop over the array
    a[r]=a[r]<59?      //   If the current item is a digit:
          a[r]*4-192   //    Multiply it by 4
         :             //   Else:
          40);         //    Change it to 40
  r=a[0]+a[1]-32;      //  Set `r` to the first value, plus the second value, minus 32
  for(int v:a)         //  Loop over the now modified array again
    r-=v+r>52?         //   If the current value plus `r` is larger than 52
        1              //    Decrease the result-integer by 1
       :0;             //   Else: Leave the result-integer the same
  return r>12?         //  If the result-integer is larger than 12
          r            //   Return the result-integer
         :             //  Else:
          0;}          //   Return 0


1

05 এ বি 1 ই , 23 22 21 বাইট

AST:4-D¨OÐ4@*4*Š+T@O-

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

AST:                   # replace all letters in the input with 10
    4-                 # subtract 4 from each card value
      D                # duplicate
       ¨               # drop the last element
        O              # sum (hand value of the player - 8)
         Ð             # triplicate that
          4@*          # set to 0 if it's less than 4
             4*        # multiply by 4
               Š       # 3-way swap
                +      # add the player's hand value to each card value
                 T@O   # count how many are >= 10
                    -  # subtract
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.