Tôi đã xem xét đánh giá tay bài nhanh trong Python. Tôi nhận ra rằng một cách để tăng tốc quá trình sẽ là đại diện cho tất cả các mặt thẻ và bộ quần áo dưới dạng số nguyên tố và nhân chúng lại với nhau để đại diện cho bàn tay. Để trắng:
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]
VÀ
def HashVal(self):
return PokerCard.facePrimes[self.cardFace] * PokerCard.suitPrimes[self.cardSuit]
Điều này sẽ cung cấp cho mỗi bàn tay một giá trị số mà thông qua modulo có thể cho tôi biết có bao nhiêu vị vua trong tay hoặc bao nhiêu trái tim. Ví dụ: bất kỳ tay nào có năm câu lạc bộ trở lên sẽ chia đều cho 2 ^ 5; bất kỳ tay nào có bốn vị vua sẽ chia đều cho 59 ^ 4, v.v.
Vấn đề là một tay bảy thẻ như AcAdAhAsKdKhKs có giá trị băm xấp xỉ 62,7 triệu, sẽ mất hơn 32 bit để thể hiện nội bộ. Có cách nào để lưu trữ số lượng lớn như vậy trong Python sẽ cho phép tôi thực hiện các phép toán số học trên nó không?