ইয়াহটজি একটি খেলা স্কোর


12

ইয়াহটজি স্কোরশিটের ১৩ টি সারিগুলির প্রত্যেকটির জন্য আপনাকে দেওয়া হবে ( স্টিডিন থেকে) 5 সংখ্যার (পাশা) একটি পৃথক পৃথক তালিকা। আপনার টাস্কটি প্রতিটি লাইনটির জন্য স্কোর গণনা করা এবং খেলার গ্র্যান্ড টোটাল আউটপুট করে

উদাহরণ

ইনপুট এবং কীভাবে এটি ব্যাখ্যা করা যায়:

Input       Box              Score
6 1 4 1 3   Aces              2
3 2 2 1 2   Twos              6
6 3 2 3 3   Threes            9
4 2 3 6 5   Fours             4  
6 3 5 5 1   Fives            10
1 5 6 5 6   Sixes            12
            Bonus             -
4 2 4 4 1   3 of a kind      15
2 2 3 2 4   4 of a kind       -
3 2 2 2 3   Full house       25  
1 3 1 6 1   Small straight    -
2 5 4 6 3   Large straight   40
2 2 2 2 2   Yahtzee          50
5 5 4 5 2   Chance           21
            Grand Total     194

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

সংক্ষিপ্ততম কোডটি জয় হোক!


যারা নরওয়েজিয়ান ভাষায় কথা বলেন না তাদের উপকারের জন্য, আপনি লোকেরা প্রশ্নে সরাসরি প্রয়োগ করতে চান এমন স্কোরিং বিধিগুলি তালিকাভুক্ত করতে পারেন?
পিটার টেলর

হে হি;) নিয়ম একই, এটি কেবলমাত্র কয়েকটি ব্লক যা অবস্থান পরিবর্তন করেছে এবং 1 এবং 2 জুটি যুক্ত করেছে। প্রথম কোড-ব্লকটি মোটামুটি অনুবাদ ("সম" এবং "বোনাস" ছাড়াই) তাই কেবল সেইটিকে উল্লেখ করুন। নরওয়েজিয়ান লিঙ্কটি কেবলমাত্র অন্য সেটআপে ব্যবহৃত হতে পারে এমন লোকেদের জন্য ব্লকের ক্রমকে ন্যায়সঙ্গত করার জন্য। আমি মনে করি নিয়মগুলি পরিষ্কার, এবং "জোড়া" ব্লকগুলি বেশ স্ব-ব্যাখ্যামূলক। বাকি বিধিগুলি আমার দেওয়া ইংরাজী উইকি লিঙ্কে ব্যাখ্যা করা উচিত।
দানিরো

ওহ, আমি শুধু বুঝতে পেরেছি, বিধি দ্বারা আলাদা। আমি তখন অফিসিয়াল, "আন্তর্জাতিক" বিধিগুলি ব্যবহার করব: yahtzeerules.com/yahtzee-scoring.htm (আমার নরওয়েজিয়ান ভাষা ভাল লাগে, এটির সম্ভাব্য স্কোরগুলিতে আরও বৈচিত্র রয়েছে) - আমি মুহূর্তের মধ্যে প্রশ্নটি পরিবর্তন করব change
দানিরো

আপনি আসলে স্কোরিং লাইনের সাথে ইনপুট কার্ডের সাথে মিল রাখতে চলেছেন? আমাদের দেওয়া কোনও হাতের জন্য কোন লাইনটি সবচেয়ে উপযুক্ত এটি নির্ধারণ করা উচিত নয়?
ডেভিডসি

1
@ ম্যাট একটি নির্দিষ্ট অনুসন্ধান ইঞ্জিন থেকে কিছু শীর্ষ ফলাফলের মধ্যে সাঁতার কাটার পরে, আমি 'হ্যাঁ' বলব।
ডানিরো

উত্তর:


4

এপিএল (124)

S←{⍺∊+⌿⍵∘.=⍵}⋄+/(+/⎕)(50×∧/,A∘.=A←⎕)(+/10×{⍵×∨/(⍳⍵)⍷1+A-⊃A←A[⍋A←⎕]}¨N)(25×∧/S∘⎕¨2 3)(+/{(+/A)×⍵S⊢A←⎕}¨N←3 4)(+/{+/⍵×⍵=⎕}¨⍳6)

4
আমি শপথ করছি এটি একটি এলিয়েন স্পেসশিপের পাশে পড়েছি এমন কিছুটির সাথে অনুরূপ দেখাচ্ছে।
কেভিন এলিয়ট

এই প্রোগ্রামটি কাজ করে কি না তা আমার কোনও ধারণা নেই তবে অবশ্যই এটি সবচেয়ে সংক্ষিপ্ত: ডি
ড্যানিরো

5

আর - 264

S=sum;
P=prod;
T=function(i)table(x[i,]);
Z=function(i,...)any(sapply(list(...),function(y)all(y%in%x[i,])))
S((x[1:6,]==(R=row(x[1:6,])))*R)+ # Upper section
S(x[7,])*any(T(7)>2)+             # 3 of a kind
S(x[8,])*any(T(8)>3)+             # 4 of a kind
25*(P(T(9))%in%5:6)+              # Full house
30*Z(10,1:4,2:5,3:6)+             # Small straight
40*Z(11,1:5,2:6)+                 # Large straight
50*(P(T(12))==5)+                 # Yahtzee
S(x[13,])                         # Chance

(মন্তব্য বাদে ২ 26৪ টি অক্ষর)

ইনপুট সহ

x <- as.matrix(read.table("http://pastebin.com/raw.php?i=ZRMC9B4x"))

আউটপুট

[1] 194

নিস দেখতে কেউ ডান আউটপুট পেতে পরিচালনা: ডি আমি উদাহরণস্বরূপ আপডেট করব।
ডানিরো

আমি মনে করি আপনার প্রোগ্রামটি ভুলভাবে পুরো বাড়িটি পরিচালনা করে। আমি পাশা পরীক্ষা করেছি 2 2 2 2 2এবং আমি বিশ্বাস করি যে আপনার প্রোগ্রামটি পুরো ঘর হিসাবে এবং 25 টি পয়েন্টকে পুরষ্কার হিসাবে বিবেচনা করে।
ম্যাট

আমি মনে করি বড় এবং ছোট স্ট্রেইটের সমস্যাও আছে। সমস্ত পাশা যদি একই হয় (আমি আবার পরীক্ষা করে 2 2 2 2 2দেখি) তবে আমি numeric(0)স্কোরের পরিবর্তে ফলাফল পেয়েছি ।
ম্যাট

@ ম্যাট, আমি যেখান থেকে এসেছি (আমার নিয়ম বা সবার?) আপনি 2 2 2 2 2"ফুল হাউস" এর অধীনে ইয়াহটজি (উদাঃ ) করতে পারবেন । আমি মনে করি আপনি স্ট্রেইট সম্পর্কে সঠিক, ধন্যবাদ; আমি আমার কোডটির সাথে সংক্ষিপ্ততর সংস্করণ দিয়ে আপডেট করব about
ফ্লোডেল

4

পাইথন 364

S=sum;R=range;D=[map(int,raw_input().split())for i in R(13)];s=S(x for i in R(6)for x in D[i]if x==i+1)
for i in R(2):d=D[6+i];s+=[0,S(d)][max(map(d.count,d))>2+i];d=sorted(set(D[9+i]));s+=[0,30+i*10]['1, 1, 1'+', 1'*i in`[d[x+1]-d[x]for x in R(len(d)-1)]`]
e=D[8];a=map(e.count,e);d=D[11];print s+S(D[12])+[0,50][d.count(d[0])==5]+[0,25][2in a and 3in a or 5in a]

অনুরোধ হিসাবে, ইনপুট স্টিডিনে রয়েছে:

$ yScore.py < dice.txt
194

যদি ডেটা কোনও তালিকায় প্রিললোড করা যায়, যেমন কিছু অন্যান্য সমাধান করেছে, তবে আমি 622 টি অক্ষর সরিয়ে 302 এ যেতে পারি।


3

গণিত 359

y = IntegerDigits@ImportString[x, "Table"][[1]];
l = Length; g = Gather; r = Range; b = SortBy; h = l@b[g[y[[#]]], l][[-1]] &;
Tr@Flatten@{# Count[y[[#]], #] & /@ r@6, If[h@7 == 3, 15, 0], 
If[h@8 == 4, 20, 0], If[(l /@ b[g[y[[9]]], l]) == {2, 3}, 25, 0], 
If[MatchQ[Sort@y[[10]], {___, n_, m_, o_, q_, ___} /; m == n + 1 && o == m + 1 && q == o + 1], 30, 0], 
If[Sort[y[[11]]] == r[y[[11, 1]], y[[11, 1]] + 4], 40, 0], 
If[l@g[y[[12]]] == 1, 50, 0], y[[13]]}

সংক্ষিপ্ত সোজা জন্য চেক করার জন্য আরও কার্যকর উপায় থাকতে হবে।


1

গল্ফস্ক্রিপ্ট 180

n/{~]}%6,{)`['{''=},,''*']*}%[{.{+}*\{..|{'{'\'=},,'++1$\~}%$\;}:g~)\;2>*}{.{+}*\g)\;3>*}{g[2 3]=25*}{$:§;3,{).4+,\>§-}%1?)!!30*}{.$(\;.5+,\>\-!40*}{g)\;5=50*}{{+}*}]+]zip{~~}%{+}*

আপনি প্রোগ্রামটি এখানে পরীক্ষা করতে পারেন

স্বীকৃত প্রোগ্রাম:

n/                          # split input by newline
{~]}%                       # parse an int array from each line

6,{)`['{''=},,''*']*}%      # create {X=},,X* code blocks, 
                            # where X goes from 1 to 6 
                            # (needed for processing the first 
                            # half of the board)

[       # create an array of code blocks, for scoring:

        # three of a kind:
    {.{+}*\{..|{'{'\'=},,'++1$\~}%$\;}:g~)\;2>*}

        # four of a kind:
    {.{+}*\g)\;3>*}

        # full house:
    {g[2 3]=25*}

        # small straight:
    {$:§;3,{).4+,\>§-!}%1?)!!30*}

        # straight: 
    {.$(\;.5+,\>\-!40*}

        # yahtzee:
    {g)\;5=50*}

        #chance:
    {{+}*}
]+              # concatenate the 1-6 code block array with this one

]zip            # distribute each line in the input 
                # to the corresponding scoring rule (code block)

{~~}%           # evaluate each input/code pair
                # and get an array with score for each hand

{+}*            # sum up the partial scores.

1

পার্ল 527 টি অক্ষর

while(<>){$l++;$q=$c=0;$q=1if(($_=~/1/&&$_=~/2/&&$_=~/3/&&$_=~/4/)||($_=~/5/&&$_=~/2/&&$_=~/3/&&$_=~/4/)||($_=~/5/&&$_=~/6/&&$_=~/3/&&$_=~/4/));@a=split//;for(@a){$c++if/$l/;}$s+=$l*($c)if$l<7;$s+=35if$s>=63&&$l==6;for$i(1...6){$t=0;$f+=$c if($l==9&&($c==2||$c==3));$c=0if!($l==11&&$c>1);for(@a){$t+=$_;$c++if/$i/;}$s+=$t if($c>=3&&$l==7);$s+=$t if($c>=4&&$l==8);$s+=50if($c==5&&$l==12);$s+=$t if($l==13&&$i==6);}$s+=25if($f==5&&$l==9);$s+=30if($q==1&&$l==10);$s+=40if($c<2&&($t==15||$t==20)&&$l==11);exit(print $s)if($l==13);}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.