Novità

MODIFICA script fatto da IA postato da FILLOTTO

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
    giovedì 06 novembre 2025
    Bari
    39
    17
    66
    47
    44
    Cagliari
    84
    66
    87
    43
    77
    Firenze
    15
    18
    61
    43
    38
    Genova
    65
    43
    51
    11
    59
    Milano
    32
    75
    51
    77
    01
    Napoli
    18
    86
    73
    39
    80
    Palermo
    67
    10
    31
    55
    81
    Roma
    73
    12
    23
    45
    79
    Torino
    16
    78
    01
    51
    37
    Venezia
    25
    62
    89
    50
    51
    Nazionale
    10
    33
    86
    42
    28
    Estrazione Simbolotto
    Torino
    12
    37
    14
    25
    11

Ultimi Messaggi

Indietro
Alto