মধ্য-শরৎ উত্সব জুয়া খেলা


11

আগামীকাল মধ্য-শরৎ উত্সব, এবং সেই ছুটির অনুভূতিতে, আমি একটি জুয়া খেলা চালু করব যা আমরা ( জিয়ামানের লোক ) ছুটির সময় খেলি!

বিধি

ছয়টি পার্শ্বযুক্ত পাশা দিয়ে গেমটি খেলানো হয়। সংখ্যার বিভিন্ন সংমিশ্রণের বিভিন্ন র‌্যাঙ্ক রয়েছে, যার মধ্যে রয়েছে চারটি বা তার উপর বিশেষ জোর। আপনার কাজটি হ'ল একটি প্রোগ্রাম / ফাংশন লিখুন যা হাতে র‌্যাঙ্ক করবে 6 রাইজের রোল given এখানে র‌্যাঙ্কগুলি রয়েছে (আমি নিয়মগুলি কিছুটা সংশোধন / সরল করেছি):

পদমর্যাদার

আমার ধারণা, কেবল চীনারা এই চ্যালেঞ্জটি করতে পারে! ঠিক আছে, ঠিক আছে, এখানে কিছু ইংরাজির ব্যাখ্যা রয়েছে।

  • 0: 4 চার এবং 2 টি।
  • 1: 6 টি চার।
  • 2: 6 টি।
  • 3: 6 চার এবং একটি ছাড়া অন্য যে কোন ধরণের।
  • 4: 5 চার।
  • 5: 5 চারটি ছাড়া যে কোনও ধরণের।
  • 6: 4 চার।
  • 7: সোজা। (1-6)
  • 8: 3 চার।
  • 4: 4 বাদে যে কোনও ধরণের 9।
  • 10: 2 বাউন্ডারি।
  • 11: 1 চার।
  • 12: কিছুই না।

ইনপুট

6 টি সংখ্যা, 6 সংখ্যার একটি অ্যারে বা 6 সংখ্যার একটি স্ট্রিং যা 1-6 থেকে 6 পাশ্ব রোলগুলির মানগুলি উপস্থাপন করে

আউটপুট

আপনার প্রোগ্রাম / ফাংশনটি র‌্যাঙ্কটি নির্দেশ করতে কিছু আউটপুট / আউটপুট আসতে পারে, যতক্ষণ না প্রতিটি র‌্যাঙ্ক একটি আউটপুট এবং তদ্বিপরীত দ্বারা নির্দেশিত হয়। যাত্রা। 0-12, 1-13, ইত্যাদি সংখ্যা ব্যবহার করে

উদাহরণ (আউটপুট হিসাবে 0-12 ব্যবহার করে)

[1,1,1,1,1,1]->2
[1,4,4,4,1,4]->0
[3,6,5,1,4,2]->7
[1,2,3,5,6,6]->12
[3,6,3,3,3,3]->5
[4,5,5,5,5,5]->5

এটি কোড-গল্ফ, তাই সংক্ষিপ্ততম বাইট গণনা জয়!


(আমি এটি স্যান্ডবক্সে রেখে দিতাম, তবে আমি সময়টি সঠিক হতে চেয়েছিলাম possible আমি যথাসম্ভব যথাযথভাবে চেষ্টা করার চেষ্টা করেছি, দয়া করে কোনও স্পষ্টতার দরকার আছে কিনা তা আমাকে জানান))
কুইন্টেক

@ শেগি তাই ওপি বলেছে যে পরিবর্তে 0-12 বা 1-13 আউটপুট
শিয়ারু আসাকোটো

@ শেগি যেমন আমি প্রশ্নে বলেছি, আউটপুট অগত্যা লেবেল সংখ্যার সাথে মিল রাখতে হবে না। চিত্রটিতে এড়ানো নম্বর এবং এলোমেলো ফাঁকগুলি নিয়মগুলি কিছুটা সহজ করতে হবে - এই traditionতিহ্যের জন্য সত্যিকারের নির্দিষ্ট কোনও নিয়ম নেই, এটি কেবল আমার ব্যাখ্যা।
কুইন্টেক

এটা কি হওয়া উচিত নয় [1,2,3,5,6,6]->13??
জে.ডো

@ জে.ডো উদাহরণ / পরীক্ষার ক্ষেত্রে সূচকগুলি মানগুলির পরিবর্তে ফলাফল হিসাবে ব্যবহার করে। মানগুলির বিপরীতে, 10এড়ানো যায় না।
কেভিন ক্রুইজসেন

উত্তর:


2

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

≡⌈Eθ№θι⁶I⁻²⌕14§θχ⁵I⁻⁵⁼⁵№θ4⁴⎇⁼№θ4⁴§60⁼№θ1²9¹7I⁻¹²⌊⊘X²№θ4

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ১০. এড়িয়ে যাবেন না

≡⌈Eθ№θι

যে কোনও সংখ্যার সর্বোচ্চ ফ্রিকোয়েন্সি গণনা করুন।

⁶I⁻²⌕14§θχ

যদি কোনও ধরণের 6 থাকে তবে স্ট্রিংয়ে অঙ্কের অবস্থানটি 14২ থেকে বিয়োগ করুন This এর ফলে 1 টি 6 4 এস এর জন্য, 6 1 এর জন্য 2 এবং অন্য যে কোনও কিছুর জন্য 3 এর ফলাফল হয়।

⁵I⁻⁵⁼⁵№θ4

যদি কোনও ধরণের 5 টি হয়, তবে ফলাফল 5 টি না হলে 5 টি হয়, যার ক্ষেত্রে 1টি বিয়োগ করা হয়।

⁴⎇⁼№θ4⁴§60⁼№θ1²9

যদি সেখানে কোনও ধরণের 4 হয়, তবে যদি 4 4s হয় তবে ফলাফলটি 1 হয় যদি না 2 1s হয় ফলাফল ক্ষেত্রে 0, অন্যথায় ফলাফল 9 হয়।

¹7

সমস্ত অঙ্ক যদি আলাদা হয় তবে ফলাফলটি 7 হয়।

I⁻¹²⌊⊘X²№θ4

অন্যথায় ফলাফল 12 - (4 >> (4 - 4 এর #))।


সংক্ষিপ্ত উত্তরটি গ্রহণ করা ভাল অনুশীলন বলে মনে হচ্ছে, তাই আমি এটাই করব :) দুর্ভাগ্যক্রমে অনেকেই আপনার উত্তরটি দেখে এবং
এটির উন্নতি করে নি

@ কুইন্টেক এটি কোনও সমস্যা নয়; লোকেরা অ্যালগোরিদম বা অন্যান্য কারণের দক্ষতার উপর ভিত্তি করে উত্তরগুলিকে উজ্জীবিত করে যা তাদের উত্তরকে প্রশংসা করে তোলে।
নীল

10

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

a=>a.map(o=n=>[x=o[n]=-~o[n],6,,,21,9,8^o[1]][a=x<a?a:x])[5]|[,1,4,5,o[1]&2|8,2,4][o[4]]

এটি অনলাইন চেষ্টা করুন! বা সমস্ত সম্ভাব্য রোল পরীক্ষা!

নিম্নলিখিত ম্যাপিং অনুসারে একটি পূর্ণসংখ্যা আউটপুট দেয়:

 Rank | Output       Rank | Output
------+--------     ------+--------
   0  |  31            7  |   7
   1  |  12            8  |   5
   2  |  14            9  |  21
   3  |   8           10  |   4
   4  |  11           11  |   1
   5  |   9           12  |   0
   6  |  29

কিভাবে?

পদ্ধতি

আউটপুটটি কিছুটা পার্শ্ববর্তী বা এর মধ্যে সম্পাদন করে গণনা করা হয়:

  • এফ
  • এম

ব্যতিক্রমসমূহ:

  • এফ=444একটি
  • এম=666একটি

টেবিল

এফএম

এফ01234একটি456এমঅথবা014581024166767141466200145810243001458102442121212121293123215999131391111136একটি889121381010126141415141514141414

এম3এম3এমএফ=3

উদাহরণ

এম=1এফ=1

6 অথবা 1=7

77

মন্তব্য

a =>                   // a[] = input array, reused as an integer to keep track of the
  a.map(               //       maximum number of occurrences of the same dice (M)
    o =                // o = object used to count the number of occurrences of each dice
    n =>               // for each dice n in a[]:
    [                  //   this is the lookup array for M-bitmasks:
      x =              //     x = o[n] = number of occurrences of the current dice
        o[n] = -~o[n], //     increment o[n] (we can't have M = 0, so this slot is not used)
      6,               //     M = 1 -> bitmask = 6
      ,                //     M = 2 -> bitmask = 0
      ,                //     M = 3 -> bitmask = 0
      21,              //     M = 4 -> bitmask = 21
      9,               //     M = 5 -> bitmask = 9
      8 ^ o[1]         //     M = 6 -> bitmask = 14 for six 1's, or 8 otherwise
    ][a =              //   take the entry corresponding to M (stored in a)
        x < a ? a : x] //   update a to max(a, x)
  )[5]                 // end of map(); keep the last value
  |                    // do a bitwise OR with the second bitmask
  [                    // this is the lookup array for F-bitmasks:
    ,                  //   F = 0 -> bitmask = 0
    1,                 //   F = 1 -> bitmask = 1
    4,                 //   F = 2 -> bitmask = 4
    5,                 //   F = 3 -> bitmask = 5
    o[1] & 2 | 8,      //   F = 4 -> bitmask = 10 if we also have two 1's, 8 otherwise
    2,                 //   F = 5 -> bitmask = 2
    4                  //   F = 6 -> bitmask = 4
  ][o[4]]              // take the entry corresponding to F (the number of 4's)

5

আর , 100 বাইট

তালিকাভুক্ত শর্তাবলীর একগুচ্ছ হিসাবে স্কোরকে এনকোড করুন। আমার প্রথম স্ট্রিংজি-রেজেক্স পদ্ধতির চেয়ে সহজ।

সম্পাদিত- বাগ বাগ এবং এখন সমস্ত রোল র‌্যাঙ্ক।

function(d,s=sum(d<2))min(2[s>5],c(11,10,8,6-6*!s-2,4,1)[sum(d==4)],c(7,12,12,9,5,3)[max(table(d))])

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



2

পাইথন 2 ,  148  119 বাইট

-27 বাইটসকে ওভসকে ধন্যবাদ (1. ব্যবহারের .countঅনুমতি দেওয়ার mapব্যবহার; ২ 0টুকরো টুকরো টুকরো টুকরো অপসারণ ; 3. একটি inপরিবর্তে ব্যবহার max; ৪. সংক্ষিপ্ত (F==4)*O==2করে F==4>O==2[যেহেতু গল্ফড F>3>O>1]]

C=map(input().count,range(1,7))
O,F=C[::3]
print[F>3>O>1,F>5,O>5,6in C,F>4,5in C,F>3,all(C),F>2,4in C,F>1,F,1].index(1)

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


@ ওভস ওহ হে হিসাব করুন> _ <দুর্দান্ত
জোনাথন অ্যালান

একটি শেষ পরামর্শ: যেমনটি dকেবল একটি প্রয়োজন তাই এটি সম্পূর্ণ প্রোগ্রাম হিসাবে সংক্ষিপ্ত
ovs


@ovs - আপনার সমস্ত গল্ফ করার জন্য ধন্যবাদ বুট করার জন্য আরও দুটি সংরক্ষণ করা হয়েছে।
জোনাথন অ্যালান

অজগরকে শর্তসাপেক্ষে শৃঙ্খলাবদ্ধ! এছাড়াও,
অনুমানটি

1

পাইথ, 60 বাইট

eS[@[ZhZ2 4*6hq2hJuXtHG1Qm0Q8hT)@J3*5hSJ*Tq6hJ*<3KeSJ@j937TK

বিপরীতে র‌্যাঙ্কে মানচিত্র, 0-12। এটি এখানে অনলাইনে চেষ্টা করুন , বা এখানে সমস্ত পরীক্ষার কেস একবারে যাচাই করুন

ব্যবহৃত পূর্ণ ম্যাপিং নিম্নরূপ:

12: 4 fours and 2 ones.
11: 6 fours.
10: 6 ones.
 9: 6 of any kind except fours and ones.
 8: 5 fours.
 7: 5 of any kind except for fours.
 6: 4 fours.
 5: Straight. (1-6)
 4: 3 fours.
 3: 4 of any kind except 4.
 2: 2 fours.
 1: 1 four.
 0: Nothing.

এটি ডাইস মানগুলিকে ফ্রিকোয়েন্সিগুলিতে ম্যাপিংয়ের পরে বিভিন্ন নিয়মের মান গণনা করে এবং সর্বোচ্চ সেটটি নিয়ে কাজ করে।

Implicit: Q=eval(input()), Z=0, T=10

JuXtHG1Qm0Q   Input mapping
 u     Q      Reduce each element of the input, as H, ...
        m0Q   ...with initial value, G, as an array of 6 zeroes (map each roll to 0)
   tH           Decrement the dice roll
  X  G1         Add 1 to the frequency at that point
J             Store the result in J

@[ZhZ2 4*6hq2hJuXtHG1Qm0Q8hT)@J3   Rule 1 - Values for sets including 4
  Z                               *0
   hZ                             *1 (increment 0)
     2                            *2
       4                          *4
              JuXtHG1Qm0Q          Input mapping (as above)
             h                     First value of the above - i.e. number of 1's
           q2                      1 if the above is equal to 2, 0 otherwise
        *6h                       *Increment and multiply by 6
                                   Maps to 12 if there are 2 1's, 6 otherwise
                         8        *8
                          hT      *11 (increment 10)
 [                          )      Wrap the 7 starred results in an array
                             @J3   Get the 4th value of the input mapping - i.e. number of 4's
@                                  Get the value at that position in the array

*5hSJ   Rule 2 - Straight
  hSJ   Smallest frequency in input mapping (first, sort, J)
        For a straight, smallest value will be 1, 0 otherwise
*5      Multiply by 5

*Tq6hJ   Rule 3 - 6 1's
    hJ   Frequency of 1's (first value from input mapping)
  q6     1 if the above == 6, 0 otherwise
*T       Multiply by 10

*<3KeSJ@j937TK   Rule 4 - 4,5,6 of a kind, other than 4's
   KeSJ          Get the max frequency from input mapping, store in K
        j937T    [9,3,7]
       @     K   Get the element at K'th position in the above (modular indexing)
 <3K             1 if 3<K, 0 otherwise
*                Multiply the previous 2 results

eS[   Wrapping it all up!
  [   Wrap all the above rules in an array
eS    Take the max value of the above, implicit print

1

রেটিনা , 137 126 বাইট

4
A
O`.
^11A+
0
1+$
2
^A+
1
(.)\1{5}
3
^.A+
4
.?(.)\1{4}.?
5
^..A+
6
12356A
7
.+AAA$
8
.*(.)\1{3}.*
9
.+AA$
10
.+A$
11
.{6}
12

-11 বাইট @ নীল ধন্যবাদ ।

আউটপুট 0-সূচকযুক্ত ( 0..12)।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

প্রতি 4 এ 'এ' দিয়ে প্রতিস্থাপন করুন:

4
A

সমস্ত ইনপুট-সংখ্যা বাছাই করুন (এ এর পিছনে থাকবে):

O`.

অন্য প্রতিটি দুটি লাইন প্রত্যাশিত আউটপুটটির সাথে ইনপুটটি প্রতিস্থাপন করে:

Regex         Replacement  Explanation

^11A+         0            starts with "11", followed by any amount of A's
1+$           2            ends with any amount of 1s
^A+           1            starts with any amount of A's
(.)\1{5}      3            six of the same characters
^.A+          4            starts with any character, followed by any amount of A's
.?(.)\1{4}.?  5            five of the same characters,
                           with optionally a leading or trailing character
^..A+         6            starts with any two characters, followed by any amount of A's
12356A        7            literal "12356A" match
.+AAA$        8            any amount of leading characters, ending with three A's
.*(.)\1{3}.*  9            four of the same characters,
                           with optionally any amount of leading/trailing chars
.+AA$         10           any amount of leading characters, ending with two A's
.+A$          11           any amount of leading characters, ending with a A
.{6}          12           any six characters

1
খুব চতুর, তবে আমি মনে করি আপনি এক ধাপ এগিয়ে যেতে পারেন এবং এটিকে স্বয়ংক্রিয়ভাবে এক প্রান্তে সাজানোর জন্য 4পরিসরের বাইরের কিছু দিয়ে প্রতিস্থাপন 1-6করতে পারেন (এটি নিশ্চিত নয় যে এটি আপনাকে কোনও প্রান্তে সাজিয়েছে তা কোনও পার্থক্য করে কিনা)।
নীল

@ নীল আহ, এও চালাক! ধন্যবাদ।
কেভিন ক্রুইজসেন

1

05AB1E , 57 55 বাইট

4¢4@U.M¢©5-Di14¹нk2αë>Di5X-ë>i9X3*-¹1¢2Ê*ë®i7ë¹4¢o;ï12α

@ নীল এর কাঠকয়ালের উত্তর বন্দর , কারণ আমার প্রাথমিক পদ্ধতির ইতিমধ্যে 60 বাইট ছিল এবং আমি এখনও সম্পন্ন করি নি। যদিও আমার বর্তমান উত্তর সম্ভবত আরও কিছু গল্ফ করা যেতে পারে।

অঙ্কের তালিকা হিসাবে ইনপুট করুন।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

4¢              # Count the amount of 4s in the (implicit) input-list
  4@            # Check if it's larger than or equal to 4
                # (results in 1 for truthy; 0 for falsey)
    U           # Pop and store that result in variable `X`
.M              # Push the most frequent number in the (implicit) input-list
  ¢             # Pop and push the count of that number in the (implicit) input-list
   ©            # Store it in the register (without popping)
5-Di            # If the maximum count - 5 is exactly 1 (so the maximum count is 6):
    14          #  Push 14
      ¹н        #  Push the first digit of the input-list
        k       #  Get its index in 14, resulting in -1, 0, or 1
         2α     #  Take the absolute difference with 2
                #  (This covers cases 1, 2, and 3)
ë>Di            # Else-if the maximum count - 5 + 1 is exactly 1 (so the maximum count is 5):
    5           #  Push 5
     X-         #  And subtract variable `X`
                #  (This covers cases 4 and 5)
ë>i             # Else-if the maximum count - 5 + 2 is exactly 1 (so the maximum count is 4):
   9            #  Push 9
    X3*         #  Multiply variable `X` by 3
       -        #  And subtract it from the 9
        ¹1¢     #  Count the amount of 1s in the input-list
           2Ê   #  Check if it's NOT equal to 2 (1 if truthy; 0 if falsey)
             *  #  Multiply it with the 9 or 6
                #  (This covers cases 0, 6, and 9)
ë®i             # Else-if the maximum count is 1:
   7            #  Push a 7
                #  (This covers case 7)
ë               # Else (maximum count is 2 or 3):
 ¹4¢            #  Count the amount of 4s in the input-list
    o           #  Take 2 to the power this count
              #  Halve and floor it
       12α      #  And take the absolute difference with 12
                #  (This covers cases 8, 10, 11, and 12)
                # (Output the top of the stack implicitly as result)

0

রুবি , 100 বাইট

->a{%w(^2.*4$ 6$ ^6 6 5$ 5 4$ ^1*$ 3$ 4 2$ 1$ .).index{|b|/#{b}/=~([1,*a,4].map{|c|a.count(c)}*'')}}

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

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

অ্যারেতে প্রতিটি সংখ্যার উপস্থিতি গণনা করুন, 1 এস সংখ্যার প্রিপেনড সংখ্যা এবং 4 এস সংখ্যায় যুক্ত করুন।

এর পরে, বিভিন্ন রেজেক্স নিদর্শনগুলির সাথে মেলানোর চেষ্টা করুন।

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