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
    sabato 22 novembre 2025
    Bari
    82
    08
    24
    45
    37
    Cagliari
    07
    16
    67
    74
    35
    Firenze
    76
    32
    44
    06
    51
    Genova
    22
    77
    19
    27
    89
    Milano
    46
    81
    56
    29
    85
    Napoli
    68
    90
    80
    06
    47
    Palermo
    31
    07
    43
    83
    19
    Roma
    08
    68
    17
    12
    57
    Torino
    87
    17
    61
    60
    58
    Venezia
    27
    05
    17
    72
    50
    Nazionale
    70
    76
    56
    81
    15
    Estrazione Simbolotto
    Torino
    26
    34
    10
    42
    33

Ultimi Messaggi

Indietro
Alto