গল্ফ একটি গল্ফ-স্কোরার


25

ছোটবেলায় আমি কার্ড গেমটি " গল্ফ " প্রচুর খেলতাম । আপনার চ্যালেঞ্জ, আপনি যদি এটি গ্রহণ করা পছন্দ করেন তবে তা হ'ল গল্ফ হাতের স্কোর গণনা করা। যেহেতু এই কার্ড গেম 1 তে 9000 এরও বেশি প্রকরণ রয়েছে , তাই আমি যে নিয়মগুলি খেলি তা স্মরণ করি with

খেলার নিয়ম)

  • আপনি 6 টি কার্ড দিয়ে একটি রাউন্ডটি শেষ করবেন এবং আপনি যতটা সম্ভব পয়েন্ট চান।

  • জোকার ব্যবহার করা হয় না।

  • Aces এবং 2 গুলি যথাক্রমে -1, এবং -2 পয়েন্টের হয়।

  • জ্যাকস এবং কিংস উভয়ই 0 পয়েন্টের মূল্যবান।

  • 3 থেকে 10 পর্যন্ত কার্ডগুলির মুখের মূল্য। তবে এগুলি বাতিল হয়ে গেলে আপনি এগুলি বন্ধ করেন। উদাহরণস্বরূপ, একটি 5 এর মূল্য 5 পয়েন্ট, তবে দুটি 5 এর মূল্য শূন্য। তিনটি 5 এর মূল্য 5 পয়েন্ট, (যেহেতু প্রথম 2 টি জোড় বন্ধ রয়েছে, তবে তৃতীয়টি নয়।) এবং চারটি 5 এর মূল্য 0 (যেহেতু এটি 2 জোড়া করে)।

  • কুইন্স 15 পয়েন্টের মূল্যবান। কুইন্স বাতিল হতে পারে না, যেমন 2 রানী 30 পয়েন্টের মূল্যবান।

বিধি (চ্যালেঞ্জের)

ইনপুটটি পূর্ণসংখ্যা বা 6 স্বতন্ত্র পূর্ণসংখ্যার অ্যারে হবে। আপনি যাকে পছন্দ করেন। 1 একটি টেক্কা উপস্থাপন করে, 2-10 2-10 এবং জ্যাক, কুইন এবং কিং 11, 12 এবং 13 প্রতিনিধিত্ব করে Out উপরের নিয়ম অনুসারে আউটপুট হ'ল স্কোর। আপনি নিরাপদে ধরে নিতে পারেন যে সমস্ত ইনপুট বৈধ, যেমন কোনও সংখ্যা 4 বারের বেশি প্রদর্শিত হবে না এবং সমস্ত সংখ্যা সীমার মধ্যে রয়েছে [1, 13]। ইনপুট এবং আউটপুট যে কোনও যুক্তিসঙ্গত বিন্যাসে হতে পারে।

পরীক্ষার আইও:

[11, 10, 3, 1, 2, 2]    --> 8
[4, 5, 5, 3, 8, 7]      --> 22
[2, 2, 2, 2, 1, 1]      --> -10 (The lowest score possible)
[12, 12, 12, 12, 10, 9] --> 79 (The highest score possible)
[9, 9, 9, 9, 11, 1]     --> -1
[8, 8, 8, 8, 11, 13]    --> 0
[10, 9, 3, 7, 12, 2]    --> 42
[1, 2, 3, 4, 5, 6]      --> 15
[10, 9, 2, 3, 4, 1]     --> 23
[10, 3, 12, 3, 7, 12]   --> 47

বাইট জিতে স্বল্পতম উত্তর!


1 সত্যই নয়, তবে বিভিন্ন ধরণের পরিবর্তন রয়েছে।

উত্তর:


3

পাইথ, 28 27 25 বাইট

s+*L%/Qd2}3Tm?<d3_d*15q12

এটি অনলাইনে চেষ্টা করুন। পরীক্ষা স্যুট.

ব্যাখ্যা

  • প্রথমত, পাইথ কিছু ভেরিয়েবল স্বয়ংক্রিয়ভাবে সংযোজন করে। কোডটি এখন s+*L%/Qd2}3Tm?<d3_d*15q12dQ
  • }3Tতালিকা তৈরি করে [3, 4, 5, 6, 7, 8, 9, 10]
  • *Lইনপুট ( /Qd), মডুলো 2 ( %2) -তে সেই সংখ্যাটি গণনা করে সেই তালিকার প্রতিটি সংখ্যাকে ( ) গুন করুন । জোড় সংখ্যার জন্য ফলাফল 0 এবং অ জোড় সংখ্যাগুলির জন্য এটি নিজেই সংখ্যা।
  • ইনপুট সংখ্যাগুলির উপর মানচিত্র ( mQ):
    • সংখ্যাটি যদি (3 ?<d3) এর চেয়ে কম হয় তবে এটিকে উপেক্ষা করুন ( _d)।
    • অন্যথায় এটি 12 ( q12d) হয় কিনা তা পরীক্ষা করে দেখুন এবং বুলিয়ানকে 15 ( *15) দিয়ে গুণ করুন। ফলাফল রানির জন্য 15 এবং অন্য কোনও কিছুর জন্য 0।
  • তালিকাগুলি সংহত করুন ( +)। ফলাফলের তালিকায় এখন কিছু অতিরিক্ত শূন্য সহ জোড়বিহীন সংখ্যাগুলির (প্রথম অংশ) এবং বিশেষ কার্ড এ, 2, কিউ (দ্বিতীয় অংশ) এর স্কোর রয়েছে।
  • অবশেষে, ফলাফলের যোগফলটি নিন ( s)।

বিকল্প 25 বাইট সমাধান

-+s*L%/Qd2}3T*15/Q12s<#3Q

এটি প্রথমটির মতো একইভাবে কাজ করে তবে রানীদের আলাদাভাবে গণনা করে এবং একটি ফিল্টার দিয়ে টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো করে উপেক্ষা করে।


11

পাইথন 2, 72 70 বাইট

f=lambda x,*T:[x*(-1)**T.count(x),~x%2*15,-x][(x-3)/8]+(T>()and f(*T))

এক পর্যায়ে আমি আশা করি পাইথন 0**0 == 0একবারের জন্য চিকিত্সা করুক যাতে আমি এটি করতে পারি (-condition)**num। কল করুন f(11, 10, 3, 1, 2, 2)

পূর্ববর্তী 72-বাইট সংস্করণ:

f=lambda x,*T:[~x%2*15,x*(-1)**(x<3or T.count(x))][x<11]+(T>()and f(*T))

5

> <> , 63 57 56 + 2 = 65 59 58 বাইট

প্রোগ্রাম শুরুর সময় ইনপুট নম্বরগুলি স্ট্যাকের মধ্যে থাকবে বলে আশা করা হচ্ছে, তাই -vপতাকাটির জন্য +2 বাইট । এটি অনলাইন চেষ্টা করুন!

</!?lp6$+1g6:
3\0
?\::6g2%*{+}1+:b=
;\~16g-26g2*-c6gf*+n

কোড ক্ষেত্রের সমস্ত অব্যবহৃত মানগুলি যেহেতু শুরু করা হয়েছে 0, তাই প্রতিটি মানের কতটি স্ট্যাকের মধ্যে এটি পাওয়া যায় [value,6], এটি বৃদ্ধি করে এবং কোড ক্ষেত্রের মধ্যে ফিরিয়ে রেখে এটি ব্যবহার করা যায়। মোটটি তখন গণনা করা হয়:

T = 0 + {for x in 3 to 10, x*([x,6]%2)} - [1,6] - 2*[2,6] + 15*[12,6]

সম্পাদনা করুন: ইনপুট পুনর্গঠন করে এবং গণনা পদক্ষেপগুলি চারপাশে স্যুইচ করে by বাইট বন্ধ গল্ফড। পূর্ববর্তী সংস্করণ:

:6g1+$6pl0=?\
/-*2g62-g610/
c ;n$\
6:b=?/>::6g2%*{+}1+!
\gf*+3/

সম্পাদনা 2: 1 বাইট সংরক্ষিত, স্প 3000 ধন্যবাদ


আমি দেখেছি আপনি 0=?কয়েকবার ব্যবহার করেছেন বা অনুরূপ করেছেন - আপনি কি তার ?!পরিবর্তে ব্যবহার করতে পারবেন ?
Sp3000

@ এসপি 3000 আক, অবশ্যই আপনি ঠিক বলেছেন। ধন্যবাদ, আমি
সোকে

5

এমএটিএল , 27 26 বাইট

3:10=s2\7M*G12=15*Gt3<*_vs

ইনপুটটি একটি কলাম অ্যারে, অর্থাত্ সেমিকোলন দ্বারা মান পৃথক করা হয়।

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন (এটি সমস্ত ইনপুট নেওয়ার জন্য একটি লুপ যুক্ত করে এবং সর্বশেষতম ইনপুটটি পুশ Gকরে প্রতিস্থাপন করে 1$0G)।

ব্যাখ্যা

3:10=    % Take input implicitly. Compare with range [3 4 ... 10], with broadcast
s        % Sum of each column: how may threes, fours, ... tens there are
2\       % Modulo 2
7M       % Push [3 4 ... 10] again
*        % Element-wise multiply (the sum of this array is the score of 3...10)
G        % Push input again
12=      % Compare with 12, element-wise
15*      % Multiply by 15 (this is the score of 12)
G        % Push input again
t3<      % Duplicate. True for entries 1 or 2
*_       % Multiply and negate (the sum of this array is the score of 1, 2)
v        % Concatenate all stack concents into a vertical array
s        % Sum of array. Implicitly display

4

পাইথ - 37 36 35

এটি বেশ বড় মনে হয় তবে এফজিআইটিডাব্লু।

J<#h;K-QS2++*15/K12sm*d%/Jd2{J_s@S2

টেস্ট স্যুট


2
"এটি বেশ বড় মনে হয় তবে এফজিআইটিডাব্লু।" এত আগে গল্ফ?
বিড়াল

আমি এই দেখতে না হওয়া পর্যন্ত আমি আমার নিজের শেষ করলেন, কিন্তু তারা ব্যবহার ছাড়া প্রায় অভিন্ন Jএবং Kসম্পূর্ণ অপ্রয়োজনীয় বলে মনে হয়, এবং এছাড়াও আপনি গলফ পারেন +_করতে -;) আমি 31 পেয়েছিলাম+*15/Q12-sm*d%/Qd2{>#2<#11Qs@S2
FryAmTheEggman

1
@ ফ্রাইআম দ্য এজিগম্যান 24:+*15/Q12-s*R%/Qd2}3Ts@S2
জাকুব

3

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

a=>a.map(e=>r+=e<3?-e:e>10?e-12?0:15:(m[e]^=1)?e:-e,r=0,m=[])|r

বা আপনি যদি পছন্দ করেন,

a=>a.map(e=>r-=e<3?e:e>10?e-12?0:-15:(m[e]^=1)?-e:e,r=0,m=[])|r


0

পার্ল 5.10.0 + -n, 115 64 60 56 বাইট

$p+=$_-12?$_>2?$_<11?++$l[$_]%2?$_:-$_:0:-$_:15}{say$p

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

ব্যাখ্যা:

এর -nচারপাশে লুপ যুক্ত করা:

# Used variables:
# $_: input (auto)
# $p: points
# $l[n]: number of occurences of n (for 3-10)
while (<>) { # for every input
    $p += $_ - 12 ? # if the input is not 12 (queen) ...
        $_ > 2 ? # then: if it's > 2 (not ace or 2) ...
            $_ < 11 ? # then: if < 11 (3-10) ...
                ++$l[$_] % 2 ? # then: if it's an odd occurence (1st, 3rd, 5th, ...)
                    $_ # add it
                    : -$_ # else subtract it
            : 0 # no points for other stuff (J, K)
        : -$_ # negative points for ace and 2
    : 15 # 15 points for queen
}
{ # after input:
    say $p # output points
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.