কে একটি গেম অফ বার ডাইস জিতেছে?


24

চ্যালেঞ্জ

বার ডাইস একটি সরল খেলা যা একটি পাশের সাথে ডাইস (তাই নাম) played আপনি ৫ টি ছয়তরফা পাশা রোল করুন এবং সেরা হাতটি তৈরি করার চেষ্টা করবেন।

স্কোরিং একই সংখ্যার সাথে সর্বাধিক সংখ্যক ডাইস সংগ্রহের উপর ভিত্তি করে। বৈধ হাত হতে প্রতিটি হাতকে কমপক্ষে একটি একক "এস" বা একটি অবশ্যই অন্তর্ভুক্ত করতে হবে; টেক্কা "ওয়াইল্ডস" হিসাবে কাজ করে এবং অন্য কোনও অঙ্কের সাথে জুড়ি দেওয়া যায়। একজন খেলোয়াড়ের হাতের শক্তি প্রথমে অঙ্কগুলির সংখ্যার উপর নির্ভর করে এবং তারপরে সেই অঙ্কগুলির মানের উপর নির্ভর করে। উদাহরণস্বরূপ, চার 3 টি সহ একটি হাত (ওয়াইল্ডস গণনা করা) 3 5 এর হাতের চেয়ে ভাল তবে পাঁচ 5 টির হাতের চেয়ে ভাল নয়। উইকিপিডিয়া নিবন্ধ
থেকে নেওয়া

এর অর্থ সর্বোচ্চ র‌্যাঙ্কড হাতটি পুরোপুরি 6 এবং 1 এর তৈরি এবং সর্বনিম্ন র‌্যাঙ্কড কোনও হাত ছাড়া 1।

আপনার চ্যালেঞ্জটি হ'ল দুই হাত নেওয়া এবং কোন খেলোয়াড় জিতেছে বা তারা বাঁধা থাকলে তা ফিরিয়ে দেওয়া।

ইনপুট

1 থেকে 6 অবধি 5 টি সংখ্যার দুটি অপরিবর্তিত তালিকা Each প্রতিটি তালিকা খেলোয়াড়ের হাতকে উপস্থাপন করে। ইনপুট ফর্ম্যাটটি নমনীয়।

আউটপুট

যে কোনও তিনটি স্বতন্ত্র তবে ধারাবাহিক, স্থির মান (পঞ্জিকা অনুমোদিত নয়) প্লেয়ার 1 বা প্লেয়ার 2 জিতেছে কিনা বা এটি টাই থাকলে তা বোঝায়। আপনি কোনটির জন্য কোন মানটি ব্যবহার করছেন তা দয়া করে আপনার উত্তরে উল্লেখ করুন। উদাহরণস্বরূপ, -1পি 1 জিতলে আপনি ফিরে আসতে পারেন, 0যদি এটি টাই হয়, এবং 1পি 2 জিতলে।

বিধি

  • ইনপুট সর্বদা বৈধ থাকবে
  • বিজয়ী নির্ধারণের জন্য প্রতিটি হাতের সেরা সম্ভাব্য স্কোর ব্যবহার করা হয়। টাই-ব্রেকার নেই। উদাহরণস্বরূপ, 3 এবং 2 এর টাই-ব্রেকার হিসাবে ব্যবহার করার পরিবর্তে [1,4,4,3,3]টাই করবে [1,4,4,2,2]
  • প্রতিবার আউটপুট 3 টি নির্বাচিত মানগুলির মধ্যে একটি হতে হবে। কেবলমাত্র সমস্ত নেতিবাচক সংখ্যাগুলিতে ম্যাপিংয়ের P1 Winsঅনুমতি নেই এবং এটি অবশ্যই স্বাভাবিক করা উচিত।
  • অবৈধ হাতগুলি, অর্থাত্ 1 নম্বর নয়, সমস্ত কার্যকর হাতের কাছে হেরে যায় তবে অন্য সমস্ত অবৈধ হাতের সাথে বেঁধে দেয়। যেমন, [2,2,2,2,2]টাই [3,3,3,3,3]
  • [1,1,1,1,1]র‌্যাঙ্কিংয়ের উদ্দেশ্যে 6 এর বৈধ সেট হিসাবে গণনাগুলির একটি হাত ।
  • এটি তাই সংক্ষিপ্ততম বাইট গণনা জয়।

উদাহরণ

#You guys are pretty good at finding edge-cases that break things. Good job!
Input:  [2,1,5,6,6], [6,2,6,6,6]
Output: P1 Wins

Input:  [2,4,5,6,6], [6,2,6,6,6]
Output: Tie

Input:  [1,2,3,4,5], [5,4,3,2,1]
Output: Tie

Input:  [1,5,5,3,2], [5,4,1,6,6]
Output: P2 Wins

Input:  [3,2,2,2,1], [4,1,3,6,6]
Output: P1 Wins

Input:  [1,1,1,1,1], [6,1,1,6,6]
Output: Tie

Input:  [1,3,3,4,4], [1,2,2,5,5]
Output: P2 Wins

Input:  [1,3,3,5,5], [1,3,3,2,2]
Output: P1 Wins

Input:  [1,3,3,3,4], [1,1,3,3,3]
Output: P2 Wins

Input:  [2,2,2,6,1], [5,3,3,1,2]
Output: P1 Wins

Input:  [5,5,5,1,5], [1,1,1,1,1]
Output: P2 Wins

Input:  [1,1,1,1,1], [1,1,5,1,1]
Output: P1 Wins

উত্তর:


10

জেলি , 17 14 বাইট

ċⱮ6Ḣ©+$®aĖUṀ)M

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

একটি মোনাডিক লিঙ্ক যা দুটি তালিকার তালিকাটিকে তার যুক্তি হিসাবে গ্রহণ করে এবং [1]প্লেয়ার 1 জয়, [2]প্লেয়ার 2 জয়ের [1, 2]জন্য এবং টাইয়ের জন্য প্রত্যাবর্তন করে । টিআইও লিঙ্কটি প্রদর্শনের জন্য এটিকে আরও সুন্দর করে দেখায়।

3 জন বাইট সংরক্ষণের জন্য @ জোনাথন অ্যালানকে ধন্যবাদ!

ব্যাখ্যা

            )   | For each input list (e.g. of one list 1,1,3,3,4)
ċⱮ6             | - Count each of 1..6 (e.g. 2,0,2,1,0,0)
      $         | - Following as a monad:
   Ḣ            |   - Head (number of 1s)
    ©︎           |   - Copy to register
     +          |   - Add (e.g. 2,4,3,0,0)
       ®a       | - Register logical and with this
         Ė      | - Enumerate (e.g. [1,2],[2,4],[3,3],[4,0],[5,0])
          U     | - Reverse each (e.g. [2,1],[4,2],[3,3],[0,4],[0,5])
            Ṁ   | - Max (e.g. 4,2)
              M | Index/indices of maximal score

1
আপনি বিজয়ীর (গুলি) এর তালিকাটি IṠসাথে Mআউটপুট দিতে পারেন।
জোনাথন অ্যালান

@ জোনাথন অ্যালান ভালো পয়েন্ট! ধন্যবাদ
নিক কেনেডি

1
রেজিস্টার ব্যবহার করে 15 বাইট
জোনাথন অ্যালান

1
আমি মনে করি তালিকাটি পূর্ণসংখ্যার মতো একই অনুসারে বাছাই করায় এখন এগুলি অতিরিক্তও হতে পারে।
জোনাথন অ্যালান

1
এটি একটি সুন্দর পদ্ধতির। সাবাশ.
জোনাহ

9

আর , 115 96 বাইট

-6 বাইট জিউসেপ্পিকে ধন্যবাদ

-6 বাইটস অ্যারন হেইম্যানকে ধন্যবাদ।

-2 বাইটস তার জাভাস্ক্রিপ্ট উত্তরে আউটপুট ফর্ম্যাট অনুসরণ করে আরনল্ডকে ধন্যবাদ জানায় ।

function(i,j)(f(i)-f(j))/0
f=function(x,s=tabulate(x,6),l=s[1]+s[-1]*!!s[1])max(l)*6+order(l)[5]

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

রিটার্নস Infহল P1 জন্য, NaNটাই, জন্য -InfP2 এর জন্য।

সহায়ক ফাংশন ব্যবহার করে fযা প্রতিটি হাতের জন্য একটি স্কোর গণনা করে। স্কোরটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে: আসুন dসেই অঙ্কটি হোন যা সর্বাধিক পুনরাবৃত্তি হয় এবং nএটির পুনরাবৃত্তি কতবার হয়। 6*n+dকমপক্ষে একটি টেক্কা থাকলে স্কোরটি হয় এবং 0যদি কোনও টেক্কা না থাকে। আমাদের তখন সর্বাধিক স্কোর সহ খেলোয়াড়ের সন্ধান করা উচিত।

Ungolfed:

f = function(x) {
  s = tabulate(x, 6)         # number of occurrences of each integer
  l = s[1] + s[-1] * !!s[1]  # add the number of wild aces to all values; set to 0 if s[1] == 0
  max(l) * 6 +               # highest number of repetitions (apart from aces)
    order(l)[5]              # most repeated integer (take largest in case of tie)
}
function(i, j){
  sign(f(i) - f(j))
}

আপনি একটি 96 বাইট সমাধান পেতে order(l)[5]পরিবর্তে ব্যবহার করতে পারেন max.col(t(l),"l"): এটি অনলাইনে চেষ্টা করুন!
অ্যারন হেইমন

@ অ্যারোন হাইম্যান খুব সুন্দর, ধন্যবাদ!
রবিন রাইডার

6

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

হিসাবে ইনপুট লাগে (a)(b)। রিটার্নস +Infinityহল P1 জন্য, -InfinityP2 এর জন্য অথবা NaNটাই জন্য।

a=>b=>((g=(x,m)=>x>6?m*/1/.test(a):g(-~x,a.map(k=>n+=k<2|k==x,n=x/6)|m>n?m:n))()-g(a=b))/0

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

মন্তব্য

a => b => (                 // a[] = dice of P1; b[] = dice of P2
  ( g = (                   // g is a recursive function taking:
      x,                    //   x = dice value to test; initially, it is either undefined
                            //       or set to a non-numeric value
      m                     //   m = maximum score so far, initially undefined
    ) =>                    //
      x > 6 ?               // if x is greater than 6:
        m * /1/.test(a)     //   return m, or 0 if a[] does not contain any 1 
      :                     // else:
        g(                  //   do a recursive call:
          -~x,              //     increment x (or set it to 1 if it's non-numeric)
          a.map(k =>        //     for each dice value k in a[]:
            n +=            //       add 1 to n if:
              k < 2 |       //         k is equal to 1
              k == x,       //         or k is equal to x
            n = x / 6       //       start with n = x / 6
          ) |               //     end of map()
          m > n ?           //     if m is defined and greater than n:
            m               //       pass m unchanged
          :                 //     else:
            n               //       update m to n
        )                   //   end of recursive call
  )()                       // first call to g, using a[]
  - g(a = b)                // subtract the result of a 2nd call, using b[]
) / 0                       // divide by 0 to force one of the 3 consistent output values

6

05 এ বি 1 ই , 16 15 বাইট

-1 বাইট জোনাথন অ্যালানকে ধন্যবাদ

εWΘ*6L¢ć+°ƶà}ZQ

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

পি 1 জয়ের জন্য [1, 0], টাইগুলির জন্য [1, 1], পি 2 জয়ের জন্য [0, 1] ফিরে আসে।

2-টিউপল (ডাইস কাউন্ট, ডাইস ভ্যালু) এর উপর ডিক্সিকোগ্রাফিক অর্ডার ব্যবহার না করে এই স্কোরকে 10 ** ডাইস কাউন্ট * ডাইস ভ্যালু হিসাবে গণনা করে। হাতছাড়া 1 স্কোর 5।

ε           }           # map each hand to its computed score
 WΘ                     # minimum == 1 (1 if the hand contains a 1, 0 otherwise)
   *                    # multiply (sets hands without 1 to [0, 0, 0, 0, 0])
    6L                  # range [1..6]
      ¢                 # count occurences of each in the hand
       ć                # head extract (stack is now [2-count, ..., 6-count], 1-count)
        +               # add the 1-count to all the other counts
         °              # 10**x
          ƶ             # multiply each element by its 1-based index
           à            # take the maximum

Z                       # maximum
 Q                      # equality test (vectorizes)

1
ওহহ .. আমি পছন্দ করি ć+(এখন এটি দেখলাম আমি বিশ্বাস করতে পারি না যে আমি এটি সম্পর্কে ভেবে দেখিনি ..)! আমি যা চেষ্টা করছিলাম তার থেকে এটি অনেক বেশি ভাল ছিল .. আমার সাথেও একই ধারণা ছিল °। :) ব্যতীত আমি ইতিমধ্যে 20 বাইটে ছিলাম এবং এখনও পরীক্ষার মামলার জন্য একটি সমস্যা সমাধান করতে হয়েছিল [[1,1,1,1,1],] [6,1,1,6,6]].. সুতরাং আমার সময় বাঁচানোর জন্য ধন্যবাদ যাতে আমি আমার
চেষ্টাটি

1
কেভিন ক্রুইজসেন হ্যাঁ এটি কতটা ভাল ć+কাজ করে তা আশ্চর্যজনক । আমার প্রাথমিক ধারণাটি শুরু হয়েছিল æʒW}ʒ1KËতবে এটি [1,1,1,1,1]ইস্যুতে খুন হয়ে যায় ।
গ্রিমি

1
হ্যাঁ, আমার পদ্ধতির লাইন বরাবর ছিল ε1¢©Āy{γéθ¬sg®+°P}`.S, কিন্তু [1,1,1,1,1]যে সত্যিই খারাপ ছিল। আপনার সম্পূর্ণ উত্তর সঙ্গে একটা চমৎকার Synergy পেয়েছিলাম WΘ*, 6L¢, ć+, এবং °ƶ। বিশেষত বিল্টিনগুলি Wćƶএখানে তাদের শক্তি দেখায়।
কেভিন ক্রুইজসেন

Wআসলে প্রয়োজন হয় না, 6L¢¬Ā*হিসাবে একই বাইট-গণনা WΘ*6L¢
গ্রিমি

হুঁ, ভাল পয়েন্ট। :) Wপপিং ছাড়াই ভাবা এবং তারপরে *এটি শক্তি দেখায় তবে ¬পপিং ছাড়াই এবং পরে *মূলত একই ically এটি পপ না হওয়ার বিষয়টি হ'ল আমি যে শক্তি প্রয়োগ করতে চাইছিলাম তা একটি বাইট সংরক্ষণ করা। তবে এটি প্রকৃতপক্ষে ćƶ
কেভিন ক্রুইজসেন

6

পাইথন 2 , 85 81 80 বাইট

lambda p:cmp(*[max((h.count(i)+h.count(i>1),i)*(1in h)for i in[6]+h)for h in p])

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

রিটার্নস 1হল P1 জন্য, 0টাই জন্য, এবং -1P2 এর জন্য।

-1 বাইট, স্কুইড ধন্যবাদ


1
হোয়াইটস্পেসের মধ্যে 1এবং inযেতে পারে
মনিকা পুনরায়

@ স্পিড ধন্যবাদ, :)
টিফিল্ড

4

পার্ল 6 , 60 49 বাইট

&[cmp]o*.map:{.{1}&&max (.{2..6}X+.{1})Z ^5}o&bag

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

রিটার্নস More, Same, Lessজন্য P1 Wins, Tie, P2 Wins

ব্যাখ্যা

       *.map:  # Map input lists
                                             &bag  # Convert to Bag
             {                             }o  # Pass to block
              .{1}&&  # Return 0 if no 1s
                    max  # Maximum of
                         .{2..6}  # number of 2s,3s,4s,5s,6s
                                X+.{1}  # plus number of 1s
                        (             )Z     # zipped with
                                         ^5  # secondary key 0,1,2,3,4
&[cmp]o  # Compare mapped values

4

টি-এসকিউএল কোয়েরি, 148 বাইট

ইনপুট হিসাবে টেবিল ভেরিয়েবল ব্যবহার করা

পি: প্লেয়ার

v: রোলের মান

DECLARE @ table(p int,v int)
INSERT @ values(1,5),(1,5),(1,5),(1,5),(1,5)
INSERT @ values(2,4),(2,3),(2,3),(2,1),(2,4)

SELECT sign(min(u)+max(u))FROM(SELECT(p*2-3)*(s+sum(sign(s)-1/v))*(s/5*5+v+30)u
FROM(SELECT*,sum(1/v)over(partition by p)s FROM @)c GROUP BY v,s,p)x

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

Player 1 wins returns -1
Tie returns 0 
Player 2 wins returns 1

2

জেলি , 21 বাইট

এমনকি নিক কেনেডি পোস্ট করার আগেই চূর্ণবিচূর্ণ :)

’-oÆṃṀ$$Ạ?fÆṃ$L;$o5)M

একটি মোনাডিক লিঙ্ক প্লেয়ারগুলির একটি তালিকা গ্রহণ করে যা (1-ইনডেক্সড) বিজয়ীদের একটি তালিকা দেয়।

সুতরাং পি 1 হ'ল [1], পি 2 হ'ল [2]এবং টাই টাই [1,2]

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


2

পাওয়ারশেল , 112 126 123 121 বাইট

হিসাবে ইনপুট লাগে (a)(b)। রিটার্নস -1হল P1 জন্য win, 1P2 এর জন্য অথবা 0টাই জন্য।

$args|%{$d=$($_-ne1|group|sort c*,n*|%{$m=$_};(7*(($o=($_-eq1).Count)+$m.Count)+$m.Name+6*!$m)[!$o])-$d}
[math]::Sign($d)

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

টেস্ট কেস @( @(1,1,5,1,1), @(1,1,1,1,1), 1)যুক্ত করা হয়েছে।

Unrolled:

$args|%{
    $score=$(                                            # powershell creates a new scope inside expression $(...)
        $_-ne1|group|sort count,name|%{$max=$_}          # $max is an element with the widest group and the maximum digit except 1
        $ones=($_-eq1).Count                             # number of 1s in a player's hand
        $scoreRaw=7*($ones+$max.Count)+$max.Name+6*!$max # where $max.Name is digit of the widest group
        $scoreRaw[!$ones]                                # output $scoreRaw if the array contains 1, otherwise output $null 
    )                                                    # powershell deletes all variables created inside the scope on exit
    $diff=$score-$diff
}
[math]::Sign($diff)                                     # output the score difference

2

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

গ্রেগ মার্টিন -1 বাইট

Order@@(#~FreeQ~1||Last@Sort[Reverse/@Tally@Flatten[#/. 1->Range@6]]&)/@#&

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

আউটপুট -১ প্লেয়ার যখন 1 জিতবে, 1 যখন প্লেয়ার 2 জিতবে, এবং টাইয়ের জন্য 0।

                                    Helper function to score a list:
FreeQ[#,1] ||                       If there are 0 1s, score is True
Last@Sort[                          Otherwise, take the largest element of
    Reverse/@Tally@                 the {frequency, number} pairs in the flat list
       Flatten[ #/. 1->Range@6]     where each 1 is replaced by {1,2,3,4,5,6}.
]&                              e.g. {1,3,3,5,5} -> {1,2,3,4,5,6,3,3,5,5} -> {3,5}

Order @@ (...) /@ #&                Apply this function to both lists,
                                    then find the ordering of the result.

আপনি প্রতিস্থাপন পর এক বাইট সংরক্ষণ করতে পারবেন FreeQ[#,1]সঙ্গে #~FreeQ~1
গ্রেগ মার্টিন

2

জাভা 8, 244 240 236 215 199 বাইট

a->b->{int c[][]=new int[2][7],m[]=new int[2],p,i=5;for(;i-->0;c[1][b[i]]++)c[0][a[i]]++;for(i=14;i-->4;)m[p=i%2]=Math.max(m[p],c[p][1]>0?i/2+9*(c[p][i/2]+c[p][1]):0);return Long.compare(m[0],m[1]);}

-4 বাইটস @ সোমনকে ধন্যবাদ ।
-21 বাইট @ নীল ধন্যবাদ ।
-16 বাইটস @ সিলিংক্যাট ধন্যবাদ ।

রিটার্নস 1যদি হল P1 জয়ী; -1পি 2 জিতলে; 0যদি এটি টাই হয়

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

ব্যাখ্যা:

a->b->{                        // Method with 2 integer-array parameters & integer return
  int c[][]=new int[2][7],     //  Create a count-array for each value of both players,
                               //  initially filled with 0s
      m[]=new int[2],          //  The maximum per player, initially 0
      p,                       //  Temp-value for the player
  i=5;for(;i-->0;              //  Loop `i` in the range (5, 0]:
    c[1]                       //   For player 2:
        [b[i]                  //    Get the value of the `i`'th die,
             ]++)              //    and increase that score-count by 1
    c[0][a[i]]++;              //   Do the same for player 1
  for(i=14;i-->4;)             //  Then loop `i` in the range (14, 4]:
    m[p=i%2]=                  //   Set the score of a player to:
                               //   (even `i` = player 1; odd `i` = player 2)
      Math.max(                //    The max between:
        m[p],                  //     The current value,
                               //     And the value we calculate as follows:
        c[p][1]>0?             //     If this player rolled at least one 1:
          i/2                  //      Use the current value `i` integer-divided by 2
          +9*                  //      With 9 times the following added:
             (c[p][i/2]        //       The amount of dice for value `i//2`
              +c[p][1])        //       Add the amount of dice for value 1
        :                      //     Else (no 1s were rolled):
         0);                   //      Use 0
  return Long.compare(m[0],m[1]);}
                               //  Finally compare the maximum scores of the players,
                               //  resulting in -1 if a<b; 0 if a==b; 1 if a>b

লুপ ওভার পি এর জন্য, আপনি এর ...*(c[p][1]>0?1:0)সাথে প্রতিস্থাপন করতে পারেন c[p][1]>0?...:0। আমি টিআইও লিঙ্কটি পোস্ট করতে পারি না কারণ এটি অনেক দীর্ঘ এবং আমি এটি সংক্ষিপ্ত করতে চাই না। অব্যাহত সংস্করণটির আশেপাশে কোথাও ভারসাম্যহীন বন্ধনী রয়েছে।
আমার সর্বনামটি মনিকারিস্টেস্টেট

@ সোমন আঃ অবশ্যই ধন্যবাদ আমি c[p][1]>0?পরে চেকটি বাগ-ফিক্স হিসাবে যুক্ত করেছি , তবে দৃশ্যত অনেক কিছু না ভেবে। -4 এর জন্য ধন্যবাদ। :)
কেভিন ক্রুইজসেন

কেন *(i<2?6:i)? আপনি i=6এবং এর জন্য কেবল চেষ্টাটিকে সদৃশ করছেন i=1। এটি ন্যায়সঙ্গত হতে পারে *i(এবং আপনি 2 এ গেলে লুপিং বন্ধ করুন)।
নিল

এছাড়াও, এর 9মধ্যে 5এবং এর মধ্যে যে কোনও যাদু নম্বর থাকতে পারে32 ? আপনি যদি ব্যবহার করেন 8তবে আপনার পরিবর্তে (int)Math.pow(8,(...)*i)ব্যবহার করতে পারেন i<<3*(...)
নীল

1
আমি শেষ করেছি a->b->{int c[][]=new int[2][7],m[]=new int[2],s,p,i=5;for(;i-->0;c[1][b[i]]++)c[0][a[i]]++;for(i=7;i-->2;)for(p=2;p-->0;m[p]=s>m[p]?s:m[p])s=c[p][1]>0?i+9*(c[p][i]+(i>1?c[p][1]:0)):0;return Long.compare(m[0],m[1]);}যা দেখে মনে হচ্ছে আপনার পরীক্ষার সমস্ত কেস কেটে গেছে ...
নীল

1

জেলি , 27 বাইট

’o5Rṗ5¤ṢŒr$€UẎṀ1e⁸¤×µ€_/Ṡo/

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

পি 1 এর জন্য 1, পি 2 এর জন্য -1, টাইয়ের জন্য 0

ব্যাখ্যা

’o5Rṗ5¤ṢŒr$€UẎṀ1e⁸¤×µ€_/Ṡo/  Main link
                    µ€       For each list
’                            Decrement each value (so 1s become falsy)
 o                           Vectorized logical or (this replaces previous 1s (now 0s) with the test values)
  5Rṗ5¤                      1..5 cartesian-power 5 (1,1,1,1,1; 1,1,1,1,2; 1,1,1,1,3; ...)
          $€                 For each test list
       ṢŒr                   Sort and run-length encode (gives [digit, #digit])
            U                Reverse each list (gives [#digit, digit])
             Ẏ               Tighten by one (gives a list containing each possible hand for each possible wildcard)
              Ṁ              Take the maximum
               1e⁸¤×         Multiply the list values by (whether or not the original contained a 1) - becomes [0, 0] if not
                      _/Ṡ    Take the sign of the difference between the #digits and the digits
                         o/  If the number of digits differs, then 1/-1 is returned; otherwise, check the value of the digit (could still be 0)


1

কাঠকয়লা , 48 বাইট

UMθ⮌E⁷№ι∨λ¹UMθ׬¬⊟ι⁺⊟ιιUMθ⟦⌈ι±⌕ι⌈ι⟧I⁻⌕θ⌈θ⌕θ⌊θ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। -1খেলোয়াড় 1 টি, 0একটি টাইয়ের জন্য, এবং 1খেলোয়াড় 2 জিতে যায় তবে অ্যারে এবং আউটপুটগুলির অ্যারের হিসাবে ইনপুট নেয় । ব্যাখ্যা:

UMθ⮌E⁷№ι∨λ¹

প্রতিটি হাতে কতবার মান 6..1উপস্থিত হয় তার গণনা সহ প্রতিটি হাত প্রতিস্থাপন করুন । তালিকাটি বিপরীত কারণ ক) সর্বোচ্চ গণনা এবং সর্বাধিক মান সর্বাধিক মান খুঁজে পাওয়া সহজ করে তোলে খ) এর গণনা অপসারণকে আরও সহজ করে তোলে 11S এর গণনা দ্বিগুণ হয়েছে কারণ এটি দুবার অপসারণ করা দরকার, এটি একবার ননজারো কিনা তা একবার পরীক্ষা করে একবারে অন্য গণনায় যুক্ত করা হয়।

UMθ׬¬⊟ι⁺⊟ιι

গণনা যোগ 1s এর জন্য গন্য করার 6..2কিন্তু শুন্যতে গন্য সব সেট যদি গণনা 1গুলি শূন্য ছিল।

UMθ⟦⌈ι±⌕ι⌈ι⟧

প্রতিটি হাতের জন্য সর্বোচ্চ গণনা এবং সেই গণনার সাথে সর্বোচ্চ মান সন্ধান করুন। (আসলে আমরা 6গল্ফায়ার হিসাবে মান বিয়োগ খুঁজে পাই find)

I⁻⌕θ⌈θ⌕θ⌊θ

জয়ের অবস্থানগুলি বিয়োগ করে এবং হাতছাড়া করে কোন হাতটি জিতেছে তা নির্ধারণ করুন। (যদি হাত বেঁধে থাকে তবে প্রথম হাতটি উভয়ই জিততে এবং হেরে যায় ফলে ফলাফলটি 0যেমন পছন্দ হয় তেমন হয়))


1

সি (জিসিসি) / 32 বিট, 117 বাইট

t;m;s(int*r){int c[6]={};for(m=0;t=*r++;m=t>m?t:m)c[--t]+=5,t=t?c[t]+t:5;t=*c?*c+m:0;}f(a,b){t=s(a)-s(b);t=(t>0)-!t;}

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

দুটি শূন্য-সমাপ্ত পূর্ণসংখ্যার অ্যারে নেয়। রিটার্নস 1, 0, -1জন্য P1 Wins, P2 Wins, Tie


1
@ ওয়েসকাঃ ওকে, ফিক্সড
নয়েলহোফ


1

পার্ল 5 -MList::Util=max -pl , 80 বাইট

sub t{$t=pop;$_=max map$_ x$t=~s/$_//g,2..6;/./;$t&&$_.$t*($&||6)}$_=t($_)<=>t<>

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

ইনপুট:

পৃথক লাইনে প্রতিটি খেলোয়াড়, কোনও স্থান নেই

আউটপুট:

1 লাইন এক জিতেছে

0 টাই

-1 লাইন দুই জয়


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