ポーカー ハンド評価のための Python での大きな数値の保存と操作
Python でポーカー ハンド評価を最適化するには、カードのフェイスとスーツを次のように乗算します。素数は手を効率的に表現でき、モジュロ演算を使用して値を迅速に計算できます。ただし、7 枚のカードの手を表す数値は 32 ビット整数の制限を超える可能性があります。
Python の Bignum 型
Python は、として知られる「bignum」整数型を提供します。 Python 2.5 では long 、Python 3.0 では int が使用され、任意の大きな数値の操作が可能になります。整数に対して実行される演算は、必要に応じて自動的に bignum 型に切り替わり、大きな値のシームレスな処理が保証されます。
実装例
質問で提供されている PokerCard クラスを考えると、次のコードは、ラージハンドで演算を保存および実行する方法を示しています。値:
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
このコードは、bignum 型を利用して、ハンドを表す素数値を格納および乗算します。 bignum 型に自動的に切り替えることで、Python は結果として得られるハンドの値を表現し、操作できるようにします。
以上がPython でポーカーのハンドを評価するときに大きな数値を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。