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 покерът
рулетка системи
Как да спечелите най-рулетка
Системата Мартингейл за игра на рулетка
Shaun система
Системни улици
Фибоначи система - Съотношение на маса
Системи за рулетка - Parlay система
Системи за рулетка - Система 63
Системи за рулетка - Лабушер Системни
Система D'Alembert
покер играч и комарджия психология
покер вицове и шеги
игри с карти
бонус за регистрация
даунсуинг покер
Poker форум - мнения от най-добрите в света
Poker, тъй като работата - допълнителен източник на доходи
миг бонус без депозит
Незабавен Покер пари
дисциплина спорта най-предвидими
Речник на залозите
Декалог - правилата за залагания за начинаещи
Най-голямата победа на букмейкъра
алгоритъм игра на покер в PHP
интервюта със звездите на покера
покер облекло - световните покер магазини
no deposit poker new poker bankroll gratis bonus
бонус без депозит
Правила на покер Texas Holdem - The Flop - Turn - река
Дилърът в покера и слепи
Речник на покер термини
Играя за истински пари (покер в интернет)
Freeroll - Безплатни покер турнири
История на Световните серии по покер (WSOP)
2 - 7 Сингъл дроу лоубол
888Poker Network - сайтове в мрежата
BOSS International Poker Network - сайтове в мрежата
Entraction Poker Network - сайтове в мрежата
Ipoker Network - сайтове в мрежата
Merge Gaming Network - сайтове в мрежата
Ongame Network - сайтове в мрежата
Най-продавани Покер Книги
Как 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 часа разработчик тест софтуер. То включваше следните задача:

Прилагане

A библиотека (в програмния език по ваш избор), който оценява Кои сте носител (и) между няколко пет карти покер ръце (http://en.wikipedia.org/wiki/List_of_poker_hands). Забележка за този проект, че ти трябва да се прилагат само част от редовните покер ръцете:

Промиване
Три еднакви по стойност карти
Двама от един тип
Висока карта
Вход

Събиране на играчи в конфронтация: Player име и 5 карти (всяка уточнява броя и костюма на картата) - например,

Джо, 3H, 4Н, 5Н, 6Н, 8Н
Боб, 3C, 3D, 3S, 8С, 10D
Sally AC, 10C, 5С, 2S, 2С
Продукция

Колекция за спечелване на играчите (повече от един, в случай на равен брой гласове) - например,

Joe
Моля, посочете дали допусканията, които сте направили.

Изпълнение
След първоначалното приключване на задачата, указателя за изпълнението ви предоставяме тази подкрепа на пълния набор от стандартни покер ръце.

JavaScript е избран за неговата гъвкавост и лекота на използване.

Предположения

Най-високото класиране страна (според стандартната покер ръка ранглиста система, [^]) е най-печелившата ръка. Винаги има поне един победител.
Броят на ръцете е положителен произволно число.
Броят на карти в ръка е положителна случайна число по-малко от 13. Броят на карти в ръка няма значение, но че има смисъл, че няма да надхвърлят 13.
Картите в ръка идват от една палуба. Процесът може да бъде модифициран, че поддържа множество палуби но ще загуби част от своята прозрачност.
Всяка карта е представена от 2-буквена дума, когато първо писмото се посочва в ранг (т.е. е в комплекта [1..10, J, Q, K, A]), а втория писмото се посочва в апартамента (т.е. е в комплекта [H, H, C, S])
Входът съдържа, на всеки ред, името на играча и на снимачната площадка на карти, която образува ръката на играча, когато лица са разделени със запетая. Множество редове показват множество играчи. Не са проверки са добавени да се провери, че играчите са уникални, имат същия брой карти, и те използват тесте карти.
Името на играча не съдържа пространства; ако това е така, те няма да присъства в изхода.
Алгоритъм

Целта е, че се придаде стойност на една ръка от карти, която отразява нейната здравина / резултати Съгласно стандартния покер ръка ранглиста система и да се избегне необходимостта да се справи, за сравнение, и справка отделни ръце. Победителят в играта е играчът с най-високи резултати.

За да може да изчисли резултата, с оглед всяка ръка като триизмерна матрица две. Общите суми цяла колоните ни дава достатъчно информация, тя се заключи дали имаме четири от един вид, пълна къща, три от един вид, два чифта, или един чифт. Сумите в цяла редиците ни дава достатъчно информация, която имаме заключим Дали флъш, стрейт или стрейт флъш. Последният ред също подарява високата карта и виражи.

Например, ето как 2H, 9D, 3S, 2С, QD прилича на сухо и матрица:

Скриване Copy Code
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
 | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
 | D | | | | | | | | | | 1 | | | 1 | | | 0 |
 | H | | | 1 | | | | | | | | | | | | | 0 |
 | C | | | 1 | | | | | | | | | | | | | 0 |> - COL => карти на апартамента (флъш, [0,5+])
 | S | | | | 1 | | | | | | | | | | | | 0 |
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
 | | | | 2 | 1 | | | | | | 1 | | | 1 | | | 0 |> - ред => карти от ранга (N от видовете, [1..4 +])
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
                                                   ^ ---- Клетка => поредни карти (права, [0,5+])
В този случай, ние имаме една двойка с три виражи (не прави, не пристъп).

Изчисляваме отляво надясно Което ни гарантира, че ние винаги използваме най-добрите налични карти за оценка и че алгоритъмът работи също толкова добре за ръце 7-карти, например.

Този подход ни освобождава от карти сортиране, Сравнявайки ръце, или извършване на заявки. Тя използва фиксиран памет обвързан от рядка 15 х 4 матрицата. За една ръка, той работи в постоянна време O (1), е необходимо да се сумира целия редовете и колоните. Ако играта съдържа N ръце, това ще отнеме O (N) време, за да ги вкара.

Номерът е при определянето на резултата, който се е "уникална". Обмислете следните формули:

Скриване Copy Code
 Ръчни Категории | Big Endian | Little Endian
 ---------------- | ------------ + --------------------
 Straight Flush | стр & Е -> 8 | виражи
 Каре | d4 -> 7 | d4
 Full House | P1 & K3 -> 6 | P1 + к 3 * (10 ^ 2)
 Flush | е -> 5 | виражи
 Правите | P -> 4 | виражи
 Тройка | K3 -> 3 | k3
 Two Pair | p2 -> 2 | p2 + p1 * (10 ^ 2)
 One Pair | p1 -> 1 | p1
 Висока карта | -> 0 | виражи
когато:

виражи = сумата (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) * (голям къс категория е + малко къс категория е) + виражи.

Примери:

Ето как 2H, 9D, 3S, 2С QD (One Pair) на полувремето се изчислява:

Скриване Copy Code
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| D | | | | | | | | | | 1 | | | 1 | | | 0 |
| H | | | 1 | | | | | | | | | | | | | 0 |
| C | | | 1 | | | | | | | | | | | | | 0 |
| S | | | | 1 | | | | | | | | | | | | 0 |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| | | | 2 | 1 | | | | | | 1 | | | 1 | | | 0 |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
  
Ръчни Категории | Big Endian | Little Endian | Резултати
---------------- | ------------------ ------------ + | - ------------
Straight Flush | стр & Е -> 8 | виражи | 0
Каре | d4 -> 7 | d4 | 0
Full House | P1 & K3 -> 6 | P1 + к 3 * (10 ^ 2) | 0
Flush | е -> 5 | виражи | 3 * (10 ^ -14) + 9 * (10 ^ -13) + 12 * (10 ^ -12)
Straight | P -> 4 | виражи | 0
Тройка | K3 -> 3 | k3 | 0
Two Pair | p2 -> 2 | p2 + p1 * (10 ^ 2) | 0
One Pair | p1 -> 1 | p1 | 0,0002 = 2 * (10 ^ -4)
Висока карта | -> 0 | виражи | 1.2930000000000001e-11
  
отбележи = 1.0002000000129 = (P1) * (1 + 0,0002) + 1.2930000000000001e-11
Ето как 10S, 10C, 10H, 4D, 4С (Full House) на полувремето се изчислява:

Скриване Copy Code
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| D | | | | | 1 | | | | | | | | | | | 0 |
| H | | | | | | | | | | | 1 | | | | | 0 |
| C | | | | | 1 | | | | | | 1 | | | | | 0 |
| S | | | | | | | | | | | 1 | | | | | 0 |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| | | | | | 2 | | | | | | 3 | | | | | 0 |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +

Ръчни Категории | Big Endian | Little Endian | Резултати
---------------- | ------------------ ------------ + | - ------------
Straight Flush | стр & Е -> 8 | виражи | 0
Каре | d4 -> 7 | d4 | 0
Full House | P1 & K3 -> 6 | P1 + к 3 * (10 ^ 2) | 0,1004 = 0,0004 + 0,001 (10 ^ 2)
Flush | е -> 5 | виражи | 0
Straight | P -> 4 | виражи | 0
Тройка | K3 -> 3 | d3 | 0001 = 10 (10 ^ -4)
Two Pair | p2 -> 2 | p2 + p1 * (10 ^ 2) | 0
One Pair | p1 -> 1 | p1 | 0,0004 = 4 * (10 ^ -4)
Висока карта | -> 0 | виражи | 0

резултат = 6,1004 = (P1 & k3) * (6 + 0,1004) + 0
Имайте предвид, че това е възможно възстановяване на ръката от резултата.

Производителност

В Chrome (10.0.648.205, AMD Turion, 1.6GHz, 512KB L2, 2GB DDR2), отделна оценка ръка отнема ~ 1ms.

Скриване Copy Code
10 -> ~ 1 мс
100 -> ~ 6 мс
1000 -> ~ 60 мс
10,000 -> ~ 600 MS
100000 -> ~ 6000 MS
Тя го ползвате самостоятелно, отворете прикачения файл в HTML браузър с ДжаваСкрипт поддръжка.

Много е вероятно, че една и съща директория прилагане на друг език ще даде по-добри резултати.

Предизвикателства

Разбиране и проверка на различни покер ръка класиране правила
Осигуряване мин / макс стойност на една категория, без да се припокриват -> правомощия на 10, голям / малък къс
Изчисляване на виражи срещу висока карта -> правомощия на 10, кардиналност
Прилагането Ace като 1 или 14 в стрейт -> ръчно нулиране стойност
Алтернативни подходи (срв Вижте също)

Използването на основата 13 Computations
Използването на простите числа, където продуктът от две прости числа е "уникална" брой
Част 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