在Python中处理非常大的数字
我一直在考虑用Python进行快速扑克手牌评估。在我看来,加速这个过程的一种方法是将所有卡面和套装表示为素数,然后将它们相乘以代表手。白衣:
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]
这会给每只手一个数值,通过模数可以告诉我手中有多少国王或多少颗心。例如,任何有五个或更多球杆的手将平均分为2 ^ 5; 任何有四个国王的手都会平均分为59 ^ 4等。
问题是,像AcAdAhAsKdKhKs这样的七张牌的手的哈希值大约为62.7千万亿,在内部表示需要大于32位。有没有办法在Python中存储这么大的数字,这将允许我对它进行算术运算?
眼眸繁星
SMILET
相关分类