Texas Holdem Online
Free Holdem Online
PokerStrategy
BankrollMob
Your Poker Cash
888 Poker Online
PokerSource
Gratis poker bonus Texas Holdem poker bonus
Play texas holdem
Play Online Poker with Titan Poker
Poker ohne einzahlung
Gutshot Straight(2014) - Steven Seagal - 5/10
Rounders (1998) - Matt Damon, Edward Norton, John Malkovich - 8/10
The Cincinnati Kid (1965) - Steve McQueen - 8/10
All In: The Poker Movie (2009) - Matt Damon - 7/10
Maverick (1994) - Mel Gibson, Jodie Foster, Graham Greene - 7/10
Casino Royale (2006) - Daniel Craig, Eva Green - 8/10
High Roller: The Stu Ungar Story (2003) - 6/10
Lucky You (2007) - Eric Bana, Drew Barrymore - 6/10
Runner Runner (2013) - Justin Timberlake, Ben Affleck, Gemma Arterton - 6/10
The Grand (2007) - Dennis Farina - 6/10
Shade (2003) - Melanie Griffith, Sylvester Stallone - 7/10
Deal (2008) - Burt Reynolds - 7/10
Bet Raise Fold (2013) - 7/10
Players (2012) - Movie - 6/10
Freeze Out (2005) - 8/10
Luckytown (2000) - Kirsten Dunst - 7/10
Casino (1995) - Robert De Niro, Sharon Stone - 8/10
Ocean's Eleven (2001) - George Clooney, Brad Pitt, Matt Damon, Julia Roberts - 8/10
Ocean's Twelve (2004) - George Clooney, Brad Pitt, Catherine Zeta-Jones, Matt Damon - 7/10
Ocean's Thirteen (2007) - George Clooney, Brad Pitt, Al Pacino - 7/10
21 (2008) - Kevin Spacey, Laurence Fishburne - 8/10
Owning Mahowny (2003) - Philip Seymour Hoffman - 7/10
Lock Stock and Two Smoking Barrels (1998) - Jason Flemyng, Jason Statham - 8/10
Revolver (2005) - Jason Statham, Ray Liotta - 7/10
The Color of Money (1986) - Tom Cruise - 7/10
Bugsy (1991) - Warren Beatty, Annette Bening - 7/10
The Hangover (2009) - Bradley Cooper - 8/10
The Hangover Part II (2011) - Bradley Cooper - 7/10
The Hangover Part III (2013) - Bradley Cooper - 7/10
Las Vegas Parano (1998) - Johnny Depp, Benicio Del Toro - 8/10
Rat Race (2001) - Rowan Atkinson, Cuba Gooding Jr. - 7/10
California Split (1974) - 7/10
The Cooler (2003) - William H. Macy, Alec Baldwin - 7/10
Vegas Vacation (1997) - Chevy Chase - 7/10
The Gambler (2014) - Mark Wahlberg - 7/10
Lesser Prophets (1997) - Scott Glenn, John Turturro - 6/10
Croupier (1998) - Clive Owen - 7/10
Two for the Money (2005) - Al Pacino, Matthew McConaughey, Rene Russo - 7/10
Atlantic City (1980) - Burt Lancaster - 8/10
Havana (1990) - Robert Redford - 7/10
Bad Lieutenant (1992) - Harvey Keitel - 7/10
House of Games (1987) - Joe Mantegna - 7/10
Sydney (1996) - Philip Seymour Hoffman, Samuel L. Jackson, Gwyneth Paltrow - 7/10
Eight Men Out (1988) - John Cusack, Charlie Sheen - 7/10
Very Bad Things (1998) - Cameron Diaz, Christian Slater - 7/10
The Good Thief (2002) - Nick Nolte, Ralph Fiennes - 6/10
Phoenix (1998) - Ray Liotta, Anthony LaPaglia - 7/10
The Big Town (1987) - Matt Dillon, Tommy Lee Jones - 6/10
Factotum (2005) - Matt Dillon, Fisher Stevens - 7/10
The Music of Chance (1993) - Mandy Patinkin, M. Emmet Walsh - 8/10
Dinner Rush (2000) - Danny Aiello - 7/10
Intacto (2001) - Leonardo Sbaraglia - 7/10
All or Nothing (2013) - 7/10
Even Money (2006) - Kim Basinger, Danny DeVito, Forest Whitaker - 7/10
Winged Creatures (2008) - Kate Beckinsale, Guy Pearce - 6/10
Guns, Girls and Gambling (2012) - Gary Oldman, Christian Slater - 5/10
Killing Them Softly (2012) - Brad Pitt - 6/10
Leaving Las Vegas (1995) - Nicolas Cage, Elisabeth Shue - 8/10
The Game (1997) - Michael Douglas, Sean Penn, Deborah Kara Unger - 8/10
In Time (2011) - Justin Timberlake, Amanda Seyfried, Olivia Wilde - 8/10
Rain Man (1988) - Dustin Hoffman, Tom Cruise - 8/10
What Happens in Vegas (2008) - Cameron Diaz, Ashton Kutcher - 7/10
Waking Ned (1998) - 8/10
Casino Jack (2010) - Kevin Spacey - 6/10
no deposit poker new poker bankroll gratis bonus
Poker ohne einzahlung
τραγούδια για το πόκερ
ABC πόκερ
Συστήματα ρουλέτας
Πώς να κερδίσει στη ρουλέτα
Martingale σύστημα ρουλετών
σύστημα Shaun
σοκάκι το σύστημα ρουλέτας
Fibonacci Σύστημα
Συστήματα για τη ρουλέτα - σύστημα Parlay
Συστήματα Ρουλέτα - Το σύστημα 63
Συστήματα για τη ρουλέτα - Labouchere Σύστημα
Συστήματα για τη ρουλέτα - D'Alembert
πόκερ παίκτη και παίκτης ψυχολογίας
ανέκδοτα πόκερ
παιχνίδια καρτών
μπόνους για εγγραφές
Downswing πόκερ
Πόκερ Φόρουμ - σχόλια από τα καλύτερα του κόσμου
Πόκερ και το έργο - μια πρόσθετη πηγή εισοδήματος
στιγμή πόκερ δεν μπόνους κατάθεσης
δωρεαν χρηματα ποκερ
μια πειθαρχία που είναι η πιο προβλέψιμη
στοίχημα Γλωσσάρι
Παίκτης Δεκάλογος - οι κανόνες στοιχημάτων για αρχάριους
Η μεγαλύτερη νίκη στο πρακτορείο στοιχημάτων
αλγορίθμου παίζοντας πόκερ στην PHP
συνεντεύξεις με τα αστέρια του πόκερ
ρούχα πόκερ - παγκόσμια καταστήματα πόκερ
no deposit poker new poker bankroll gratis bonus
δωρεάν χρήματα πόκερ
Κανόνες του Πόκερ Texas Holdem - Το Flop - Turn - Ποτάμι
Dealer πόκερ και τυφλή
Γλωσσάριο όρων πόκερ
Παίζοντας με πραγματικά χρήματα (πόκερ στο Internet)
Freeroll - Δωρεάν Τουρνουά Πόκερ
Ιστορία του World Series of Poker
Επιστήμης 2-7 Lowball Draw Πόκερ
888 Poker Network - sites εντός του δικτύου
BOSS Διεθνές Δίκτυο Poker - θέσεις εντός του δικτύου
Entraction Network - θέσεις εντός του δικτύου
iPoker Network - sites εντός του δικτύου
Merge Gaming Network - sites εντός του δικτύου
Ongame Network - sites εντός του δικτύου
Οι περισσότεροι Πώληση Πόκερ Βιβλία
Πώς Twitter είναι Διαμορφώνοντας τον κόσμο του πόκερ
Viktor Blom συνέντευξη - Isildur1 συνέντευξη
no deposit poker new poker bankroll gratis bonus
Texas hold em poker Texas Holdem Online
Spanish
Belarusian
Estonian
Bulgarian
Greek
Croatian
Finnish
Swedish
Portuguese
Taiwanese
Hungarian
Turkish
Ukrainian
Russian
Arabic
Poland
Japanese
Switzerland
Austria
Italian
Dutch
Belgium
Czech
Slovak
Brazil
German
French
Danish
Filipino
Georgian
Indonesian
Kannada
Latvian
Lithuanian
Romanian
Serbian
Slovenian
Vietnamese
Hebrew
Gratis startkapital Texas Holdem poker bonus
Texas Holdem Poker

Online Poker



Texas Hold em Poker


 
texas holdem poker αλγορίθμου παίζοντας πόκερ στην PHP
 



Και μόνο η έκθεση μου στο παιχνίδι του πόκερ έχει λίγες ώρες τις τελευταίες δύο εβδομάδες μέσα από την ανάγνωση των διαφόρων κανόνων χέρι στην κατάταξη. Φαίνεται ότι η πρόκληση της γρήγορα την ανάδειξη του νικητή σε ένα παιχνίδι είναι απλό και όμως φευγαλέα. Έτσι, η ιδέα της παραγωγής ενός χαρτογράφηση μεταξύ ενός χεριού πόκερ και ένα μικρό οριοθετούνται οντότητα, σκέφτηκα, αξίζει κάποια έρευνα. Ο κώδικας πίσω από αυτό το άρθρο είναι μια απόδειξη της έννοιας αυτών των ξηρών υπολογιστική διαδικασία.

Φόντο
Αρχικά, το απόσπασμα κώδικα δημιουργήθηκε ως απάντηση σε 4 ώρες προγραμματιστής λογισμικού δοκιμής. Περιλάμβανε την ακόλουθη εργασία:

Εφαρμογή

Μια βιβλιοθήκη (στη γλώσσα προγραμματισμού της επιλογής σας), ο οποίος αξιολογεί τα οποία είναι ο νικητής (ες) μεταξύ αρκετών 5 χέρια πόκερ κάρτα (http://en.wikipedia.org/wiki/List_of_poker_hands). Σημείωση για το έργο αυτό που «πρέπει να εφαρμόσουν μόνο ένα υποσύνολο των τακτικών χέρια πόκερ:

Φλος
Τρία Όμοια
Δύο of a Kind
High Card
Εισαγωγή

Συλλογή των παικτών στην αναμέτρηση: όνομα παίκτη και 5 κάρτες (κάθε προσδιορίζοντας τον αριθμό και το χρώμα της κάρτας) - π.χ.

Joe, 3Η, 4Η, 5Η, 6Η, 8Η
Bob, 3C, 3D, 3δ, 8C, 10D
Sally AC, 10C, 5C, 2S, 2C
Παραγωγή

Συλλογή των κερδισμένων παικτών (περισσότερα από ένα σε περίπτωση ισοβαθμίας) - π.χ.

Joe
Παρακαλείσθε να αναφέρετε οποιεσδήποτε παραδοχές που έχετε κάνει.

Εκτέλεση
Από την αρχική ολοκλήρωση του έργου, ο κατάλογος εφαρμογή που επεκτάθηκε η στήριξη αυτή το σύνολο των κατ 'αποκοπή χέρια πόκερ.

Την Javascript επελέγη για την ευελιξία και την ευκολία χρήσης του.

Παραδοχές

Το υψηλότερο χέρι (σύμφωνα με το πρότυπο σύστημα του πόκερ, [^]) είναι το χέρι που κερδίζει. Υπάρχει πάντα τουλάχιστον ένα νικητή.
Ο αριθμός των χεριών είναι ένας θετικός τυχαίο ακέραιο.
Ο αριθμός των καρτών σε ένα χέρι είναι ένα θετικό τυχαίο ακέραιο αριθμό μικρότερο από 13. Ο αριθμός των καρτών σε ένα χέρι δεν έχει τόση σημασία, αλλά είναι λογικό ότι δεν θα υπερβαίνει τα 13.
Οι κάρτες στο χέρι προέρχονται από το ένα κατάστρωμα. Η διαδικασία μπορεί να τροποποιηθεί που υποστηρίζουν πολλαπλά καταστρώματα, αλλά θα χάσει κάποια από τη διαφάνειά του.
Κάθε κάρτα αντιπροσωπεύεται από μια λέξη με 2 γράμματα, όπου το πρώτο γράμμα προσδιορίζει τον βαθμό (δηλαδή, είναι στο σύνολο [1..10, J, Q, K, A]) και τη δεύτερη επιστολή αναγνωρίζει τη σουίτα (δηλαδή, είναι στο σύνολο [Η, Η, C, S])
Η είσοδος περιέχει, ανά γραμμή, το όνομα του παίκτη και το σύνολο των καρτών που σχηματίζει το χέρι του παίκτη όταν οι επιχειρήσεις είναι διαχωρισμένες με κόμμα. Πολλαπλές σειρές αναφέρονται πολλοί παίκτες. Κανένας έλεγχος δεν προστίθενται για να βεβαιωθείτε ότι οι παίκτες είναι μοναδικά, έχουν τον ίδιο αριθμό καρτών, και χρησιμοποιούν την τράπουλα.
Το όνομα του παίκτη δεν περιέχει κενά? αν το κάνει, δεν θα είναι παρόν στην έξοδο.
Αλγόριθμος

Ο στόχος είναι να εκχωρήσετε μια τιμή σε ένα χέρι των καρτών που αντικατοπτρίζει τη δύναμη / παρτιτούρες του, σύμφωνα με το πρότυπο σύστημα του πόκερ και να αποφευχθεί η ανάγκη να ταξινομήσετε, να συγκρίνουν, και την αναζήτηση ατομικών χέρια. Ο νικητής του παιχνιδιού είναι ο παίκτης με την υψηλότερη βαθμολογία.

Για τα οποία υπολογίζουν τη βαθμολογία, κατά την άποψή κάθε χέρι σαν ένα δισδιάστατο πίνακα. Τα σύνολα σε όλες τις στήλες μας δίνει αρκετές πληροφορίες για να συμπεράνουμε αν έχουμε τέσσερα από ένα είδος, φουλ, τρία από ένα είδος, δύο ζευγάρια, ή ένα ζευγάρι. Τα ποσά σε όλες τις σειρές μας δίνει αρκετές πληροφορίες που έχουμε συμπεράνουμε Είτε φλος, ευθεία, ή ένα straight flush. Η τελευταία σειρά δίνει επίσης μακριά την υψηλή κάρτα και τα kickers.

Για παράδειγμα, εδώ είναι πώς 2Η, 9D, 3S, 2C, QD μοιάζει σε ξηρό και μήτρα:

Απόκρυψη Αντιγραφή κώδικα
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
 | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
 | Δ | | | | | | | | | | 1 | | | 1 | | | 0 |
 | H | | | 1 | | | | | | | | | | | | | 0 |
 | C | | | 1 | | | | | | | | | | | | | 0 |> - col => Κάρτες suites (flush, [0,5+])
 | Ε | | | | 1 | | | | | | | | | | | | 0 |
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
 | | | | 2 | 1 | | | | | | 1 | | | 1 | | | 0 |> - σειρά => χαρτιά του βαθμού (Ν από ένα είδος, [1..4 +])
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
                                                   ^ ---- Κυττάρων => χαρτιά στη σειρά (ευθεία, [0,5+])
Σε αυτή την περίπτωση, έχουμε ένα ζευγάρι με τρία kickers (χωρίς κατ 'ευθείαν, κανένα φλος).

Έχουμε υπολογίσει από αριστερά προς τα δεξιά, κάτι που μας εγγυάται ότι χρησιμοποιούμε πάντα τις καλύτερες διαθέσιμες κάρτες για το σκορ και ότι ο αλγόριθμος λειτουργεί εξίσου καλά για τα χέρια 7-κάρτα, για παράδειγμα.

Η προσέγγιση αυτή μας απαλλάσσει από τη διαλογή κάρτες, Συγκρίνοντας τα χέρια, ή εκτελεί αναζητήσεις. Χρησιμοποιεί σταθερό μνήμης δεσμεύεται από την αραιή 15 x 4 μήτρα. Για ένα μόνο χέρι, εκτελείται σε σταθερό χρόνο, O (1), που απαιτούνται για να συνοψίσουμε κατά μήκος των γραμμών και των στηλών. Εάν ένα παιχνίδι περιέχει n χέρια, θα χρειαστεί O (n) χρόνο για να τα στείλει.

Το τέχνασμα είναι στην ανάθεση μια βαθμολογία που είναι «μοναδική». Εξετάστε τους ακόλουθους τύπους:

Απόκρυψη Αντιγραφή κώδικα
 Κατηγορίες χέρι | Big Endian | Μικρή Endian
 ---------------- | ------------ + --------------------
 Straight Flush | p & f -> 8 | kickers
 Καρέ | D4 -> 7 | D4
 Φουλ | P1 & K3 -> 6 | P1 + k 3 * (10 ^ 2)
 Φλος | f -> 5 | kickers
 Ευθεία | p -> 4 | kickers
 Three of a Kind | K3 -> 3 | K3
 Δύο ζεύγη | P2 -> 2 | p2 + P1 * (10 ^ 2)
 Ένα Ζεύγος | P1 -> 1 | P1
 High Card | -> 0 | kickers
όπου:

kickers = άθροισμα (R * (10 ^ (- 15 + i))), όπου r είναι η κατάταξη του i-οστού κάρτα με το πλήθος των 1 η οποία παίζει
f = αριθμός των φύλλων της ίδιας σουίτας, αν 5 ή περισσότερα, 0 αλλιώς
s = ο αριθμός των καρτών στην αλληλουχία εάν 5 ή περισσότερο, 0 αλλιώς
d4 = r * (10 ^ -4), όπου R είναι η υψηλότερη βαθμίδα της κάρτας με πληθικότητας 4
K3 = r * (10 ^ -4), όπου r είναι η υψηλότερη βαθμίδα της κάρτας με πληθικότητας 3
P2 = r * (10 ^ -4), όπου r είναι η δεύτερη υψηλότερη κατάταξη μιας κάρτας με πληθικότητας 2
p1 = r * (10 ^ -4), όπου r είναι η υψηλότερη βαθμίδα της κάρτας με πληθικότητας 2
τότε ο βαθμός = (κατηγορία || 0) * (μεγάλο endian κατηγορίας + λίγη endian κατηγορίας) + kickers.

Παραδείγματα:

Εδώ είναι πώς 2Η, 9D, 3δ, 2C QD (ζεύγος) βαθμολογία υπολογίζεται:

Απόκρυψη Αντιγραφή κώδικα
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| Δ | | | | | | | | | | 1 | | | 1 | | | 0 |
| H | | | 1 | | | | | | | | | | | | | 0 |
| C | | | 1 | | | | | | | | | | | | | 0 |
| Ε | | | | 1 | | | | | | | | | | | | 0 |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| | | | 2 | 1 | | | | | | 1 | | | 1 | | | 0 |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
  
Κατηγορίες χέρι | Big Endian | Μικρή Endian | Αποτέλεσμα
---------------- | ------------------ ------------ + | - ------------
Straight Flush | p & f -> 8 | kickers | 0
Καρέ | D4 -> 7 | D4 | 0
Φουλ | P1 & K3 -> 6 | P1 + k 3 * (10 ^ 2) | 0
Φλος | f -> 5 | kickers | 3 * (10 ^ -14) + 9 * (10 ^ -13) + 12 * (10 ^ -12)
Ευθεία | p -> 4 | kickers | 0
Three of a Kind | K3 -> 3 | K3 | 0
Δύο ζεύγη | P2 -> 2 | p2 + P1 * (10 ^ 2) | 0
Ένα Ζεύγος | P1 -> 1 | P1 | 0,0002 = 2 * (10 ^ -4)
High Card | -> 0 | kickers | 1.2930000000000001e-11
  
σκοράρει = 1.0002000000129 = (P1) * (1 + 0,0002) + 1.2930000000000001e-11
Εδώ είναι πώς 10S, 10C, 10Η, 4D, 4C (Φουλ) βαθμολογία υπολογίζεται:

Απόκρυψη Αντιγραφή κώδικα
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| Δ | | | | | 1 | | | | | | | | | | | 0 |
| H | | | | | | | | | | | 1 | | | | | 0 |
| C | | | | | 1 | | | | | | 1 | | | | | 0 |
| Ε | | | | | | | | | | | 1 | | | | | 0 |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| | | | | | 2 | | | | | | 3 | | | | | 0 |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +

Κατηγορίες χέρι | Big Endian | Μικρή Endian | Αποτέλεσμα
---------------- | ------------------ ------------ + | - ------------
Straight Flush | p & f -> 8 | kickers | 0
Καρέ | D4 -> 7 | D4 | 0
Φουλ | P1 & K3 -> 6 | P1 + k 3 * (10 ^ 2) | 0,1004 = 0,0004 + 0,001 (10 ^ 2)
Φλος | f -> 5 | kickers | 0
Ευθεία | p -> 4 | kickers | 0
Three of a Kind | K3 -> 3 | D3 | 0001 = 10 (10 ^ -4)
Δύο ζεύγη | P2 -> 2 | p2 + P1 * (10 ^ 2) | 0
Ένα Ζεύγος | P1 -> 1 | P1 | 0,0004 = 4 * (10 ^ -4)
High Card | -> 0 | kickers | 0

βαθμός = 6,1004 = (P1 & Κ3) * (6 + 0,1004) + 0
Σημειώστε ότι είναι πιθανό ότι αποκαταστήσει το χέρι από το σκορ.

Επίδοση

Σε Chrome (10.0.648.205, AMD Turion, 1.6GHz, 512KB L2, 2GB DDR2), μια ενιαία αξιολόγηση χέρι παίρνει ~ 1ms.

Απόκρυψη Αντιγραφή κώδικα
10 -> ~ 1 ms
100 -> ~ 6 ms
1000 -> ~ 60 ms
10,000 -> ~ 600 ms
100000 -> ~ 6000 ms
Είναι το εκτελέσετε μόνοι σας, ανοίξτε το συνημμένο αρχείο HTML σε ένα πρόγραμμα περιήγησης με JavaScript.

Είναι πιθανό ότι ο ίδιος κατάλογος εφαρμογή σε άλλη γλώσσα θα αποδώσει καλύτερα αποτελέσματα.

Προκλήσεις

Η κατανόηση και τον έλεγχο των διαφόρων χέρι κανόνες του πόκερ
Εξασφάλιση min / max αξία ανά κατηγορία χωρίς επικάλυψη -> δυνάμεις του 10, μεγάλη / μικρή endian
Υπολογισμός της kickers vs υψηλή κάρτα -> δυνάμεις του 10, πληθικότητας
Εφαρμόζοντας άσσος για 1 ή 14 σε ευθείες -> εγχειρίδιο αξίας επαναφορά
Εναλλακτικές Προσεγγίσεις (βλ Δείτε επίσης)

Χρήση της βάσης 13 Υπολογισμοί
Χρήση των πρώτων αριθμών, όπου το γινόμενο δύο πρώτων αριθμών είναι μια «μοναδική», αριθμός
Μέρος 2

Προσθέστε ένα Συμπέρασμα
Ελάτε με έναν τρόπο να ενσωματώσει πιθανότητες
Εφαρμογή σε άλλη γλώσσα (Haskell;) για να δούμε αν η συνολική απόδοση είναι καλύτερη
Κωδικός

Hide   Shrink    Copy Code
var evalHand = function(input){
    if (!input) return;

    input = input.replace(/\s+/g, '').replace(/,[Jj]/g, ',11').replace
    (/,[Qq]/g, ',12').replace(/,[Kk]/g, ',13').replace(/,
    [Aa]/g, ',14').toUpperCase().split(',');

    var hand = {D: [], H: [], C: [], S:[]};
    for (var i = 1, len = input.length; i < len; i++)
    {
        input[i] && (hand[input[i].slice(input[i].length - 1)]
    [input[i].slice(0, input[i].length - 1)] = 1);
    }

    var card = function(suite, rank){return hand[suite][rank] || 0};
    var cards = function(rank){ return card('D', rank) + card('H', rank) +
    card('C', rank) + card('S', rank); };
    var kickers = function(idx){ // http://en.wikipedia.org/wiki/Kicker_(poker)       
        idx = idx || -15;
        var notplayed = Math.max(input.length - 1/*player input*/ - 5, 0);
        return function(all, cardinality, rank) {
            return (all || 0) + (((cardinality == 1) && (notplayed-- <= 0)) ?
        rank * Math.pow(10, ++idx) : 0);
        };
    }();
  
    var tag = function(a, b, always) {a = a || 0; b = Math.min(b || 0, 1);
    return (b || always) ? a + b : 0};
    var reset = function(a) { return (a < 5) ? 0 : a};

    var cardsofrank = [];
    var hc = 0;         // high card
    var k4 = 0;         // four of a kind
    var k3 = 0;         // three of a kind
    var p2 = 0;         // two pair / two one pairs
    var p1 = 0;         // one pair / two of a kind
    var k = 0;          // kickers
    var sd = cards(14); // straight discriminant: count A as 1 or 14
    for (var i = 2; i < 15; i++)
    {
        cardsofrank[i] = cards(i);
        hc = (cardsofrank[i]) ? i * Math.pow(10, -4) : hc;
        k4 = (cardsofrank[i] === 4) ? hc : k4;
        k3 = (cardsofrank[i] === 3) ? hc : k3;
        p2 = (cardsofrank[i] === 2) ? p1 : p2;
        p1 = (cardsofrank[i] === 2) ? hc : p1;
        k = kickers(k, cardsofrank[i], i);
        sd = tag(sd, cardsofrank[i], sd >= 5);
    };
    var s = reset(sd); // straight

    if (s && cards(14) && !cards(13))
    { k = k - 14 * Math.pow(10, sd); } // adjust for A as 1 or 14

    var cardsofsuite = {D: 0, H: 0, C: 0, S: 0};
    for (var i = 2; i < 15; i++)
    {
        cardsofsuite['D'] = tag(cardsofsuite['D'], card('D', i), true);
        cardsofsuite['H'] = tag(cardsofsuite['H'], card('H', i), true);
        cardsofsuite['C'] = tag(cardsofsuite['C'], card('C', i), true);
        cardsofsuite['S'] = tag(cardsofsuite['S'], card('S', i), true);
    }
    var f = reset(cardsofsuite['D']) + reset(cardsofsuite['H']) +
    reset(cardsofsuite['C']) + reset(cardsofsuite['S']);  // flush

    var score = function(cond, bigendian, littleendian)
    { return (cond ? 1 : 0) * (bigendian + littleendian); };

    return {
        player: input[0], 
        score: (score(s && f, 8, k)                              // straightflush
                || score(k4, 7, k4)                              // fourofakind
                || score(p1 && k3, 6, p1 + k3 * Math.pow(10, 2)) // fullhouse
                || score(f, 5, k)                                // flush
                || score(s, 4, k)                                // straight
                || score(k3, 3, k3)                              // threeofakind
                || score(p2, 2, p2 + p1 * Math.pow(10, 2))       // twopair
                || score(p1, 1, p1))                             // onepair
            + score(hc, 0, k)                                    // highcard - tie breaker
    };
};


 
 
Template by Poker Template & USA Online Casino