बार डाइस का गेम किसने जीता?


24

चुनौती

बार पासा एक बार में पासा (इसलिए नाम) के साथ खेला जाने वाला एक सरल खेल है। आप 5 छह-पक्षीय पासा रोल करते हैं और सबसे अच्छा हाथ बनाने का प्रयास करते हैं।

स्कोरिंग समान अंकों के साथ पासा की सबसे बड़ी संख्या को एकत्र करने पर आधारित है। प्रत्येक हाथ में कम से कम एक "ऐस", या एक, एक वैध हाथ होने के लिए शामिल होना चाहिए; इक्के "विल्ड्स" के रूप में कार्य करते हैं, और किसी अन्य अंक के साथ जोड़े जा सकते हैं। एक खिलाड़ी के हाथ की ताकत पहले अंकों की संख्या और फिर उन अंकों के मूल्य पर निर्भर करती है। एक उदाहरण के रूप में, चार 3 के साथ एक हाथ (गिना wilds) तीन 5 के साथ एक हाथ से बेहतर है, लेकिन पांच 2 के साथ एक हाथ से बेहतर नहीं है। विकिपीडिया लेख
से लिया गया

इसका मतलब है कि उच्चतम रैंक वाला हाथ पूरी तरह से 6 और 1 के आकार का बना है, और सबसे नीचे का स्थान किसी भी 1 के बिना हाथ है।

आपकी चुनौती दो हाथों को लेना है और जो खिलाड़ी जीता है उसे वापस करना है, या यदि वे बंधे हैं।

इनपुट

5 नंबरों की दो अनसुलझी सूची, 1 से 6. तक प्रत्येक सूची में एक खिलाड़ी का हाथ होता है। इनपुट प्रारूप लचीला है।

उत्पादन

कोई भी तीन विशिष्ट लेकिन स्थिर, स्थिर मूल्य (श्रेणी की अनुमति नहीं है) यह दर्शाता है कि खिलाड़ी 1 या खिलाड़ी 2 जीता है, या यदि यह एक टाई था। कृपया अपने उत्तर में बताएं कि आप किन मूल्यों का उपयोग कर रहे हैं। उदाहरण के लिए, -1यदि P1 जीतता है, 0यदि यह टाई है, और 1यदि P2 जीतता है , तो आप वापस लौट सकते हैं ।

नियम

  • इनपुट हमेशा मान्य होगा
  • एक विजेता को निर्धारित करने के लिए प्रत्येक हाथ का केवल सबसे अच्छा संभव स्कोर का उपयोग किया जाता है। कोई टाई-ब्रेकर नहीं हैं। उदाहरण के लिए, टाई के ब्रेकर के रूप में 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]एक टाई के लिए। TIO लिंक डिस्प्ले के लिए इसे तैयार करता है।

3 बाइट बचाने के लिए @JonathanAllan को धन्यवाद!

व्याख्या

            )   | 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और विजेता की सूची तैयार कर सकते हैं।
जोनाथन एलन

@JonathanAllan अच्छी बात! साभार
निक केनेडी

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पी 1 के लिए रिटर्न , NaNएक टाई के लिए , पी -Inf2 के लिए।

सहायक फ़ंक्शन का उपयोग करता है 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")हैं: इसे ऑनलाइन आज़माएं!
हारून हेमैन

@AaronHayman बहुत अच्छा, धन्यवाद!
रॉबिन राइडर

6

जावास्क्रिप्ट (ईएस 6),  97  90 बाइट्स

के रूप में इनपुट लेता है (a)(b)+Infinityपी 1 के लिए, पी 2 के -Infinityलिए या 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

05AB1E , 16 15 बाइट्स

-1 बाइट धन्यवाद जोनाथनअलन को

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

इसे ऑनलाइन आज़माएं!

पी 1 जीत के लिए [1, 0] रिटर्न, संबंधों के लिए [1, 1] और पी 2 जीत के लिए [0, 1]।

2-ट्यूपल (डाइस काउंट, डाइस वैल्यू) पर लेक्सोग्राफिक ऑर्डर का उपयोग करने के बजाय, यह स्कोर को 10 ** डाइस काउंट * डाइस मान के रूप में गणना करता है। एक अंक 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]पेंच के साथ-साथ वास्तव में। अपने पूरे जवाब के साथ एक अच्छा तालमेल हो गया WΘ*, 6L¢, ć+, और °ƶ। खासतौर पर यहां के भवन Wćƶवास्तव में अपनी ताकत दिखाते हैं।
केविन क्रूज़सेन

Wवास्तव में जरूरत नहीं है, के रूप 6L¢¬Ā*में एक ही बाइट-गिनती है WΘ*6L¢
ग्रिमी

हम्म, अच्छी बात है। :) Wपॉपिंग के बिना सोचा और फिर *दिखाया कि यह ताकत है, लेकिन ¬पॉपिंग के बिना और फिर *मूल रूप से एक ही है। तथ्य यह है कि यह पॉप नहीं है ताकत है जो मैं एक बाइट को बचाने के लिए आसन्न था। लेकिन यह वास्तव में मुख्य रूप से है ćƶ
केविन क्रूज़सेन

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पी 1 के लिए रिटर्न , 0टाई के लिए, और -1पी 2 के लिए।

-1 बाइट, स्क्वीड के लिए धन्यवाद


1
बीच में व्हाट्सएप 1और inजा सकते हैं
मोनिका

@ क्विक धन्यवाद, :)
TFeld

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

टी-SQL क्वेरी, 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-अनुक्रमित) विजेताओं की सूची का उत्पादन करता है।

तो P1 है [1], P2 है [2]और एक टाई है [1,2]

इसे ऑनलाइन आज़माएं!


2

पावरशेल , 112 126 123 121 बाइट्स

के रूप में इनपुट लेता है (a)(b)-1पी 1 जीत के लिए, पी 12 के लिए या 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 जीतता है, 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 बाइट्स @someone को धन्यवाद ।
-21 बाइट्स @Neil की बदौलत
-16 बाइट्स @ceilingcat की बदौलत

1पी 1 जीतता है तो वापसी करता है ; -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। मैं एक TIO लिंक पोस्ट नहीं कर सकता, क्योंकि यह बहुत लंबा है और मैं इसे छोटा नहीं करना चाहता। Ungolfed संस्करण में असंतुलित कोष्ठक कहीं न कहीं आसपास हैं।
मेरा सर्वनाम

@someone आह, निश्चित रूप से, धन्यवाद। मैंने जोड़ा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 45 बाइट्स

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

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। -1यदि खिलाड़ी 1 जीत, 0एक टाई के लिए, और 1यदि खिलाड़ी 2 जीतता है , तो सरणी और आउटपुट के एक सरणी के रूप में इनपुट लेता है । स्पष्टीकरण:

UMθ⮌E⁷№ι∨λ¹

प्रत्येक हाथ को गिनती के साथ बदलें 6..1कि हाथ में मूल्य कितनी बार दिखाई देते हैं। सूची को उलटा कर दिया गया है क्योंकि क) उच्चतम गिनती और बी के साथ उच्चतम मूल्य खोजने में आसान बनाता है) यह 1एस की गिनती को दूर करना आसान बनाता है । की गिनती1 दोगुनी है क्योंकि इसे दो बार हटाने की जरूरत है, एक बार यह जांचने के लिए कि यह नॉनजेरो है और एक बार इसे अन्य काउंट में जोड़ना है।

UMθ׬¬⊟ι⁺⊟ιι

के 1लिए गणनाओं में एस की गिनती जोड़ें 6..2, लेकिन सभी की संख्या शून्य पर सेट करें यदि एस की गिनती 1शून्य थी।

UMθ⟦⌈ι±⌕ι⌈ι⟧

प्रत्येक हाथ के लिए उच्चतम गिनती और उस गणना के साथ उच्चतम मूल्य पाते हैं। (वास्तव में हम मान लेते हैं 6कि यह गोल्फ है।)

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
@Veskah ठीक है, ठीक किया गया।
nwellnhof


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
खेल के नियमों के आपके स्पष्टीकरण के आधार पर परिवर्तित
Xcali
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.