Stockage et fonctionnement de grands nombres en Python pour l'évaluation des mains de poker
Pour optimiser l'évaluation des mains de poker en Python, en multipliant les faces et les couleurs des cartes comme Les nombres premiers peuvent représenter efficacement les mains et permettre un calcul rapide des valeurs à l'aide d'opérations modulo. Cependant, les nombres représentant des mains de sept cartes peuvent dépasser les limites des entiers de 32 bits.
Type Bignum de Python
Python fournit le type entier "bignum", connu sous le nom de long en Python 2.5 et int en Python 3.0 , ce qui permet des opérations avec des nombres arbitrairement grands. Les opérations effectuées sur des entiers passent automatiquement au type bignum si nécessaire, garantissant une gestion transparente des grandes valeurs.
Exemple de mise en œuvre
Étant donné la classe PokerCard fournie dans la question, le Le code suivant montre comment stocker et effectuer des opérations arithmétiques sur de grandes valeurs de main :
class PokerCard: # Prime representations of card faces and suits facePrimes = [11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 53, 59, 61] suitPrimes = [2, 3, 5, 7] def HashVal(self): return PokerCard.facePrimes[self.cardFace] * PokerCard.suitPrimes[self.cardSuit] hand = [PokerCard("A", "c"), PokerCard("A", "d"), PokerCard("A", "h"), PokerCard("A", "s"), PokerCard("K", "d"), PokerCard("K", "h"), PokerCard("K", "s")] # Create a 7-card hand handValue = 1 for card in hand: handValue *= card.HashVal() # Multiply prime values of cards together print(handValue) # Output the large hand value
Ce code utilise le type bignum pour stocker et multiplier les valeurs premières représentant la main. En passant automatiquement au type bignum, Python garantit que la valeur de la main résultante peut être représentée et manipulée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!