Novità

MODIFICA script fatto da IA postato da FILLOTTO

  • Creatore Discussione Creatore Discussione roy
  • Data di inizio Data di inizio

roy

Super Member >PLATINUM<
Salve chiedo per chi può una modifica a questo script postato da FILLOTTO che analizza le migliori 10 terzine su ruota,(considerando che identifica come migliori terzine quelle che hanno dato già il terno)volevo come modifica allo script la possibilità di eliminare le terzine che hanno dato in anticipo il terno.Grazie mille
Option Explicit

' Script Analisi Terzine ULTRA-OTTIMIZZATO
' Versione ad alte prestazioni con cache e algoritmi ottimizzati

' Classe per memorizzare i risultati delle terzine
Class clsTerzinaRisultato
Private m_aNumeri(3)
Private m_Frequenza
Private m_Ritardo
Private m_Punteggio

Sub Init(n1,n2,n3,freq,rit)
m_aNumeri(1) = n1
m_aNumeri(2) = n2
m_aNumeri(3) = n3
m_Frequenza = freq
m_Ritardo = rit
' Punteggio: alta frequenza = buono, alto ritardo = cattivo
m_Punteggio =(freq * 100) - rit
End Sub

Property Get NumeriStringa()
NumeriStringa = Format2(m_aNumeri(1)) & "-" & Format2(m_aNumeri(2)) & "-" & Format2(m_aNumeri(3))
End Property

Property Get Frequenza()
Frequenza = m_Frequenza
End Property

Property Get Ritardo()
Ritardo = m_Ritardo
End Property

Property Get Punteggio()
Punteggio = m_Punteggio
End Property

Property Get Numero(indice)
Numero = m_aNumeri(indice)
End Property
End Class

' Variabili globali per cache
Dim CacheEstrazioni()
Dim CacheInizializzata

Sub Main()
' --- INPUT UTENTE ---
Dim CodiceRuota,RuotaStr,UltimaEstrazione,NumEstrazioni
Dim InizioAnalisi,NumTerzineDaAnalizzare

' Selezione ruota
CodiceRuota = ScegliRuota()
If CodiceRuota = 0 Then
MsgBox "Nessuna ruota selezionata.",vbInformation
Exit Sub
End If
RuotaStr = NomeRuota(CodiceRuota)

' Parametri analisi
UltimaEstrazione = InputBox("Ultima estrazione da analizzare:","Input",CStr(EstrazioneFin))
If Not IsNumeric(UltimaEstrazione) Then Exit Sub
UltimaEstrazione = CLng(UltimaEstrazione)

NumEstrazioni = InputBox("Numero estrazioni da analizzare:","Input","50")
If Not IsNumeric(NumEstrazioni) Then Exit Sub
NumEstrazioni = CLng(NumEstrazioni)

InizioAnalisi = UltimaEstrazione - NumEstrazioni + 1
If InizioAnalisi < 1 Then InizioAnalisi = 1

' Ridotto drasticamente il numero di terzine per evitare timeout
NumTerzineDaAnalizzare = InputBox("Numero massimo terzine da testare:","Input","1000")
If Not IsNumeric(NumTerzineDaAnalizzare) Then Exit Sub
NumTerzineDaAnalizzare = CLng(NumTerzineDaAnalizzare)

' --- INIZIALIZZAZIONE CACHE ---
Call Messaggio("Inizializzazione cache estrazioni...")
Call InizializzaCache(CodiceRuota,InizioAnalisi,UltimaEstrazione)

' --- INIZIO ANALISI ---
Call Messaggio("Analisi in corso...")

Scrivi "=========================================================="
Scrivi "ANALISI TERZINE - VERSIONE ULTRA-OTTIMIZZATA"
Scrivi "Ruota: " & RuotaStr
Scrivi "Periodo: " & InizioAnalisi & " - " & UltimaEstrazione & " (" & NumEstrazioni & " estrazioni)"
Scrivi "Max terzine da testare: " & NumTerzineDaAnalizzare
Scrivi "=========================================================="

' --- STRATEGIA INTELLIGENTE ---
' Analizziamo solo le terzine più promettenti usando campionamento
Dim TopTerzine(10)
Dim i
For i = 1 To 10
Set TopTerzine(i) = Nothing
Next

' Campionamento intelligente delle terzine
Call AnalisiCampionamento(TopTerzine,CodiceRuota,InizioAnalisi,UltimaEstrazione,NumTerzineDaAnalizzare)

' --- RISULTATI ---
Scrivi "=========================================================="
Scrivi "RISULTATI ANALISI (TOP 10)"
Scrivi "=========================================================="

For i = 1 To 10
If Not TopTerzine(i) Is Nothing Then
Scrivi i & ") " & TopTerzine(i).NumeriStringa & " - Freq:" & TopTerzine(i).Frequenza & " Rit:" & TopTerzine(i).Ritardo & " Punt:" & TopTerzine(i).Punteggio

If i = 1 Then
' Dettagli per la migliore
Scrivi " >>> MIGLIORE TERZINA <<<"
If TopTerzine(i).Frequenza > 0 Then
Dim MediaUscite
MediaUscite = NumEstrazioni / TopTerzine(i).Frequenza
Scrivi " Media estrazioni tra uscite: " & Round(MediaUscite,1)
End If
End If
End If
Next

Scrivi "=========================================================="
Scrivi "Analisi completata!"

' Pulizia cache
CacheInizializzata = False

End Sub

' Inizializza cache delle estrazioni per velocizzare i calcoli
Sub InizializzaCache(CodiceRuota,InizioEstr,FineEstr)
Dim NumEstrazioni,i,j
NumEstrazioni = FineEstr - InizioEstr + 1

' Ridimensiona array cache
ReDim CacheEstrazioni(NumEstrazioni,5)

' Carica tutte le estrazioni in memoria
For i = 0 To NumEstrazioni - 1
For j = 1 To 5
CacheEstrazioni(i,j) = Estratto(InizioEstr + i,CodiceRuota,j)
Next
Next

CacheInizializzata = True
End Sub

' Analisi con campionamento intelligente
Sub AnalisiCampionamento(TopArray,CodiceRuota,InizioAnalisi,UltimaEstrazione,MaxTerzine)
Dim TerzineAnalizzate,i
TerzineAnalizzate = 0

' Strategia 1: Numeri più frequenti
Call Messaggio("Fase 1: Analisi numeri più frequenti...")
Dim NumeriFrequenti(20)
Call TrovaNumeriFriequenti(NumeriFrequenti,CodiceRuota,InizioAnalisi,UltimaEstrazione)

' Genera terzine dai numeri più frequenti
Dim n1,n2,n3
For i = 1 To 15
For n2 = i + 1 To 16
For n3 = n2 + 1 To 17
If TerzineAnalizzate >= MaxTerzine Then Exit Sub

n1 = NumeriFrequenti(i)
If n1 > 0 And NumeriFrequenti(n2) > 0 And NumeriFrequenti(n3) > 0 Then
Call AnalizzaTerzina(n1,NumeriFrequenti(n2),NumeriFrequenti(n3),TopArray,InizioAnalisi,UltimaEstrazione)
TerzineAnalizzate = TerzineAnalizzate + 1
End If
Next
Next
Next

' Strategia 2: Campionamento casuale distribuito
Call Messaggio("Fase 2: Campionamento distribuito...")
Dim StepCampionamento
StepCampionamento = 90 \ 10 ' Dividi in 10 fasce

For i = 1 To 88 Step StepCampionamento
For n2 = i + 1 To i + StepCampionamento - 1
For n3 = n2 + 1 To i + StepCampionamento
If TerzineAnalizzate >= MaxTerzine Then Exit Sub
If n3 <= 90 Then
Call AnalizzaTerzina(i,n2,n3,TopArray,InizioAnalisi,UltimaEstrazione)
TerzineAnalizzate = TerzineAnalizzate + 1
End If
Next
Next
Next

' Strategia 3: Sequenze specifiche
Call Messaggio("Fase 3: Sequenze specifiche...")
' Terzine consecutive
For i = 1 To 88
If TerzineAnalizzate >= MaxTerzine Then Exit Sub
Call AnalizzaTerzina(i,i + 1,i + 2,TopArray,InizioAnalisi,UltimaEstrazione)
TerzineAnalizzate = TerzineAnalizzate + 1
Next

Scrivi "Terzine analizzate: " & TerzineAnalizzate
End Sub

' Trova i numeri più frequenti nel periodo
Sub TrovaNumeriFriequenti(NumeriArray,CodiceRuota,InizioEstr,FineEstr)
Dim FreqNumeri(90),i,j,NumEstr

' Inizializza frequenze
For i = 1 To 90
FreqNumeri(i) = 0
Next

' Conta frequenze usando la cache
For i = 0 To UBound(CacheEstrazioni,1)
For j = 1 To 5
If CacheEstrazioni(i,j) > 0 And CacheEstrazioni(i,j) <= 90 Then
FreqNumeri(CacheEstrazioni(i,j)) = FreqNumeri(CacheEstrazioni(i,j)) + 1
End If
Next
Next

' Ordina per frequenza (bubble sort semplificato)
Dim TempFreq,TempNum,NumeriOrdinati(90)
For i = 1 To 90
NumeriOrdinati(i) = i
Next

For i = 1 To 89
For j = i + 1 To 90
If FreqNumeri(NumeriOrdinati(i)) < FreqNumeri(NumeriOrdinati(j)) Then
TempNum = NumeriOrdinati(i)
NumeriOrdinati(i) = NumeriOrdinati(j)
NumeriOrdinati(j) = TempNum
End If
Next
Next

' Copia i primi 20
For i = 1 To 20
NumeriArray(i) = NumeriOrdinati(i)
Next
End Sub

' Analizza una singola terzina
Sub AnalizzaTerzina(n1,n2,n3,TopArray,InizioAnalisi,UltimaEstrazione)
Dim Frequenza,Ritardo

' Calcola frequenza e ritardo ottimizzati
Frequenza = CalcolaFrequenzaOttimizzata(n1,n2,n3)
Ritardo = CalcolaRitardoOttimizzato(n1,n2,n3,UltimaEstrazione - InizioAnalisi + 1)

' Crea oggetto risultato
Dim TerzinaCorrente
Set TerzinaCorrente = New clsTerzinaRisultato
Call TerzinaCorrente.Init(n1,n2,n3,Frequenza,Ritardo)

' Inserisce nella top 10 se merita
Call InserisciInTop10(TopArray,TerzinaCorrente)
End Sub

' Calcola frequenza usando la cache (molto più veloce)
Function CalcolaFrequenzaOttimizzata(n1,n2,n3)
Dim Frequenza,i,j,ContaTrovati
Frequenza = 0

For i = 0 To UBound(CacheEstrazioni,1)
ContaTrovati = 0
For j = 1 To 5
If CacheEstrazioni(i,j) = n1 Or CacheEstrazioni(i,j) = n2 Or CacheEstrazioni(i,j) = n3 Then
ContaTrovati = ContaTrovati + 1
End If
Next
If ContaTrovati >= 3 Then
Frequenza = Frequenza + 1
End If
Next

CalcolaFrequenzaOttimizzata = Frequenza
End Function

' Calcola ritardo usando la cache (molto più veloce)
Function CalcolaRitardoOttimizzato(n1,n2,n3,NumEstrazioni)
Dim Ritardo,i,j,ContaTrovati
Ritardo = 0

' Cerca dall'ultima estrazione all'indietro
For i = UBound(CacheEstrazioni,1) To 0 Step - 1
ContaTrovati = 0
For j = 1 To 5
If CacheEstrazioni(i,j) = n1 Or CacheEstrazioni(i,j) = n2 Or CacheEstrazioni(i,j) = n3 Then
ContaTrovati = ContaTrovati + 1
End If
Next
If ContaTrovati >= 3 Then
Exit For ' Trovata, ritardo calcolato
End If
Ritardo = Ritardo + 1
Next

CalcolaRitardoOttimizzato = Ritardo
End Function

' Inserisce terzina nella top 10 se merita
Sub InserisciInTop10(TopArray,NuovaTerzina)
Dim i,j

' Trova posizione dove inserire
For i = 1 To 10
If TopArray(i) Is Nothing Then
' Posizione libera, inserisce qui
Set TopArray(i) = NuovaTerzina
Exit For
ElseIf NuovaTerzina.Punteggio > TopArray(i).Punteggio Then
' Sposta tutti gli elementi in basso
For j = 10 To i + 1 Step - 1
If j > 1 Then
Set TopArray(j) = TopArray(j - 1)
End If
Next
' Inserisce nuovo elemento
Set TopArray(i) = NuovaTerzina
Exit For
End If
Next
End Sub

' Funzione di supporto per formattare numeri a 2 cifre
Function Format2(numero)
If numero < 10 Then
Format2 = "0" & numero
Else
Format2 = CStr(numero)
End If
End Function
 

Ultima estrazione Lotto

  • Estrazione del lotto
    lunedì 03 novembre 2025
    Bari
    80
    28
    11
    67
    50
    Cagliari
    20
    29
    71
    33
    15
    Firenze
    33
    50
    21
    09
    11
    Genova
    32
    15
    90
    09
    23
    Milano
    66
    22
    48
    03
    77
    Napoli
    57
    64
    27
    20
    26
    Palermo
    22
    65
    78
    90
    74
    Roma
    32
    57
    43
    20
    08
    Torino
    74
    80
    66
    54
    01
    Venezia
    01
    75
    82
    13
    11
    Nazionale
    71
    05
    55
    77
    61
    Estrazione Simbolotto
    Torino
    13
    06
    40
    02
    10
Indietro
Alto