Я думал о быстрой оценке покерных рук в 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, который позволит мне выполнять над ним арифметические операции?