পোকার হাতটির নাম দিন - 7 টি কার্ড সংস্করণ


11

চ্যালেঞ্জ:

এই প্রশ্নে: পোকার হাতটির নাম দিন যা আপনাকে একটি পাঁচ কার্ড কার্ডের পোকার হাতে নিতে হবে এবং এটি সনাক্ত করতে হবে। এই প্রশ্নটি দুটি টুইস্ট সহ একই রকম:

প্রথমত, আউটপুট সমস্ত নিম্ন ক্ষেত্রে হবে। এই, আরো golfing জন্য করতে পারবেন তোমাদের মূলধন সম্পর্কে চিন্তা করতে হবে না যেমন flushএবংstraight

high card
one pair
two pair
three of a kind
straight
flush
full house
four of a kind
straight flush
royal flush

দ্বিতীয়ত, টেক্সাস হোল্ড'ম এবং card টি কার্ড স্টাডের জনপ্রিয়তার সাথে, আমরা এখানে কোড গল্ফে একটি সাত কার্ড পোকার হাতে স্কোর করতে সক্ষম হব আমি ঠিক আছি? সাতটি কার্ডের স্কোর করার সময়, আপনার হাতের জন্য পাঁচটি সেরা কার্ড ব্যবহার করুন এবং আপনার যে দুটি প্রয়োজন নেই সেটিকে উপেক্ষা করুন।

রেফারেন্স:

পোকার হাতের তালিকা: http://en.wikedia.org/wiki/List_of_poker_hands

ইনপুট (সরাসরি পূর্ববর্তী থ্রেড থেকে উত্তোলন)

স্টিডিন বা কমান্ডলাইন আর্গুমেন্ট থেকে 7 টি কার্ড । কার্ডটি হ'ল ফর্মের একটি দুটি অক্ষরের স্ট্রিং RS, যেখানে আর পদমর্যাদাগুলি এবং এস স্যুট। পদমর্যাদার হয় 2- 9(নম্বর কার্ড), T(দশ), J(জ্যাক), Q(রানী), K(রাজা), A(ACE)। মামলা হয় S, D, H, Cকোদাল, হীরা, হৃদয় ও ক্লাব যথাক্রমে জন্য।

কার্ডের উদাহরণ

5H - five of hearts
TS - ten of spades
AD - ace of diamonds

ইনপুট এর উদাহরণ => পছন্দসই আউটপুট

3H 5D JS 3C 7C AH QS => one pair
JH 4C 2C 9S 4H JD 2H => two pair
7H 3S 7S 7D AC QH 7C => four of a kind
8C 3H 8S 8H 3S 2C 5D => full house
AS KC KD KH QH TS JC => straight

দ্বিতীয় উদাহরণে লক্ষ্য করুন সেখানে আসলে তিনটি জোড়া রয়েছে তবে আপনি কেবল পাঁচটি কার্ড ব্যবহার করতে পারেন তাই এটি two pair। পঞ্চম উদাহরণে, একটি three of a kindএবং straightসম্ভাব্য উভয়ই রয়েছে তবে একটি straightভাল, তাই আউটপুট straight

স্কোরিং

এটি , তাই সংক্ষিপ্ততম কোড জয়!

ত্রুটি-বিচ্যুতি

  1. আপনি বাহ্যিক সংস্থান ব্যবহার করতে পারেন না।
  2. টানা স্ট্রাইটের জন্য এস উচ্চ এবং নিম্ন উভয়ই।

নিস; আমি গোপনে আশা করেছিলাম যে কেউ বলটি তুলে ফেলবে। কেবলমাত্র নোট করতে চেয়েছিলেন যে মূল প্রশ্নে আমার মূলধনের উপর কোনও বিধিনিষেধ নেই (একটি মন্তব্যে স্পষ্ট করে), সুতরাং আপনি (এবং বেশিরভাগ ক্ষেত্রেই) আউটপুট "স্ট্রেইট ফ্লাশ" করতে পারবেন। আইএমএইচওর মূলধন আরও ভাল দেখাচ্ছে।
ডানিরো

আপনি ইনপুট বলছেন (সরাসরি পূর্ববর্তী থ্রেড থেকে সরাসরি) 5 টি কার্ড। আমি মনে করি আপনি এটি 7 এ পরিবর্তন করতে চেয়েছিলেন
লেভেল রিভার সেন্ট

@ স্টেভেভারল আপনি স্ট্যাক এক্সচেঞ্জ এ পোস্টগুলি নিজে সম্পাদনা করতে পারেন। যদিও আমি এটি আপনার জন্য এখানে করেছি
durron597

বাহ্যিক সংস্থানগুলি কি অনুমোদিত? এমন সন্ধানের সারণী রয়েছে যা আপনাকে কেবল প্রতিটি কার্ড হাতে দেখায় এবং হাতের শক্তি পেতে দেয়।
কেন্ডাল ফ্রে

স্ট্রাইটের জন্য এস কি কম পাশাপাশি উচ্চ হতে পারে?
নিক টি

উত্তর:


4

রুবি 353

এটি মূল প্রশ্ন থেকে ক্রনের উত্তরের ভিত্তিতে তৈরি হয়েছিল ।

কমান্ড লাইন আর্গুমেন্ট হিসাবে এটি ইনপুট নেয়। মূলত আমরা 5 ধরণের সমস্ত সংমিশ্রণে পুনরাবৃত্তি করি যাতে এটি কী ধরণের হাত হয়। প্রতিটি হাতের ধরণটি সংশোধন করা হয়েছিল যাতে এটি একটি সংখ্যার সাথে শুরু হয়। ("রয়েল ফ্লাশ" -> "0 ক্রিয়াল 4 ফ্লাশ", "হাই কার্ড" -> "9 হাই কার্ড")। এটি আমাদের ফিরে আসা স্ট্রিংগুলি বাছাই করতে সহায়তা করে। বাছাইয়ের পরে প্রথম স্ট্রিং হ'ল সেরা সম্ভাব্য হাত। সুতরাং আমরা মুদ্রণ যে স্ট্রিং থেকে সমস্ত সংখ্যা অপসারণ পরে।

o,p=%w(4flush 1straight)
f=/1{5}|1{4}0+1$/
puts $*.combination(5).map{|z|s=[0]*13;Hash[*z.map{|c|s['23456789TJQKA'.index c[0]]+=1;c[1]}.uniq[1]?[f,'5'+p,?4,'2four'+a=' of a kind',/3.*2|2.*3/,'3full house',?3,'6three'+a,/2.*2/,'7two pair',?2,'8one pair',0,'9high card']:[/1{5}$/,'0royal '+o,f,p+' '+o,0,o]].find{|r,y|s.join[r]}[1]}.sort[0].gsub(/\d/,'')

খুশী হলাম। শেষে gsub একটি উপ ডান হতে পারে?
বাজরাঘ

@ বাজবার্গের কোনও সংখ্যা এটি অপসারণ করার দরকার নেই। "0 ক্রিয়াল 4 ফ্লাশ" বা "1 মাইট্রাইট 4 ফ্লাশ" পেতে কোডটি 1 মাইলাইট বা 0 ক্রিয়ালের সাথে 4 ফ্লাশকে সম্মিলিত করে। আমরা কেবলমাত্র 4 টি সাব ব্যবহার করলে অপসারণ করা হবে না।
এফডিনফ

এর জন্য ভুল ফলাফল দেয় AS QS JS TS 9S 5H 5D। এটি আপনাকে একটি চরিত্রের জন্য ব্যয় করতে চলেছে!

@ WumpusQ.Wumbley Hmm এটিকে আসল কোডে একটি বাগ বলে মনে হচ্ছে। আমি চেষ্টা করব এবং পরে সমস্যাটি কী তা বুঝতে পারি।
এফডিনফ

5

হাস্কেল 618 603 598 525 512 504 480 464

ইনপুট একটি লাইন হিসাবে নেওয়া কার্ড। আমি মনে করি আমি এটিকে মৃত্যুর মুখোমুখি করেছি, তবে একই কৌশল ব্যবহার করে রুবি ইত্যাদি সহজেই তাকে পরাভূত করবে: আপনি যদি সমস্ত অনুমান তৈরি করেন, আপনি স্ট্রেইটগুলি সন্ধান করতে চান এমন ফরোয়ার্ড প্রকার পাবেন, সাথে সাথে পরীক্ষার জন্য আপনি যে বিপরীত প্রকারটি চান এক ধরনের.

import Data.List
m=map
z=take 5
q=m(\x->head[n|(f,n)<-zip"A23456789TJQK"[1..],f==x!!0])
l=m length
v=" of a kind"
w="flush"
y="straight"
c f s p r|f&&r="9royal "++w|f&&s='8':y++" "++w|f='5':w|s||r='4':y|True=case p of 4:_->"7four"++v;3:2:_->"6full house";3:_->"3three"++v;2:2:_->"2two pair";2:_->"1one pair";_->"0high card"
d x=c([5]==l(group$m(!!1)x))(q x==z[head(q x)..])(l$group$q x)$q x==1:[10..13]
k h=tail$maximum$m(d.z)$permutations$words h
main=interact k

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


আপনি নিজেকে মুক্তি দিলে আপনি নিজেকে কয়েকটি দম্পতি (প্রায় 5 টি ভাবেন) সংরক্ষণ করতে পারেন। "one pair","two pair"তারপরে আরও ছোটu=" pair" ... "one"++u,"two++u
এফডিনফ

হ্যাঁ, আমি আপনার কোড পড়ার পরে কেবল সেই পরিবর্তনটি করছিলাম। এছাড়াও সংখ্যার উপসর্গ কৌশলটি আমাকে আরও 5 টি বাঁচায়
বাজরাঘ

2

সি ++, 622 553 অক্ষর

চারটি অপ্রয়োজনীয় নিউলাইনগুলি স্পষ্টতার জন্য নীচে যুক্ত করা হয়েছে।

#include"stdafx.h"
#include"string"
std::string c=" flush",d=" of a kind",e="straight",z[10]={"high card","one pair","two pair","three"+d,e,c,"full house","four"+d,e+c,"royal"+c},
x="CDHSA23456789TJQK";char h[99];int main(){__int64 f,p,t,g,u,v,w,l=1,a=78517370881,b=a+19173960,i,j,q=0;gets_s(h,99);for(i=28;i-->7;){f=p=0;
for(j=7;j--;)if(j!=i%7&j!=(i+i/7)%7){f+=l<<x.find(h[j*3+1])*6;p+=l<<x.find(h[j*3])*3-12;}
v=p&b*2;u=v&v-1;w=p&p/2;g=p*64&p*8&p&p/8&p/64;f&=f*4;t=f&&p==a?9:f&&g?8:p&b*4?7:u&&w?6:f?5:g||p==a?4:w?3:u?2:v?1:0;
q=t>q?t:q;}puts(z[q].c_str());}

গল্ফযুক্ত সংস্করণে জিনিসগুলি পরিবর্তিত হয়েছে:

Rev 1: সমস্ত সংখ্যার ভেরিয়েবল __int64একক ঘোষণার জন্য পরিবর্তিত হয়েছে ।

Rev 1: গল্ফযুক্ত বৃদ্ধি এবং forলুপের শর্ত

Rev 0: অষ্টাল ধ্রুবককে দশমিক দশকে পরিবর্তন করেছে।

Rev 0: ifশর্তসাপেক্ষ অপারেটরের সাথে অ্যাসাইনমেন্টে বিবৃতি পরিবর্তন করা হয়েছে। Rev 1: এর জন্য একটি একক অভিব্যক্তিতে আরও সাজানো tvমধ্যবর্তী মানগুলির মধ্যে একটির জন্য এটির জন্য নতুন পরিবর্তনশীল প্রয়োজন

Rev 0: ভার্বোজের আউটপুট মোছা। কেবল সেরা সামগ্রিক হাতকেই আউটপুট দেয়।

রেভ 0: আউটপুট পাঠ্যকে সংকুচিত করতে পেরেছি (সিতে মুশকিল কারণ আপনি + অপারেটর ব্যবহার করে স্ট্রিংগুলিকে কনটেনেট করতে পারবেন না ")" ফ্লাশ "লিখে কেবল একবার আমার 12 টি অক্ষর বাঁচিয়েছেন তবে আমার 15 ব্যয় হয়েছে, সামগ্রিকভাবে আমার তিনটি অক্ষর খারাপ হয়ে যায়। সুতরাং আমি এটি পরিবর্তে 3 বার লিখেছি। রেভ 1: এফডিনোফের পরামর্শ অনুযায়ী std::stringপরিবর্তে ব্যবহৃত char[]হয়েছে, এটি দিয়ে সম্মতি জানানো সম্ভব করে +

অরোগল্ফড সংস্করণ, 714 ননকমেন্ট ননহাইটস স্পেস অক্ষর।

সমস্ত 21 টি হাত দিয়ে লুপ করুন যা 7 টি কার্ড থেকে তৈরি করা যায় এবং প্রতিবার 2 টি কার্ড প্রত্যাখ্যান করে। পাঁচটি নির্বাচিত কার্ডের স্যুট এবং র‌্যাঙ্কগুলি চলক চ এবং পিতে প্রতিটি স্যুট / র‌্যাঙ্কের জন্য আলাদা আলাদা অক্টাল ডিজিটযুক্ত ised হাতের ধরণ নির্ধারণ করতে বিভিন্ন বিট ক্রিয়াকলাপ সম্পাদন করা হয় যা পরে টিতে সঞ্চিত হয় (সমস্ত 21 টি সম্ভাব্যতা নিখরচায় সংস্করণে আউটপুট)) অবশেষে সবচেয়ে ভাল সম্ভাব্য হাত আউটপুট।

#include "stdafx.h"
#include "string.h"

char x[] = "CDHSA23456789TJQK", h[99], z[10][99] = 
{ "high card", "one pair", "two pair","three of a kind", "straight","flush","full house","four of a kind","straight","royal" };

int main(void)
{
        int i,j,q=0;                  //i,j:loop counters. q:best possible hand of 7 card   
        scanf_s("%s/n", &h, 99); getchar();
        for (i = 7; i < 28; i++){

          //f,p: count number of cards of each suit (2 octal digits) and rank (1 octal digit.)
          //t: best hand for current 5 cards. g:straight flag. u,w: flags for pairs and 3's.   
          //l: constant 1 (64bit leftshift doesn't work on a literal.) 
          //octal bitmasks: a=ace high straight, b=general purpose

            __int64 f=0,p=0,t=0,g,u,w,l=1,a=01111000000001,b=a+0111111110;

           for (j = 0; j < 7; j++){
               if (j != i %7 & j != (i+i/7) %7){

                   f += l << (strchr(x,h[j*3+1])-x)*6;
                   p += l << (strchr(x,h[j*3])-x-4)*3;

                   printf_s("%c%c ",h[j*3], h[j*3+1]);
               }
           }

           w=p&b*2;                          //if 2nd bit set we have a pair
           if (w) t=1;
           u= w & w-1;                       //if there is only one pair w&w-1 evaluates to 0; +ve for 2 pair.
           if (u) t=2;
           w = p & p/2;                      // if 2nd and 1st bit set we have 3 of kind. 
           if (w) t=3;
           g = p*64 & p*8 & p & p/8 & p/64;  // detects all straights except ace high. pattern for ace high in a.
           if (g||p==a) t=4;
           f&=f*4;                           //for a flush we want 5 cards of the same suit, binary 101
           if (f) t=5;
           if (u&&w) t=6;                    //full house meets conditions of 2 pair and 3 of kind
           if (p & b*4) t=7;                 //four of a kind
           if (f && g) t=8;                  //straight flush
           if (f && p==a) t=9;               //royal flush
           printf_s("%s %s \n",z[t],t>7?z[5]:"");
           q=t>q?t:q;
        }   
        printf_s("%s %s",z[q],q>7?z[5]:"");
        getchar();
}

অবরুদ্ধ আউটপুট

এখানে চিত্র বর্ণনা লিখুন


যেহেতু আপনি বলছেন যে আপনি সি ++ ব্যবহার করছেন আপনি এমন <string>স্ট্রিং কনকেন্টেশনের জন্য সমর্থন করতে পারবেন যা সমর্থন + করে। যার অর্থ হল আপনি সম্ভবত ব্যবহার করতে পারবেন <iostream>এবং ব্যবহার করতে পারবেন coutতবে আমি আসলে জানি না যে এরগুলির মধ্যে থেকে কোনও ছোট চরিত্রের গণনা করবে কিনা।
এফডিনফ

@ এফডিনফ আমাকে কী সংরক্ষণ করতে পারছেন: " pair flush flush straight of a kind"= 35 টি অক্ষর। একবার আপনি #includeসঞ্চয়গুলিতে যুক্ত হ'ল ন্যূনতম হ'ল, তারপরে আপনার অতিরিক্ত ",=+এবং ধ্রুবকের ঘোষণা বিবেচনা করতে হবে । এছাড়াও আমি C ++ পর্যন্ত নতুন এবং আইডিই এবং কম্পাইলার সেটিংস সঙ্গে সংগ্রাম করছি (এটা আমাকে ব্যবহার করতে বাধ্য করে scanf_sএবং printf_sপুরানো 'অনিরাপদ' সংস্করণ এবং ফিক্সিং এটা চেনাশোনার মধ্যে চারদিকে ঘোরে সম্পর্কে। সাহায্যের পরিবর্তে) coutএকটু সাহায্য করতে পারে, এটা আমার কাছে আছে তা তালিকা, কিন্তু সম্ভবত অন্য প্রোগ্রামের জন্য। coutআমার জন্য যে জিনিসটি মারা যায় using namespace stdতা হ'ল আমি জানি না যে এই সমস্ত লেখা এড়ানো উপায় আছে কিনা।
স্তরের নদী সেন্ট

আপনি সি ++ ব্যবহার করছেন বলে আপনার আর কখনও প্রিন্টফ এবং স্ক্যানফের প্রয়োজন হবে না। অন্যান্য (নিরাপদ) একই জিনিস করা ছিল। আপনি ব্যবহার করতে পারে std::coutকাছাকাছি পেতেusing namespace std
FDinoff

টিপটির জন্য @ এফডিনফ থ্যাঙ্কস। আমার সর্বশেষ সম্পাদনায় আমি 18 বাইট ডাব্লু পৃথক স্ট্রিং হ্যান্ডলিং সংরক্ষণ করেছি: gets_s& puts, প্লাস সংক্ষিপ্তকরণ std::string, যার অর্থ আমাকে char*আউটপুটে রূপান্তর করতে হবে। আমি যে গল্ফটি পোস্ট করেছি তা কেবলমাত্র stringবা iostream.উদ্ভটভাবে কাজ করে আমাকে দু'জনকে অবশ্যই & এর <<>>সাথে অপারেটর ব্যবহার করতে অন্তর্ভুক্ত করতে হবে । সামগ্রিকভাবে, উভয় গুলি ব্যবহার করে 5 বাইট আরও খারাপ হয়, যদিও আমি হিসাবে ঘোষণা করতে পারি এবং পৃথক ঘোষণা এড়াতে পারি । অনুমানযোগ্যভাবে, আমি সাহায্যে কী রয়েছে তার একটি তালিকা (বা অপারেটর সম্পর্কে কোনও ব্যাখ্যা) খুঁজে পাচ্ছি নাcin/coutstd::string#includehstd::stringcharnamespace std
লেভেল রিভার সেন্ট

@FDinoff আমি একমত, আমি সাধারণত ব্যবহার করা হবে না scanfএবং gets, golfing, যেখানে প্রোগ্রাম চমত্কার অনিরাপদ যাহাই হউক না কেন হয় ছাড়া। আমি পরিবর্তে -s,99ব্যবহার করতে পারলে আমি 5 বাইট দ্বারা সংক্ষিপ্ত করতে পারি , তবে আমি আমাকে সংকলকটি পেতে পারি না। আমার অবাক করে দেওয়ার বিষয় হ'ল সাধারণভাবে সি / সি ++ কতটা নিরাপদ! কয়েক সপ্তাহ আগে এটি 31 টিরও বেশি y এর জন্য ভুল উত্তর দেয় তা দেখে আমাকে অবাক করে দিয়েছিল But তবে এখন আমি কেবল মৃদু বিরক্ত। অ্যারে সাবস্ক্রিপ্টগুলির সাথে কোনও ত্রুটি বার্তা ছাড়াই জিনিসগুলি সীমা ছাড়িয়ে যেতে দেখে, আমি এটি অভ্যস্ত হয়ে পড়েছি। আরও ভাল চেক চালু করার কোন উপায় আছে? getsgets_s_int64 x=1<<y
স্তরের নদী সেন্ট

2

পার্ল (> = 5.14), 411 403 400 397 400

সম্পাদনা করুন : অন্তর্ভুক্ত একটি উপ যা 8 টি অক্ষর সংরক্ষণ করে কেবল একবার ডাকা হত।
সম্পাদনা 2 : .""একটি প্রারম্ভিক প্রয়াস থেকে বাকিটি সরিয়ে ফেলে
3 সম্পাদনা করুন 3 : মূল সংরক্ষণ করে এমন একটি টেম্প ভেরিয়েবলের পরিবর্তে, $_এটি অপ্রয়োজনীয় করতে একটি ব্যবহার করুন। নেট লাভ 3 অক্ষর
4 সম্পাদনা করুন : ওভার-পূর্ণ পূর্ণ ঘর সনাক্তকরণে স্থির ব্যর্থতা (2x 3-অফ-এ-টাইপ)। 3 অক্ষর খরচ।

বেশ বিজয়ী নয়, তবে স্ট্রেট ডিটেক্টর একটি আকর্ষণীয় ধারণা, আমি মনে করি।

sub
j{join"",sort@_}sub
o{j(map{{A=>10}->{$_},11+index(j(2..9).TJQKA,$_)}$h=~/(.(?=@_))/g)=~/.*(..)(??{j
map$1+$_.'.*',1..4})/?$1:()}$h=$_=<>;if(j(/(\S)\b/g)=~/(.)\1{4}/){$w=$_==19?royal:straight
for
o$f=$1}$_=j(/\b(\S)/g)=~s/(.)\1*/length$&/rge;$k=" of a kind";print$w?"$w flush":/4/?four.$k:/3.*2|[23].*3/?"full house":$f?flush:(o".")?straight:/3/?three.$k:/2.*2/?"two pair":/2/?"one pair":"high card"

প্রসারিত সংস্করণ:

# We'll be doing a lot of sorting and joining
sub j {
  return join "", sort @_;
}

# r() expects $_ to contain a rank, and converts it to a numeric code. The
# code starts at 10 so the numbers will sort correctly as strings, and a list
# of 2 values is returned because A is both 10 and 23. All other ranks have
# undef as the first value and their proper 11..22 value as the second value.
sub r {
  return ({A=>10}->{$_}, 11+index(j(2..9).TJQKA,$_));
}

# Sequence-detector. Factored into a sub because it's run twice; once over
# the ranks in the flush suit to find a straight flush and once over all the
# ranks to find a straight. On successful match, returns the lowest rank of
# the straight (in the 10..23 representation).
# Required parameter: the suit to search, or "." for all suits.
sub o {
  j(map r,$h=~/(.(?=@_))/g)          # The list of ranks, in increasing order,
                                     # with ace included at both ends...
    =~                               # ...is matched against...
  /.*(..)(??{j map$1+$_.'.*',1..4})/ # ...a pattern requiring 5 consecutive
                                     # numbers.
  ?$1:()
  # A note about this regexp. The string we're matching is a bunch of numbers
  # in the range 10..23 crammed together like "121314151619" so you might
  # worry about a misaligned match starting on the second digit of one of the
  # original numbers. But since that would make every pair of digits in the
  # match end with a 1 or a 2, there's no way 5 of them will be consecutive.
  # There are no false matches.
  # Another note: if we have a royal flush and also have a 9 in the same
  # suit, we need to return the T rank, not the 9, which is why the regexp
  # starts with a .*
}

# Read a line into $_ for immediate matching with /.../ and also save it into
# $h because $_ will be clobbered later and we'll need the original string
# afterwards.
$h = $_ = <>;

if(j(/(\S)\b/g) =~ /(.)\1{4}/) { # flush detector: sorted list of all suits
                                 # contains 5 consecutive identical chars
  # $f=$1 comes first, so $f will be true later if there's a flush.
  # Then o() is called with the flush suit as arg to detect straight flush.
  # If there's no straight flush, o() returns the empty list and for loop
  # runs 0 times, so $w is not set. If there is a straight flush, the return
  # value of o() is compared to 19 to detect royal flush.
  $w = ($_==19 ? "royal" : "straight")
    for o($f=$1);
}

$_ =
  j(/\b(\S)/g)                 # Get the sorted+joined list of ranks...
    =~ s/(.)\1*/length $&/rge; # ... and turn it into a list of sizes of
                               # groups of the same rank. The /r flag
                               # requires perl 5.14 or newer.

print
  $w             ? "$w flush" :
  /4/            ? "four of a kind" :
  /3.*2|[23].*3/ ? "full house" :
  $f             ? "flush" :
  (o".")         ? "straight" :
  /3/            ? "three of a kind" :
  /2.*2/         ? "two pair" :
  /2/            ? "one pair" :
                   "high card"

1

জাভাস্ক্রিপ্ট 600

নোডজেএস সহ ব্যবহার: node code.js "7H 3S 7S 7D AC QH 7C"

function a(o){s="";for(k in o)s+=o[k];return s}
b=process.argv[2]
c={S:0,H:0,D:0,C:0}
v={A:0,K:0,Q:0,J:0,T:0,"9":0,"8":0,"7":0,"6":0,"5":0,"4":0,"3":0,"2":0}
d=b.split(" ")
for(i=d.length;i--;){e=d[i];c[e[1]]++;v[e[0]]++}
c=a(c);v=a(v)
f=g=h=j=k=l=m=false
if((st=c.indexOf(5))!=-1)g=!g
if(v.match(/[1-9]{5}/))h=!h
if(st==0)f=!f
if(v.indexOf(4)!=-1)j=!j
if(v.indexOf(3)!=-1)k=!k
if(n=v.match(/2/g))if(n)if(n.length>=2)m=!m;else l=!l
p=" of a kind"
q="Flush"
r="Straight"
console.log(f&&g?"Royal "+q:h&&g?r+" "+q:j?"Four"+p:k&&(l||m)?"Full House":g?q:h?r:k?"Three"+p:m?"Two pairs":l?"Pair":"High card")
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.