Python でポーカーのハンドを高速に評価することを検討しています。プロセスをスピードアップする 1 つの方法は、すべてのカードの面とスーツを素数として表し、それらを掛け合わせてハンドを表すことだと思いました。具体的には:
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]
と
def HashVal(self):
return PokerCard.facePrimes[self.cardFace] * PokerCard.suitPrimes[self.cardSuit]
これにより、各ハンドに数値が与えられ、モジュロを介してハンドにキングがいくつあるか、またはハートがいくつあるかがわかります。たとえば、5 つ以上のクラブを含むハンドは、2^5 で均等に分割されます。キングが 4 枚あるハンドは、59^4 で等分されます。
問題は、AcAdAhAsKdKhKs のような 7 枚の手札のハッシュ値が約 62.7 千兆であり、内部的に表現するには 32 ビットよりもかなり多くかかることです。算術演算を実行できるような大きな数値を Python に格納する方法はありますか?