Python'da hızlı poker el değerlendirmesi yapmayı düşünüyorum. İşlemi hızlandırmanın bir yolunun, tüm kart yüzlerini ve takımlarını asal sayılar olarak göstermek ve elleri temsil etmek için onları çoğaltmak olduğu bana geldi. Katlamak için:
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]
VE
def HashVal(self):
return PokerCard.facePrimes[self.cardFace] * PokerCard.suitPrimes[self.cardSuit]
Bu, her ele, modulo aracılığıyla bana elinde kaç kralın veya kaç kalbin olduğunu söyleyebilecek sayısal bir değer verecektir. Örneğin, içinde beş veya daha fazla kulüp bulunan her el eşit olarak 2 ^ 5'e bölünür; dört krallı her el eşit olarak 59 ^ 4, vb.
Sorun, AcAdAhAsKdKhKs gibi yedi kartlı bir elin, yaklaşık 62.7 katrilyon hash değerine sahip olması ve dahili olarak temsil edilmesi 32 bitten çok daha fazla zaman almasıdır. Python'da üzerinde aritmetik işlemler yapmamı sağlayacak kadar büyük sayılar depolamanın bir yolu var mı?