Domanda

Sto cercando il codice o la descrizione di un algoritmo per determinare il punteggio di una mano di poker quando i due sono jolly.Vorrei un codice che non sia gravato da canoni di licenza, GPL, brevetti, ecc.

Conosco un paio di modi per affrontare questo problema, ma preferirei non scrivere il codice se è già disponibile da qualche parte.Quindi apprezzerei se le risposte si limitassero ai collegamenti al codice funzionante effettivo o alle descrizioni algoritmiche dettagliate.

(Non chiedo a nessuno di "fare i compiti per me". Posso scrivere il codice da solo, quindi non sono necessari pseudocodice e suggerimenti di implementazione.È solo che non voglio perdere tempo a risolvere un problema già risolto.)

È stato utile?

Soluzione

http://www.codingthewheel.com/archives/poker-hand-evaluator-roundup

Pagina sulle librerie di valutazione del poker.- elenco di librerie/algoritmi

Altri suggerimenti

Penso che poiché hai detto specificamente di non volere idee, vuoi solo una soluzione funzionante.

Penso che il pensiero comune sia che sia meglio farlo nel modo più efficiente e attraente, non semplicemente nel modo in cui lo faceva qualche ragazzo prima che funzioni.Penso che uno dei vantaggi di questa comunità sia il pool di programmatori che possono far circolare le idee e aiutarti a trovare il modo migliore per fare qualcosa.

Penso che la maggior parte di noi sia emotiva per la nostra base di codice e si chieda quale sarebbe la motivazione di qualcuno che metterebbe qualsiasi cosa che funzioni nella loro.

È per un compito a casa?O forse per qualcun altro?

Senza scrivere tutto il codice, un inizio sarebbe simile a:

/*
* 2.1 Straight flush
* 2.2 Four of a kind
* 2.3 Full house
* 2.4 Flush
* 2.5 Straight
* 2.6 Three of a kind
* 2.7 Two pair
* 2.8 One pair
* 2.9 High card
*/
// Note, the vector cards is sorted low to high. All cards have a numeric value 2-13 and a suit 0-3
int noDuces(Cards[] cards) {
    int duces = 0;
    int cursor = cards.length;
    while(cards[cursor--].value == 2) duces++;
    return duces;
}

bool isFlush(Cards [] cards) {
   int duces = noDuces(cards);
   int firstColour = cards[cards.length].colour;
   for (int i = cards.length -1; i > duces; i--) {
       if (cards[i].colour != firstColour)
           return false;
   }
   return true;
}

bool isStraight(Cards[] cards) {
    int duces = noDuces(cards);
    int usedDuces = 0;
    // TODO Handle A - 5 straight. 
   card prevCard = cards[cards.length];
    for (int i = cards.length -1; i > duces; i--) {
       if ((prevCard.value + 1) != cards[i].value) {
           if (usedDuces >= duces) {
               return false;
           }
           usedDuces++;
       }
       prevCard = cards[i];
   }
    return true;
}

Il codice sorgente completo per il valutatore del gioco di poker Texas Hold'em può essere trovato qui:

http://www.advancedmcode.org/poker-predictor.html

È costruito per matlab, la GUI id m-coded ma il motore di calcolo è C++.

Permette il calcolo delle probabilità e delle probabilità.Può gestire, sul mio portatile da 2.4Ghz, il calcolo di 100000 partite da 10 giocatori in 0,3 secondi.

Un computer accurato in tempo reale :-)

Anche se calcolare "direttamente" e confrontare le mani sembra un esercizio interessante, non ci sono quasi applicazioni (per computer con quantità ragionevoli di ram/disco) per le quali sarebbero pratiche.Se stai confrontando più di una "manciata" di mani, questo approccio ti porta a calcolare gli stessi valori delle mani ancora e ancora.

Dato che è possibile effettuare un precalcolo esaustivo di tutte le mani di poker e dei relativi valori, farlo una sola volta per generare tabelle di ricerca è – DI gran lunga – la soluzione più rapida e pratica.Le differenze tra algoritmi di questo tipo hanno a che fare principalmente con i trucchi per gestire la dimensione della tabella.La risposta principale ha un collegamento a un'ampia gamma di algoritmi, ripetuto qui per comodità, che vanno dai calcoli ingenui e complicati a vari tipi di ricerche.È una lettura illuminante e divertente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top