Saya telah mempertimbangkan evaluasi tangan poker cepat dengan Python. Terpikir oleh saya bahwa salah satu cara untuk mempercepat prosesnya adalah dengan merepresentasikan semua wajah dan corak kartu sebagai bilangan prima dan mengalikannya untuk merepresentasikan tangan. Sedikit pun:
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]
DAN
def HashVal(self):
return PokerCard.facePrimes[self.cardFace] * PokerCard.suitPrimes[self.cardSuit]
Ini akan memberi setiap tangan nilai numerik yang, melalui modulo bisa memberi tahu saya berapa banyak raja di tangan atau berapa banyak hati. Misalnya, setiap tangan dengan lima atau lebih klub di dalamnya akan dibagi rata dengan 2 ^ 5; tangan mana pun dengan empat raja akan membagi rata dengan 59 ^ 4, dll.
Masalahnya adalah bahwa tujuh kartu seperti AcAdAhAsKdKhKs memiliki nilai hash sekitar 62,7 kuadriliun, yang akan membutuhkan lebih dari 32 bit untuk diwakili secara internal. Apakah ada cara untuk menyimpan bilangan besar dengan Python yang memungkinkan saya melakukan operasi aritmatika?