কার্ডের খেলায় হাতের নিদর্শন


20

কার্ডগুলির একটি ডেক হ'ল Sস্যুট এবং Rর‌্যাঙ্কের কার্তেসিয়ান পণ্য । অনেকগুলি, যদিও সমস্ত না, কার্ড গেমগুলি ব্যবহার করে S=4এবং R∊{6,8,13}Hডেক থেকে কার্ডের এক হাত ডিল করা হয়। এর বিতরণ , ওরফে "হাতের প্যাটার্ন", এমন একটি অ্যারে যা স্যুট অর্ডার উপেক্ষা করে প্রতিটি স্যুট থেকে আপনি কতগুলি কার্ড পেয়েছেন তা বর্ণনা করে (সুতরাং এটি কোনও মাল্টি-সেটের মতো)। একটি বিতরণ দেওয়া Dপরিতৃপ্ত len(D)=S, 1≤sum(D)=H≤S×R, 0≤D[i]≤R, D[i]≥D[i+1], এটা ঘটার সম্ভাবনা পাবেন।

ইনপুট: একটি পূর্ণসংখ্যা Rএবং একটি অ্যারে D

আউটপুট: দশমিক চিহ্নের পরে কমপক্ষে 5 টি সংখ্যা সহ সম্ভাবনা; পিছনের শূন্যগুলি এড়িয়ে যেতে পারে; বৈজ্ঞানিক স্বরলিপি ঠিক আছে।

লুফোলস নিষিদ্ধ। সবচেয়ে কম জয়।

পরীক্ষা:

R    D               probability
13   4 4 3 2     ->  0.2155117564516334148528314355068773
13   5 3 3 2     ->  0.1551684646451760586940386335649517
13   9 3 1 0     ->  0.0001004716813294328274372174524508
13   13 0 0 0    ->  0.0000000000062990780897964308603403
8    3 2 2 1     ->  0.4007096203759162602321667950144035
8    4 2 1 1     ->  0.1431105787056843786543452839337155
8    2 2 1 0     ->  0.3737486095661846496106785317018910
8    3 1 1 0     ->  0.2135706340378197997775305895439377
15   4 4 3 2 1   ->  0.1428926269185580521441708109954798
10   3 0 0       ->  0.0886699507389162561576354679802956
10   2 1 0       ->  0.6650246305418719211822660098522167
10   1 1 1       ->  0.2463054187192118226600985221674877

উইকিপিডিয়ায় ব্রিজ হ্যান্ড প্যাটার্নগুলিও দেখুন ।

সম্পাদনা: অপ্রয়োজনীয় সীমাবদ্ধতা বাদ দিয়েছে H≤R

সম্পাদনা: সীমাবদ্ধতা যোগ করা হয়েছে H≥1


আমরা কি ধরে নিতে পারি যে ডি সাজানো হয়েছে?
orlp

1
@orip হ্যাঁ, যে আমি [আমি] ≥D [আমি + 1] ডি দ্বারা কি বোঝানো
ngn

আমার জানা কার্ডগুলি 0 থেকে নয় 1 থেকে শুরু হয় ...
রোজলুপুর

@ রোসলুপি আপনার অর্থ কি?
এনএনজি

আমি নিশ্চিত যে আমি কিছু বুঝতে পারি নি ... কার্ডগুলি যদি 1,2 নম্বর থেকে প্রতিনিধিত্ব করা হয়, ..., 13 সমস্ত * 4; সুতরাং উদাহরণস্বরূপ "13 0 0 0" এর অর্থ কী? 0 মানে কার্ড 0?
রোজলুপ

উত্তর:


9

এপিএল (ডায়ালগ ইউনিকোড) , 30 টি অক্ষর

×/!⍨,z,1÷((z←!∘≢⊢)⌸⊢),×∘≢!⍨1⊥⊢

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

@ অরল্পের সূত্র ব্যবহার করে ।


দুর্দান্ত, ভাল হয়েছে! "+100" বোতামটি বলছে যে আমি অনুগ্রহ করে পুরস্কার দেওয়ার আগে আমাকে আরও 10 ঘন্টা অপেক্ষা করতে হবে। এর পরে আমি +200 এর জন্য আরও একটি সেট আপ করব।
ngn

হ্যাঁ আমি জয়! ধন্যবাদ @ জয়প্রিচ
ফ্রাউনফ্রগ

@ ফ্রাউনফ্রেগ জেদের সাথে তুলনা করে ডায়ালগ এপিএলকে আপনি কীভাবে পছন্দ করেন?
জোনাহ

8

পাইথন 3, 134 বাইট

b=lambda n,k:k<1or n*b(n-1,k-1)/k
f=lambda R,D,i=1,s=1,t=0:D and b(R,D[0])*i/s*f(R,D[1:],i+1,(D[0]in D[1:])*s+1,t+D[0])or 1/b(~-i*R,t)

সূত্র হ'ল binom(R, d)প্রতিটি উপাদানগুলির dজন্য D, সময়ের মধ্যে , প্রতিটি গ্রুপের (যেমন গ্রুপিং রয়েছে ) এর প্রতিটি factorial(len(D))বিভাগের পণ্য দ্বারা বিভাজিত, অবশেষে বিভক্ত ।factorial(len(S))SD[4, 4, 3, 2][[4, 4], [3], [2]]binom(len(D) * R, sum(D))

অথবা গণিত স্বরলিপি অভিমানী মি এর multiplicities রয়েছে এন অনন্য উপাদান ডি :

|ডি|!মি1!মি2!মিএন!(|ডি|আরΣডি)-1Πডি(আর)


2
একটি সংক্ষিপ্ত মুহূর্ত জন্য আপনার তৈরি করা আমাকে বিশ্বাস PPCG এখন লেটেক্ সমর্থন :)
ngn

দুটি ফাংশনটি অন্তর্ভুক্ত করে আমি পেয়েছি 136 তবে সম্ভবত এটি আরও গল্ফ করা যেতে পারে (এর i=0অর্থ বোঝায় b()এবং ব্যবহার R,Dকরে n,k)।
জোনাথন অ্যালান

7

আর , 90 85 83 বাইট

function(R,D,l=sum(D|1),K=choose)prod(K(R,D),1:l,1/gamma(1+table(D)))/K(R*l,sum(D))

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

আমি orlp হিসাবে একই জিনিসটি পর্যবেক্ষণ করেছি , তবে আমি একটি দুর্দান্ত ভাষা বেছে নিয়েছি যার সাথে কম্বিনেটরটিকস অন্তর্নির্মিত রয়েছে।

ব্যাখ্যা:

function(R,D,             # next are optional arguments
 l=sum(D|1),              # alias for length of D, aka S
 K=choose)                # alias for choose
  prod(                   # take the product of:
    K(R,D),               # "choose" is vectorized over R and D
    1:l,                  # S!
    1/gamma(1+            # gamma(n+1) = n! for integer n
     table(D))            # multiplicities of unique elements of D
  ) /                     # divide by
  K(R*l, sum(D))          # R*S choose H
                          # return last computation (which is all the computation)


আপনি এটির সাহায্যে আরও কিছু বাঁচাতে পারেন: "<"=choose(ফাংশনের বাইরে) এবং সম্ভবত আজ সকালে আমি পোস্ট করা মন্তব্যে এনএনগির উত্তরের উপর নির্ভর করে সিক ব্যবহার করুন।
জয়সি

6

জেলি ,  22  20 বাইট

-2 নতুন কুইক ʋ, এবং একটি নতুন monadic পরমাণু ব্যবহার করে বাইট

ĠẈ!;L×c⁸S¤ʋ
L!;c@֍P

একটি ডায়াডিক লিঙ্ক, ডিল-বিতরণ, বাম দিকে এবং ডানদিকে র‌্যাঙ্কের সংখ্যা, আর, গ্রহণ করে যা ঘটনার সম্ভাবনা ফেরায়।

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

কিভাবে?

ĠẈ!;L×c⁸S¤ʋ - Link 1, denomParts: list, distribution (D); number, ranks (R)
                                                                 e.g. [3,3,3,2,2]; 8
Ġ           - group indices of D by their values                      [[4,5],[1,2,3]]
 Ẉ          - length of each group                                    [2,3]
  !         - factorial (vectorises)                                  [2,6]
          ʋ - last four links as a dyad
            - ... i.e. totalWaysToDeal = f(list, distribution (D); number, ranks (R)):
    L       - length of D                                             5
     ×      - multiply by R = total number of cards                   40
         ¤  - nilad followed by link(s) as a nilad:
       ⁸    -   chain's left argument, D                              [3,3,3,2,2]
        S   -   sum = total cards dealt                               13
      c     - binomial                                        40C13 = 12033222880
   ;        - concatenate                                             [2,6,12033222880]                                                  

L!;c@֍P - Main link: list, distribution (D); number, ranks (R)
         -                                                  e.g. [3,3,3,2,2]; 8
L        - length of D = number of suits                         5
 !       - factorial                                             120
   c@    - R binomial (vectorised across) D     (8C3=56;8C2=28)  [56,56,56,28,28]
  ;      - concatenate                                           [120,56,56,56,28,28]
      ç  - call the last link (1) as a dyad = denomParts(D,R)    [2,6,12033222880]
     ÷   - divide (vectorises)                                   [120/2,56/6,56/12033222880,56,28,28]
       P - product                                               0.11441900924883391


3

পাইথ , 32 বাইট

cc*.!lQ*F.cLvzQ*F.!hMr8Q.c*vzlQs

এখানে চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন!

এটি কিভাবে কাজ করে?

cc *।! lQ * F.cLvzQ * F।! hMr8Q.c * vzlQs ~ সম্পূর্ণ প্রোগ্রাম। ডি = তালিকা, আর = সংখ্যা।

   । ~ এর কল্পকাহিনী ...
     lQ D. D এর দৈর্ঘ্য
  * By এর দ্বারা গুণিত ...
       * F of এর উপাদানগুলির পণ্য ...
         .c between এর মধ্যে এনসিআর ...
           এলকিউ D ডি এর প্রতিটি উপাদান এবং ...
            vz ~ R.
 সি by দ্বারা বিভক্ত ...
               * F of এর উপাদানগুলির পণ্য ...
                 । Each প্রত্যেকের বিবরণী ...
                   এইচএম ~ প্রধান এতে সংলগ্ন উপাদানগুলির গণনা ...
                     r8Q D. ডি চালানোর দৈর্ঘ্য এনকোডিং
সি by দ্বারা বিভক্ত ...
                        .c between এর মধ্যে এনসিআর ...
                          * Of এর পণ্য ...
                           vz ~ R, এবং ...
                             lQ D. D এর দৈর্ঘ্য
                               s ~ এবং ডি এর যোগফল
                                 সুস্পষ্টভাবে আউটপুট।

3

এপিএল (ডায়ালগ) , 42 বাইট

{×/(!≢⍵),(⍵!⍺),÷((+/⍵)!⍺×≢⍵),!≢¨⍵⊂⍨1,2≠/⍵}

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

এখনও গল্ফিং।


চ্যালেঞ্জ: 30 বাইট
এনএনজি

@ জিএন চ্যালেঞ্জ গৃহীত
উরিল

দুঃখিত, এটি আসলে 30 টি অক্ষর । তথ্য দেওয়ার ঝুঁকি নিয়ে: আমার একটি অক্ষর ক্লাসিক অক্ষরে নেই, আমি প্রথমে বুঝতে পারি নি।
এনএনজি

@ngn আপনি 30 অ্যাড করতে কেবল অ্যাডামের চরিত্র সেটটি ব্যবহার করতে পারবেন না ?
প্রবি

@Probie হাঁ, যে কি আমি খয়রাত বর্ণনাতে "SBCS" দ্বারা বোঝানো
ngn

2

ক্লোজার, 153 বাইট

#(apply +(for[_(range 1e06):when(=(remove #{0}%)(reverse(sort(vals(frequencies(take(apply + %)(shuffle(for[i(range %2)j(range(count %))]j))))))))]1e-06))

আরও নির্ভুলতা পেতে কেবল একটি ব্রুট-ফোর্স সিমুলেশন, সেই অনুসারে পুনরাবৃত্তি গণনা এবং শেষে "1 / N" মান বাড়িয়ে তোলে। প্রথম যুক্তি গণনা এবং 2 য় আর্গুমেন্ট হ'ল স্যুট প্রতি ডেকের কার্ডের সংখ্যা।


2

জে, 57 বাইট

](#@]%~[:+/[-:"1[:\:~@(#/.~)"1+/@[{."1])i.@!@(*+/)A.(##\)

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

এটি ও (গল্ফ) এ চলে এবং টেস্টের অনেকগুলি ক্ষেত্রেই এটি দম বন্ধ করে দেবে (যদিও তাত্ত্বিকভাবে এটি কাজ করে), এটি যদি গল্ফিয়ার হয় তবে তা ঠিক ছিল। তবে আমি এটিকে ছাঁটাইতে আটকে আছি, বিশেষত পুনরাবৃত্তিগুলি এড়িয়ে চলতে "1। যদি কেউ সহায়তা করতে চান তবে এখানে পার্স করা সংস্করণটি দেওয়া আছে ...

মূল কাঁটাটার ডান দিকটি হ'ল ডেকের সমস্ত সম্ভাব্য লেনদেন এবং মূল কাঁটার বাম দিকটি কেবল আসল ডানদিকে থাকে, অর্থাত্ স্যুট মাস্কের সাথে আমরা মিল করছি।

প্রতিটি "শিফলেড" ডেকের ভিতরে, আমরা প্রথম হাতের উপাদানগুলি নিয়ে যাই , তারপরে কী ব্যবহার করে তাদের গোষ্ঠী করে /.ফলাফলটি বাছাই করে দেখি যে এটি স্যুট মাস্কটি প্রশ্নের সাথে মেলে কিনা। আমরা মেলে এমন মোট সংখ্যা যুক্ত করি এবং এটি সমস্ত সম্ভাব্য ডেকের দৈর্ঘ্যে ভাগ করি।

┌─┬─────────────────────────────────────────────────────────────────────────────────────────────────┬─────────────────────────────────────┐
│]│┌───────┬─────┬─────────────────────────────────────────────────────────────────────────────────┐│┌──────────────────────┬──┬─────────┐│
│ ││┌─┬─┬─┐│┌─┬─┐│┌──┬─────┬──────────────────────────────────────────────────────────────────────┐│││┌────────┬─┬─────────┐│A.│┌─┬─────┐││
│ │││#│@│]│││%│~│││[:│┌─┬─┐│┌─┬────────┬─────────────────────────────────────────────────────────┐│││││┌──┬─┬─┐│@│┌─┬─────┐││  ││#│┌─┬─┐│││
│ ││└─┴─┴─┘│└─┴─┘││  ││+│/│││[│┌──┬─┬─┐│┌──┬───────────────────────────┬────────────────────────┐│││││││i.│@│!││ ││*│┌─┬─┐│││  ││ ││#│\││││
│ ││       │     ││  │└─┴─┘││ ││-:│"│1│││[:│┌─────────────────────┬─┬─┐│┌───────────┬────────┬─┐│││││││└──┴─┴─┘│ ││ ││+│/││││  ││ │└─┴─┘│││
│ ││       │     ││  │     ││ │└──┴─┴─┘││  ││┌──────┬─┬──────────┐│"│1│││┌─────┬─┬─┐│┌──┬─┬─┐│]││││││││        │ ││ │└─┴─┘│││  │└─┴─────┘││
│ ││       │     ││  │     ││ │        ││  │││┌──┬─┐│@│┌──────┬─┐││ │ ││││┌─┬─┐│@│[│││{.│"│1││ ││││││││        │ │└─┴─────┘││  │         ││
│ ││       │     ││  │     ││ │        ││  ││││\:│~││ ││┌─┬──┐│~│││ │ │││││+│/││ │ ││└──┴─┴─┘│ │││││││└────────┴─┴─────────┘│  │         ││
│ ││       │     ││  │     ││ │        ││  │││└──┴─┘│ │││#│/.││ │││ │ ││││└─┴─┘│ │ ││        │ ││││││└──────────────────────┴──┴─────────┘│
│ ││       │     ││  │     ││ │        ││  │││      │ ││└─┴──┘│ │││ │ │││└─────┴─┴─┘│        │ ││││││                                     │
│ ││       │     ││  │     ││ │        ││  │││      │ │└──────┴─┘││ │ ││└───────────┴────────┴─┘│││││                                     │
│ ││       │     ││  │     ││ │        ││  ││└──────┴─┴──────────┘│ │ ││                        │││││                                     │
│ ││       │     ││  │     ││ │        ││  │└─────────────────────┴─┴─┘│                        │││││                                     │
│ ││       │     ││  │     ││ │        │└──┴───────────────────────────┴────────────────────────┘││││                                     │
│ ││       │     ││  │     │└─┴────────┴─────────────────────────────────────────────────────────┘│││                                     │
│ ││       │     │└──┴─────┴──────────────────────────────────────────────────────────────────────┘││                                     │
│ │└───────┴─────┴─────────────────────────────────────────────────────────────────────────────────┘│                                     │
└─┴─────────────────────────────────────────────────────────────────────────────────────────────────┴─────────────────────────────────────┘

1
অরল্পের সূত্রটি এপিএলের হয়ে ৪২ রান করেছে, সম্ভবত এটি জে এর চেয়ে কম 58 স্কোর করবে?
উরিল

1
আমি এখন পর্যন্ত 45 f=:(([:!#)%[:*/[:!#/.~)@]**/@(]![)%+/@]![*#@]
পেয়েছি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.