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
    giovedì 27 novembre 2025
    Bari
    30
    06
    24
    65
    34
    Cagliari
    03
    65
    15
    77
    79
    Firenze
    04
    74
    10
    45
    18
    Genova
    32
    21
    45
    81
    48
    Milano
    25
    05
    15
    78
    86
    Napoli
    34
    49
    52
    16
    05
    Palermo
    01
    66
    76
    19
    11
    Roma
    60
    16
    79
    22
    21
    Torino
    07
    31
    23
    14
    83
    Venezia
    75
    09
    06
    34
    31
    Nazionale
    64
    12
    18
    30
    88
    Estrazione Simbolotto
    Torino
    11
    43
    35
    33
    19
Indietro
Alto