class CardCounter:
def __init__(self, num_mazzi=6):
self.num_mazzi = num_mazzi # Numero totale di mazzi
self.running_count = 0 # Running Count Hi-Lo
self.carte_viste = 0 # Numero di carte conteggiate
self.carte_totali = num_mazzi * 52 # Carte totali nel sabot
def aggiorna_conteggio(self, carta):
valori = {'2': 1, '3': 1, '4': 1, '5': 1, '6': 1,
'7': 0, '8': 0, '9': 0,
'10': -1, 'J': -1, 'Q': -1, 'K': -1, 'A': -1}
if carta.upper() in valori:
self.running_count += valori[carta.upper()] # Aggiorna il running count
self.carte_viste += 1 # Aggiorna il numero di carte viste
def get_true_count(self):
mazzi_rimasti = max(1, (self.carte_totali - self.carte_viste) / 52) # Stima mazzi rimasti
return round(self.running_count / mazzi_rimasti, 2) # Calcola il True Count
def suggerisci_scommessa(self, puntata_base=10):
true_count = self.get_true_count()
if true_count <= 1:
return f"Punta la base: ${puntata_base}"
elif 2 <= true_count <= 3:
return f"Aumenta la puntata: ${puntata_base * 2}"
elif 4 <= true_count <= 5:
return f"Punta più alto: ${puntata_base * 4}"
else:
return f"Punta aggressivo: ${puntata_base * 6} o più"
def mostra_conteggio(self):
true_count = self.get_true_count()
print(f"\nRunning Count: {self.running_count}")
print(f"True Count: {true_count}")
print(f"Carte viste: {self.carte_viste} su {self.carte_totali}")
print(f"Suggerimento: {self.suggerisci_scommessa()}")
Y2xhc3MgQ2FyZENvdW50ZXI6CiAgICBkZWYgX19pbml0X18oc2VsZiwgbnVtX21henppPTYpOgogICAgICAgIHNlbGYubnVtX21henppID0gbnVtX21henppICAjIE51bWVybyB0b3RhbGUgZGkgbWF6emkKICAgICAgICBzZWxmLnJ1bm5pbmdfY291bnQgPSAwICAjIFJ1bm5pbmcgQ291bnQgSGktTG8KICAgICAgICBzZWxmLmNhcnRlX3Zpc3RlID0gMCAgIyBOdW1lcm8gZGkgY2FydGUgY29udGVnZ2lhdGUKICAgICAgICBzZWxmLmNhcnRlX3RvdGFsaSA9IG51bV9tYXp6aSAqIDUyICAjIENhcnRlIHRvdGFsaSBuZWwgc2Fib3QKCiAgICBkZWYgYWdnaW9ybmFfY29udGVnZ2lvKHNlbGYsIGNhcnRhKToKICAgICAgICB2YWxvcmkgPSB7JzInOiAxLCAnMyc6IDEsICc0JzogMSwgJzUnOiAxLCAnNic6IDEsCiAgICAgICAgICAgICAgICAgICc3JzogMCwgJzgnOiAwLCAnOSc6IDAsCiAgICAgICAgICAgICAgICAgICcxMCc6IC0xLCAnSic6IC0xLCAnUSc6IC0xLCAnSyc6IC0xLCAnQSc6IC0xfQoKICAgICAgICBpZiBjYXJ0YS51cHBlcigpIGluIHZhbG9yaToKICAgICAgICAgICAgc2VsZi5ydW5uaW5nX2NvdW50ICs9IHZhbG9yaVtjYXJ0YS51cHBlcigpXSAgIyBBZ2dpb3JuYSBpbCBydW5uaW5nIGNvdW50CiAgICAgICAgICAgIHNlbGYuY2FydGVfdmlzdGUgKz0gMSAgIyBBZ2dpb3JuYSBpbCBudW1lcm8gZGkgY2FydGUgdmlzdGUKCiAgICBkZWYgZ2V0X3RydWVfY291bnQoc2VsZik6CiAgICAgICAgbWF6emlfcmltYXN0aSA9IG1heCgxLCAoc2VsZi5jYXJ0ZV90b3RhbGkgLSBzZWxmLmNhcnRlX3Zpc3RlKSAvIDUyKSAgIyBTdGltYSBtYXp6aSByaW1hc3RpCiAgICAgICAgcmV0dXJuIHJvdW5kKHNlbGYucnVubmluZ19jb3VudCAvIG1henppX3JpbWFzdGksIDIpICAjIENhbGNvbGEgaWwgVHJ1ZSBDb3VudAoKICAgIGRlZiBzdWdnZXJpc2NpX3Njb21tZXNzYShzZWxmLCBwdW50YXRhX2Jhc2U9MTApOgogICAgICAgIHRydWVfY291bnQgPSBzZWxmLmdldF90cnVlX2NvdW50KCkKICAgICAgICBpZiB0cnVlX2NvdW50IDw9IDE6CiAgICAgICAgICAgIHJldHVybiBmIlB1bnRhIGxhIGJhc2U6ICR7cHVudGF0YV9iYXNlfSIKICAgICAgICBlbGlmIDIgPD0gdHJ1ZV9jb3VudCA8PSAzOgogICAgICAgICAgICByZXR1cm4gZiJBdW1lbnRhIGxhIHB1bnRhdGE6ICR7cHVudGF0YV9iYXNlICogMn0iCiAgICAgICAgZWxpZiA0IDw9IHRydWVfY291bnQgPD0gNToKICAgICAgICAgICAgcmV0dXJuIGYiUHVudGEgcGnDuSBhbHRvOiAke3B1bnRhdGFfYmFzZSAqIDR9IgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBmIlB1bnRhIGFnZ3Jlc3Npdm86ICR7cHVudGF0YV9iYXNlICogNn0gbyBwacO5IgoKICAgIGRlZiBtb3N0cmFfY29udGVnZ2lvKHNlbGYpOgogICAgICAgIHRydWVfY291bnQgPSBzZWxmLmdldF90cnVlX2NvdW50KCkKICAgICAgICBwcmludChmIlxuUnVubmluZyBDb3VudDoge3NlbGYucnVubmluZ19jb3VudH0iKQogICAgICAgIHByaW50KGYiVHJ1ZSBDb3VudDoge3RydWVfY291bnR9IikKICAgICAgICBwcmludChmIkNhcnRlIHZpc3RlOiB7c2VsZi5jYXJ0ZV92aXN0ZX0gc3Uge3NlbGYuY2FydGVfdG90YWxpfSIpCiAgICAgICAgcHJpbnQoZiJTdWdnZXJpbWVudG86IHtzZWxmLnN1Z2dlcmlzY2lfc2NvbW1lc3NhKCl9Iik=