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

Оставить комментарий

Ваш email нигде не будет показанОбязательные для заполнения поля помечены *

*