我一直在考虑用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] 这会给每只手一个数字值,通过模数可以告诉我手中有多less个国王,或者多less颗心。 例如,任何有5个或更多的俱乐部的手均匀分配2 ^ 5; 任何有四位君王的手将会以59 ^ 4等分。 问题是像AcAdAhAsKdKhKs这样的七张牌的牌的散列值大约为62.7万亿次,这将花费比32比特大得多的内部代表。 有没有办法在Python中存储这么大的数字,这将允许我对它执行算术运算?
我想在C ++中实现一个大的int类作为编程练习 – 一个可以处理大于long int的数字的类。 我知道已经有几个开源的实现,但我想写我自己的。 我试图感受一下正确的方法是什么。 我明白,一般的策略是把数字作为一个字符串,然后将其分解成更小的数字(例如单个数字),并将它们放在一个数组中。 在这一点上,实现各种比较操作符应该相对简单。 我主要关心的是如何实现像加法和乘法这样的事情。 我正在寻找一个一般的方法和建议,而不是实际的工作代码。