Ich habe über eine schnelle Bewertung der Pokerhand in Python nachgedacht. Mir kam der Gedanke, dass eine Möglichkeit, den Prozess zu beschleunigen, darin besteht, alle Kartenflächen und Farben als Primzahlen darzustellen und sie zu multiplizieren, um die Hände darzustellen. Zu wissen:
class PokerCard:
faces = '23456789TJQKA'
suits = 'cdhs'
facePrimes = [11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 53, 59, 61]
suitPrimes = [2, 3, 5, 7]
UND
def HashVal(self):
return PokerCard.facePrimes[self.cardFace] * PokerCard.suitPrimes[self.cardSuit]
Dies würde jeder Hand einen numerischen Wert geben, der mir durch Modulo sagen könnte, wie viele Könige in der Hand sind oder wie viele Herzen. Zum Beispiel würde jede Hand mit fünf oder mehr Schlägern gleichmäßig durch 2 ^ 5 teilen; Jede Hand mit vier Königen würde sich gleichmäßig durch 59 ^ 4 usw. teilen.
Das Problem ist, dass eine Hand mit sieben Karten wie AcAdAhAsKdKhKs einen Hash-Wert von ungefähr 62,7 Billiarden hat, was eine interne Darstellung erheblich mehr als 32 Bit erfordern würde. Gibt es eine Möglichkeit, so große Zahlen in Python zu speichern, dass ich arithmetische Operationen ausführen kann?