Novità

Script biambo

il mio script in python ci mette circa 6 minuti ad analizzare gli 8 milioni di bi ambi . Ora come selezioni gli ambi da giocare ? Se vuoi ti passo lo script .
 
Codice:
"""
BIAMBI CON RITARDO MASSIMO STORICO <= SOGLIA + RITARDO ATTUALE
===============================================================
Modifiche rispetto alla versione precedente:
  - 11 ruote (inclusa la Nazionale)
  - Ricerca parte dall'estrazione con ID = 8117
"""

import os
import sys
import time
import numpy as np
from itertools import combinations

ARCHIVIO  = r"C:\Users\HP\AppData\Roaming\spaziometria\ArcTlv\Archivio.txt"
OUTPUT    = r"C:\Users\HP\Desktop\biambi_sotto79.txt"
SOGLIA    = 100
ID_INIZIO = 8117   # prima estrazione da considerare (1-based)

NUM_RUOTE    = 11   # tutte e 11 le ruote inclusa Nazionale
NUM_ESTRATTI = 5
NUM_AMBI     = 4005
NUM_COPPIE   = 8_018_010

COMBO_5_2 = list(combinations(range(NUM_ESTRATTI), 2))

NOMI_RUOTE = [
    "Bari","Cagliari","Firenze","Genova","Milano",
    "Napoli","Palermo","Roma","Torino","Venezia","Nazionale"
]


def ambo_idx(a, b):
    if a > b: a, b = b, a
    return (a - 1) * 90 - a * (a - 1) // 2 + (b - a - 1)

def idx_to_ambo(idx):
    a = 1
    while idx >= (90 - a):
        idx -= (90 - a)
        a += 1
    return a, a + 1 + idx

def coppia_idx(i, j):
    if i > j: i, j = j, i
    return i * (NUM_AMBI - 1) - i * (i + 1) // 2 + j - 1

def idx_to_coppia(ci):
    i = 0
    while ci >= (NUM_AMBI - 1 - i):
        ci -= (NUM_AMBI - 1 - i)
        i += 1
    return i, i + 1 + ci

def fmt(d): return f"{d[:2]}/{d[2:4]}/{d[4:]}"


def leggi_archivio(path):
    estrazioni, date = [], []
    with open(path, "r", encoding="utf-8") as f:
        for lineno, line in enumerate(f, 1):
            line = line.strip()
            if not line: continue
            if len(line) < 118:
                print(f"  [WARN] riga {lineno} corta, saltata.")
                continue

            # Salta le estrazioni prima di ID_INIZIO
            if lineno < ID_INIZIO:
                continue

            data, cifre = line[:8], line[8:118]
            ruote = []
            for r in range(11):   # legge tutte e 11
                off = r * NUM_ESTRATTI * 2
                nums = []
                for e in range(NUM_ESTRATTI):
                    try: nums.append(int(cifre[off + e*2 : off + e*2 + 2]))
                    except: nums.append(0)
                ruote.append(nums)
            date.append(data)
            estrazioni.append(ruote)
    return np.array(estrazioni, dtype=np.int16), date


def build_arrays():
    print("  Precalcolo array coppie...", end=" ", flush=True)
    t0 = time.time()
    ambo_i_arr = np.empty(NUM_COPPIE, dtype=np.int32)
    ambo_j_arr = np.empty(NUM_COPPIE, dtype=np.int32)
    ci = 0
    for i in range(NUM_AMBI):
        n = NUM_AMBI - i - 1
        ambo_i_arr[ci:ci+n] = i
        ambo_j_arr[ci:ci+n] = np.arange(i+1, NUM_AMBI, dtype=np.int32)
        ci += n
    print(f"fatto in {time.time()-t0:.1f}s")
    return ambo_i_arr, ambo_j_arr


def calcola(arr, ambo_i_arr, ambo_j_arr):
    N = arr.shape[0]
    print(f"\n  Estrazioni usate : {N:,}  (dal ID {ID_INIZIO} in poi)")
    print(f"  Ruote            : {NUM_RUOTE} ({', '.join(NOMI_RUOTE)})")
    print(f"  Coppie           : {NUM_COPPIE:,}")
    print(f"  Soglia           : <= {SOGLIA}\n")

    rit_cor = np.zeros(NUM_COPPIE, dtype=np.uint16)
    rit_max = np.zeros(NUM_COPPIE, dtype=np.uint16)

    t0 = time.time()

    for idx_e in range(N):
        if idx_e % 200 == 0:
            el  = time.time() - t0
            pct = idx_e / N * 100
            eta = (el / (idx_e + 1)) * (N - idx_e) if idx_e > 0 else 0
            print(f"  [{idx_e:6,}/{N:,}]  {pct:.1f}%  ETA: {eta:.0f}s    ", end="\r")

        # Ambi usciti su tutte le 11 ruote
        ambi_usciti = set()
        for r in range(NUM_RUOTE):
            nums = arr[idx_e, r]
            for c1, c2 in COMBO_5_2:
                a, b = int(nums[c1]), int(nums[c2])
                if a > 0 and b > 0:
                    ambi_usciti.add(ambo_idx(a, b))

        if not ambi_usciti:
            rit_cor += 1
            continue

        ambi_arr = np.fromiter(ambi_usciti, dtype=np.int32)
        mask = np.isin(ambo_i_arr, ambi_arr) | np.isin(ambo_j_arr, ambi_arr)

        rit_max[mask] = np.maximum(rit_max[mask], rit_cor[mask])
        rit_cor[mask] = 0
        rit_cor += 1

    # Fine archivio: aggiorna max con ritardi aperti
    np.maximum(rit_max, rit_cor, out=rit_max)

    print(f"\n  Completato in {time.time()-t0:.1f}s")
    return rit_max, rit_cor


def salva(rit_max, rit_att, date):
    print(f"\n  Filtro coppie con rit_max <= {SOGLIA}...")

    idx_ok  = np.where(rit_max <= SOGLIA)[0]
    ord_key = np.lexsort((-rit_att[idx_ok], rit_max[idx_ok]))
    idx_ok  = idx_ok[ord_key]
    totale  = len(idx_ok)
    print(f"  Coppie trovate: {totale:,}")

    print("\n" + "="*58)
    print(f"  BIAMBI CON RITARDO MASSIMO STORICO <= {SOGLIA}")
    print(f"  Dal ID {ID_INIZIO}: {fmt(date[0])} → {fmt(date[-1])}")
    print(f"  Ruote: tutte e 11 (inclusa Nazionale)")
    print(f"  Trovate: {totale:,}")
    print("="*58)
    print(f"  {'Pos':>8}  {'Ambo 1':>7}  {'Ambo 2':>7}  {'Rit.Max':>8}  {'Rit.Att':>8}")
    print("  " + "-"*52)

    righe = []
    for rank, ci in enumerate(idx_ok, 1):
        ai, aj = idx_to_coppia(int(ci))
        a1, b1 = idx_to_ambo(ai)
        a2, b2 = idx_to_ambo(aj)
        mx  = int(rit_max[ci])
        att = int(rit_att[ci])
        riga = f"{rank:>8}.  {a1:02d}-{b1:02d}     {a2:02d}-{b2:02d}  {mx:>8}  {att:>8}"
        righe.append(riga)
        if rank <= 50:
            print("  " + riga)

    if totale > 50:
        print(f"\n  ... totale {totale:,} coppie — tutte nel file")
    print("="*58)

    header = (
        f"BIAMBI CON RITARDO MASSIMO STORICO <= {SOGLIA}\n"
        f"Archivio  : {fmt(date[0])} -> {fmt(date[-1])}\n"
        f"ID inizio : {ID_INIZIO}\n"
        f"Estrazioni: {len(date):,}\n"
        f"Ruote     : 11 (inclusa Nazionale)\n"
        f"Trovate   : {totale:,} coppie\n"
        f"{'='*58}\n"
        f"{'Pos':>8}  {'Ambo 1':>7}  {'Ambo 2':>7}  {'Rit.Max':>8}  {'Rit.Att':>8}\n"
        f"{'-'*54}\n"
    )
    os.makedirs(os.path.dirname(OUTPUT), exist_ok=True)
    with open(OUTPUT, "w", encoding="utf-8") as f:
        f.write(header)
        for r in righe:
            f.write(r.strip() + "\n")
    print(f"\n  File salvato: {OUTPUT}")
    return totale


def main():
    print("╔══════════════════════════════════════════════════════════════╗")
    print("║   BIAMBI CON RITARDO MAX STORICO <= SOGLIA — LOTTO          ║")
    print("║   (11 ruote inclusa Nazionale - dal ID 8117)                 ║")
    print("╚══════════════════════════════════════════════════════════════╝\n")

    if not os.path.exists(ARCHIVIO):
        print(f"[ERRORE] Archivio non trovato: {ARCHIVIO}")
        sys.exit(1)

    print(f"  Lettura archivio: {ARCHIVIO}")
    print(f"  ID inizio       : {ID_INIZIO}")
    arr, date = leggi_archivio(ARCHIVIO)
    print(f"  Righe lette: {len(date):,}  ({fmt(date[0])} → {fmt(date[-1])})")

    ambo_i_arr, ambo_j_arr = build_arrays()
    rit_max, rit_att = calcola(arr, ambo_i_arr, ambo_j_arr)
    totale = salva(rit_max, rit_att, date)

    print(f"\n  Coppie totali  : {NUM_COPPIE:,}")
    print(f"  Coppie <= {SOGLIA}  : {totale:,}")
    print(f"  Percentuale    : {totale/NUM_COPPIE*100:.4f}%")
    print("\n  Arrivederci!")

if __name__ == "__main__":
    main()
 
IO USO L' INTERFACCIA THONNY . DOVRESTI SCARICARLO E POI INCOLLARE LO SCRIPT NELL' INTERFACCIA DI THONNY . TIPO SPAZIOSCRIPTCINZIA.jpg
 
Genios, visto che ci mette così poco, vorrei arrivare ad un tot di ambi ( novambi o decambi) che abbiano un mx st 14 o inferiore.
Puoi farlo tu? Io poi te li controllo.
 
Buonasera genios mi puoi aiutare
ARCHIVIO = r"C:\Users\Evandro\AppData\Roaming\spaziometria\ArcTlv\Archivio.txt"
OUTPUT = r"C:\Users\Evandro\Desktop\biambi_sotto79.txt"
quando lancio il tuo programma il mio archivio ArcTlv\Archivio.txt è fermo al 13/05/2023, come si aggiorna su spaziometria?. E poi la cartella per il salvataggio deve essere nominata biambi_sotto79.txt?, provando con archivio non aggiornato non salva nella cartella. Grazie
 
Buonasera genios mi puoi aiutare
ARCHIVIO = r"C:\Users\Evandro\AppData\Roaming\spaziometria\ArcTlv\Archivio.txt"
OUTPUT = r"C:\Users\Evandro\Desktop\biambi_sotto79.txt"
quando lancio il tuo programma il mio archivio ArcTlv\Archivio.txt è fermo al 13/05/2023, come si aggiorna su spaziometria?. E poi la cartella per il salvataggio deve essere nominata biambi_sotto79.txt?, provando con archivio non aggiornato non salva nella cartella. Grazie
devi scaricare il programmma spaziometria forever
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 26 maggio 2026
    Bari
    37
    35
    74
    51
    18
    Cagliari
    72
    17
    29
    01
    88
    Firenze
    39
    78
    42
    52
    62
    Genova
    44
    30
    37
    60
    01
    Milano
    18
    29
    67
    02
    86
    Napoli
    60
    87
    47
    69
    51
    Palermo
    72
    26
    34
    76
    18
    Roma
    03
    31
    20
    84
    39
    Torino
    82
    23
    74
    76
    70
    Venezia
    79
    68
    33
    87
    03
    Nazionale
    46
    63
    02
    41
    71
    Estrazione Simbolotto
    Milano
    37
    36
    18
    06
    30
Indietro
Alto