Novità

LUNGHETTA PIU RITARDATA - INTEGRALI CON ALTO NUMERO DI COLONNE

L

LuigiB

Guest
Ciao a tutti , prendendo spunto da una richiesta di LottoTom sono qui a presentare una nuova funzione presente nello spazioscript
che sapientemente utilizzata permette di agire internamente sullo sviluppo dei sistemi integrali facendo saltare delle colonne e velocizzando cosi l'elaborazione di sistemi prima impossibili da elaborare.
La funzione è molto semplice non è lei che fa quello che ho detto nel titolo del post ma è lo script che propongo che per suo mezzo lo fa.
Questo script che fa uso della citata nuova funzione potrebbe sembrare complesso ma se si segue la spiegazione
si capisce senza problemi , per ora non diciamo ancora il nome di questa nuova funzione del linguaggio

La prima cosa necessaria è capire come Spaziometria internamente sviluppa i sistemi integrali.
Il nostro esempio si basa su un sistema di 90 numeri in decine le cui combinazioni integrali sono 5.720.645.481.903
ad esempio per cercare la decina piu ritardata su due ruote mentre prima era impossibile ora ci vogliono 51 minuti sul mio pc , ovviamente con combinazioni inferiori ci vuole ancora meno tempo.

Per capire lo script vediamo prima come spaziometria sviluppa internamente le combinazioni dei sistemi integrali.
La prima cosa che fa è crearsi una matrice con il numero di righe pari alla classe di sviluppo
ogni riga contiene i numeri che possono comparire in ciascuna delle posizioni
vediamo che in questo caso ogni riga contiene 81 numeri




dopo aver creato la matrice inizia lo sviluppo delle colonne ,
internamente Spaziometria ha un array che chiameremo Puntatore
Questo array ha il numero di elementi pari alla classe di sviluppo
dato che il nostro esempio è a classe 10 questo array Puntatore internamente
è definito Puntatore(10)

per ognuna delle 10 posizioni Puntatore memorizzza un numero che va da 1 a 81
cioè un valore compreso tra 1 e il numero massimo di numeri presenti in una riga.

gestendo l'incremento dei valori nell'array Puntatore Spaziometria sviluppa le colonne
al primo passaggio tutti gli elementi dell'array puntatore avranno valore 1
identificando grazie alla matrice la decina 1.2.3.4.5.6.7.8.9.10
poi l'ultimo lelemento di puntatore si incrementa di 1 e si è pronti per leggere la colonan successiva.

quando l'incremento di 1 produce un valore superiore ad 81 (cioè al numero di numeri per riga)
allora il puntatore individua l'elemento precedente a quello che ha superato il limite e lo incrementa
a sua volta di 1 portando poi tutti i valori successivi dell'array allo stesso valore individuato e il giro ricomincia
co la colonna successiva , al termine l'ultima colonna vedrà l'array puntatore avere i valori 81.81.81.81.81.81.81.81.81.81
identificando quindi la decina 81.82.83.84.85.86.87.88.89.90

quanto spiegato si puo capire meglio guardando la successiva immagine




la nuova funzione che ho anticipato si chiama ForzaIncrementoPuntatoreSvilSisInt

proprio perche consente di agire sull'array puntatore incrementando il valore di una determinata posizione

si capisce che incrementando arbitrariamente una delle posizioni del puntatore si ha l'effetto di far saltare
dei cicli e quindi un sacco di colonne.
Come possiamo sfruttare questo fatto a nostro favore per cercare la lunghetta piu ritardata ?
Lo dimostra lo script successivo.

Che cosa fa lo script ?

Sviluppa 90 numeri in decine e trova la lunghetta piu ritardata per ambo su 2 ruote , questi valori sono facilmente cambiabili.

come funziona ?

Lo script inizia a sviluppare le decine , ogni decina viene scomposta in ambi , per ognuno di questi ambi vine calcolato il ritardo.
Mano mano che lo script elabora le colonne avrà individuato un ritardo massimo sempre maggiore , ogni volta che uno degli ambi
ottenuti dalla scomposizione della decina corrente ha un ritardo inferiore a quello max gia trovato vuol dire che siamo in presenza
di una colonna (di una decina) che finche contierrà quella combinazione (l'ambo) non potrà mai avere un ritardo maggiore di quello che gia sappiamo
allora dobbiamo sfruttare questo fatto per fare in modo di far saltare tutte le decine che contengono l'ambo incriminato
Per farlo dobbiamo vedere come cade il nostro ambo dentro la matrice di sviluppo interna di spaziomeria , una volta che abbiamo visto in quale posizione cade l'ultimo numero dell'ambo sappiamo che con la funzione ForzaIncrementoPuntatoreSvilSisInt dobbiamo incrementare il valore dell'elemento trovato nell'array Puntatore , in questo modo salteremo delle colonne , per rendere ancora piu efficace la ricerca l'algoritmo cerca la combinaxione piu conveniente tra gli ambi per far saltare piu colonne possibili , infatti sono da preferire gl ambi che vedono il secondo numero comparire nella posizione piu bassa possibile da 1 a 10 della decina, il tutto per chi ha voglia si capisce con lo script ,

Codice:
Option Explicit
Sub Main
    Dim k,s
    Dim nClasse,nColonneTot
    ReDim aNumeri(90)
    Dim aCol
    Dim nRitmaxTrovato,nRitMax
    Dim nSorte
    Dim nPosDaIncr
    Dim nFine
    Dim nColValide
    Dim nRitardoNat
    Dim nTimerStart
    
    
    nFine = EstrazioneFin
    ReDim aR(2)
    aR(1) = BA_
    aR(2) = CA_
    nSorte = 2
    nClasse = 10 ' sviluppo in decine
    
    
    
    
    
    
    ' da qui in poi non cambiare niente
    nTimerStart = Timer
    nRitardoNat = 1 / Prob(nClasse,nSorte,UBound(aR))
    nRitmaxTrovato = nRitardoNat
    nRitmaxTrovato = CInt(InputBox("Inserire il ritardo minimo." & vbCrLf & "Il valore proposto è il ritardo naturale","Ritardo minimo",nRitmaxTrovato))
    Call Scrivi("integrali : " & Combinazioni(90,nClasse))
    ' imposto i numeri da sviluppare
    For k = 1 To 90
        aNumeri(k) = k
    Next
    'inizializza lo sviluppo
    nColonneTot = InitSviluppoIntegrale(aNumeri,nClasse)
    nColValide = 0
    k = 0
    ' ciclo che continua fiono a quando le colonne non finiscono
    Do While GetCombSviluppo(aCol)
        k = k + 1 ' conteggio colonna corrente
        nRitMax = RitardoCombinazioneTurbo(aR,aCol,nSorte,nFine)
        'If nRitMax >= nRitmaxTrovato Then
        If nRitMax > nRitmaxTrovato Then
            nColValide = nColValide + 1
            nRitmaxTrovato = nRitMax
            ' costruisco la stringa che contiene la colonna
            s = FormatSpace(k,10,True) & "- " & FormatSpace(StringaNumeri(aCol),nClasse * 3) & " Rit  : " & FormatSpace(nRitMax,10,True)
            Call Scrivi(s)
        Else
            ' cerca le sottocolonne che contravvengono al RitMax
            ' e individua quella piu conveniente per far saltare piu  combinazioni possibili
            nPosDaIncr = GetPosDaIncr(aCol,nRitmaxTrovato,aR,nSorte,nFine)
            Call ForzaIncrementoPuntatoreSvilSisInt(nPosDaIncr)
        End If
        If k Mod 100 = 0 Then
            Call AvanzamentoElab(1,100,GetPercCombSviluppate)
            'Call AvanzamentoElab(1,nColonneTot,GetCombSviluppate)
            Call Messaggio("Colonna " & k & " valide " & nColValide)
            If ScriptInterrotto Then Exit Do
        End If
    Loop
    Call Scrivi("svil       : " & k)
    Call Scrivi("Tempo elab : " & FormattaSecondi(Timer - nTimerStart))
End Sub
Function GetPosDaIncr(aCol,nRitMax,aR,nClasse,nFine)
    Dim k,Colonne,j,nRit
    Dim nUltimoNumComb
    Dim nRetIdPosDaIncr,nPosDaIncrPiuBassa
    Dim nNumeriDaPrendere
    ReDim aSubCol(nClasse)
    ' questa funzione riceve la combinazione sviluppata dall'algoritmo principale e la scompone
    ' sviluppando le colonne di classe uguale alla sorte cercata (valore passato in nClasse)
    ' calcola il ritardo delle colonne scomposte , appena trova colonne con ritardo piu basso
    ' di quello massimo conosciuto allora  cerca la colonna migliore.
    ' al termine torna la posizione da incrementare nello sviluppo integrale per fare in modo di saltare colonne
    ' aCol -- > Combinazione da scomporre in classe nClasse
    ' nRitMax -- > Ritardo massimo trovato durante la routine
    ' aR -- > Ruote analizzate
    ' nClasse -- > Sorte per la quale si analizza aCol
    ' nFine -- > Estrazione dalla quale calcolare il ritardo
    nNumeriDaPrendere = UBound(aCol) - 1 ' prendiamo i numeri della colonna escludendo l'ultimo numero
    ' l'ultimo numero va escluso perche le colonne che lo conterrebbero per
    ' via dell'algoritmo non sarebbero utili a far saltare colonne
    nPosDaIncrPiuBassa = 100 ' si parte da un numero alto impossibile
    ' imposto i numeri da sviluppare creando un array per contenerli
    ' i numeri sono letti dalla combinazione sviluppata passata dall'algoritmo principale
    ReDim aN(nNumeriDaPrendere)
    For k = 1 To nNumeriDaPrendere
        aN(k) = aCol(k)
    Next
    ' sviluppo le colonne in memoria in pratica scompongo aCol
    ' in subcombinazioni della classe uguale alal sorte che analizzo (valore in nClasse)
    Colonne = SviluppoIntegrale(aN,nClasse)
    ' ciclo sulle colone sviluppate per cercare la piu conveniente per saltare piu
    ' colonne possibili nell'algoritmo principale
    For k = 1 To UBound(Colonne)
        ' alimento un array con i numeri per calcolare il ritardo dell subcolonna
        For j = 1 To nClasse
            aSubCol(j) = Colonne(k,j)
        Next
        ' calcola ritardo
        nRit = RitardoCombinazioneTurbo(aR,aSubCol,nClasse,nFine)
        If nRit < nRitMax Then
            'se il ritardo è minore del Ritardo Max conosciuto fino a quel momento allora
            'cerco la colonna che abbia le qualità per far saltare piu colonne possibili
            ' devo individuare in che posizione si trova l'ultimo numero della subcolonna
            ' piu la posizione è bassa maggiore saranno le colonne saltate dall'algoritmo
            For j = 1 To nNumeriDaPrendere 'UBound(aCol)-1
                If aCol(j) = aSubCol(nClasse) Then
                    ' ho individuato il numero contenuto nell'ultima posizione della sub colonna
                    ' e so in che posizione si trova nella colonna aCol
                    If j < nPosDaIncrPiuBassa Then
                        ' cerco la posizione piu bassa possibile
                        nPosDaIncrPiuBassa = j
                    End If
                    ' esce dal ciclo perche il numero è stato trovato
                    Exit For
                End If
            Next
        End If
    Next
    If nPosDaIncrPiuBassa <> 100 Then
        ' al termine se la variabile nPosDaIncrPiuBassa è diversa dal valore dato per default
        ' vuol dire che sappiamo quale posizione andare ad incrementare per far saltare delle colonne
        GetPosDaIncr = nPosDaIncrPiuBassa
    Else
        ' se nPosDaIncrPiuBassa  rimane al suo valre di default torna 0 e non salta colonne
        GetPosDaIncr = 0
    End If
End Function
Function FormattaSecondi(s)
    'Questa Function trasforma il numero di secondi passato come parametro in una stringa
    ' passando i secondi si ottengono ore  minuti e secondi  in formato hh:mm:ss
    ' s ---> Numero di secondi da formattare
    ' ritorna una stringa il cui formato è hh:mm:ss (la function non funziona se in totale abbiamo piu di 99 ore )
    Dim hh
    Dim Mm
    Dim Ss
    Dim TimeStr
    hh = s \ 3600
    Mm =(s Mod 3600) \ 60
    Ss = s -((hh * 3600) +(Mm * 60))
    TimeStr = Format2(hh) & ":" & Format2(Mm) & ":" & Format2(Ss)
    FormattaSecondi = TimeStr
End Function






VALIDO PER SPAZIOMETRIA 1.5.46
SI POSSONO CAMBIARE CLASSE DI SVILUPPO , SORTE , RUOTE

PER QUESTIONI DI PERFORMANCE VENCONO REGISTRATE SOLO UNA COLONNA PER RITARDO.
SE SI VOGLIONO VEDEREL E COLONNE ALLO STESSO RITARDO BISOGNA CAMBIARE UNA LINEA NELLO SCRIPT
MA SARA PIU LENTO
 
Ultima modifica di un moderatore:

lotto_tom75

Advanced Premium Member
LuigiB;n1902338 ha scritto:
Ciao a tutti , prendendo spunto da una richiesta di LottoTom sono qui a presentare una nuova funzione presente nello spazioscript
che sapientemente utilizzata permette di agire internamente sullo sviluppo dei sistemi integrali facendo saltare delle colonne e velocizzando cosi l'elaborazione di sistemi prima impossibili da elaborare.
La funzione è molto semplice non è lei che fa quello che ho detto nel titolo del post ma è lo script che propongo che per suo mezzo lo fa.
Questo script che fa uso della citata nuova funzione potrebbe sembrare complesso ma se si segue la spiegazione
si capisce senza problemi , per ora non diciamo ancora il nome di questa nuova funzione del linguaggio

La prima cosa necessaria è capire come Spaziometria internamente sviluppa i sistemi integrali.
Il nostro esempio si basa su un sistema di 90 numeri in decine le cui combinazioni integrali sono 5.720.645.481.903
ad esempio per cercare la decina piu ritardata su due ruote mentre prima era impossibile ora ci vogliono 51 minuti sul mio pc , ovviamente con combinazioni inferiori ci vuole ancora meno tempo.

Per capire lo script vediamo prima come spaziometria sviluppa internamente le combinazioni dei sistemi integrali.
La prima cosa che fa è crearsi una matrice con il numero di righe pari alla classe di sviluppo
ogni riga contiene i numeri che possono comparire in ciascuna delle posizioni
vediamo che in questo caso ogni riga contiene 81 numeri




dopo aver creato la matrice inizia lo sviluppo delle colonne ,
internamente Spaziometria ha un array che chiameremo Puntatore
Questo array ha il numero di elementi pari alla classe di sviluppo
dato che il nostro esempio è a classe 10 questo array Puntatore internamente
è definito Puntatore(10)

per ognuna delle 10 posizioni Puntatore memorizzza un numero che va da 1 a 81
cioè un valore compreso tra 1 e il numero massimo di numeri presenti in una riga.

gestendo l'incremento dei valori nell'array Puntatore Spaziometria sviluppa le colonne
al primo passaggio tutti gli elementi dell'array puntatore avranno valore 1
identificando grazie alla matrice la decina 1.2.3.4.5.6.7.8.9.10
poi l'ultimo lelemento di puntatore si incrementa di 1 e si è pronti per leggere la colonan successiva.

quando l'incremento di 1 produce un valore superiore ad 81 (cioè al numero di numeri per riga)
allora il puntatore individua l'elemento precedente a quello che ha superato il limite e lo incrementa
a sua volta di 1 portando poi tutti i valori successivi dell'array allo stesso valore individuato e il giro ricomincia
co la colonna successiva , al termine l'ultima colonna vedrà l'array puntatore avere i valori 81.81.81.81.81.81.81.81.81.81
identificando quindi la decina 81.82.83.84.85.86.87.88.89.90

quanto spiegato si puo capire meglio guardando la successiva immagine




la nuova funzione che ho anticipato si chiama ForzaIncrementoPuntatoreSvilSisInt

proprio perche consente di agire sull'array puntatore incrementando il valore di una determinata posizione

si capisce che incrementando arbitrariamente una delle posizioni del puntatore si ha l'effetto di far saltare
dei cicli e quindi un sacco di colonne.
Come possiamo sfruttare questo fatto a nostro favore per cercare la lunghetta piu ritardata ?
Lo dimostra lo script successivo.

Che cosa fa lo script ?

Sviluppa 90 numeri in decine e trova la lunghetta piu ritardata per ambo su 2 ruote , questi valori sono facilmente cambiabili.

come funziona ?

Lo script inizia a sviluppare le decine , ogni decina viene scomposta in ambi , per ognuno di questi ambi vine calcolato il ritardo.
Mano mano che lo script elabora le colonne avrà individuato un ritardo massimo sempre maggiore , ogni volta che uno degli ambi
ottenuti dalla scomposizione della decina corrente ha un ritardo inferiore a quello max gia trovato vuol dire che siamo in presenza
di una colonna (di una decina) che finche contierrà quella combinazione (l'ambo) non potrà mai avere un ritardo maggiore di quello che gia sappiamo
allora dobbiamo sfruttare questo fatto per fare in modo di far saltare tutte le decine che contengono l'ambo incriminato
Per farlo dobbiamo vedere come cade il nostro ambo dentro la matrice di sviluppo interna di spaziomeria , una volta che abbiamo visto in quale posizione cade l'ultimo numero dell'ambo sappiamo che con la funzione ForzaIncrementoPuntatoreSvilSisInt dobbiamo incrementare il valore dell'elemento trovato nell'array Puntatore , in questo modo salteremo delle colonne , per rendere ancora piu efficace la ricerca l'algoritmo cerca la combinaxione piu conveniente tra gli ambi per far saltare piu colonne possibili , infatti sono da preferire gl ambi che vedono il secondo numero comparire nella posizione piu bassa possibile da 1 a 10 della decina, il tutto per chi ha voglia si capisce con lo script ,

Codice:
Option Explicit
Sub Main
Dim k,s
Dim nClasse,nColonneTot
ReDim aNumeri(90)
Dim aCol
Dim nRitmaxTrovato,nRitMax
Dim nSorte
Dim nPosDaIncr
Dim nFine
Dim nColValide
Dim nRitardoNat
Dim nTimerStart


nFine = EstrazioneFin
ReDim aR(2)
aR(1) = BA_
aR(2) = CA_
nSorte = 2
nClasse = 10 ' sviluppo in decine






' da qui in poi non cambiare niente
nTimerStart = Timer
nRitardoNat = 1 / Prob(nClasse,nSorte,UBound(aR))
nRitmaxTrovato = nRitardoNat
nRitmaxTrovato = CInt(InputBox("Inserire il ritardo minimo." & vbCrLf & "Il valore proposto è il ritardo naturale","Ritardo minimo",nRitmaxTrovato))
Call Scrivi("integrali : " & Combinazioni(90,nClasse))
' imposto i numeri da sviluppare
For k = 1 To 90
aNumeri(k) = k
Next
'inizializza lo sviluppo
nColonneTot = InitSviluppoIntegrale(aNumeri,nClasse)
nColValide = 0
k = 0
' ciclo che continua fiono a quando le colonne non finiscono
Do While GetCombSviluppo(aCol)
k = k + 1 ' conteggio colonna corrente
nRitMax = RitardoCombinazioneTurbo(aR,aCol,nSorte,nFine)
'If nRitMax >= nRitmaxTrovato Then
If nRitMax > nRitmaxTrovato Then
nColValide = nColValide + 1
nRitmaxTrovato = nRitMax
' costruisco la stringa che contiene la colonna
s = FormatSpace(k,10,True) & "- " & FormatSpace(StringaNumeri(aCol),nClasse * 3) & " Rit : " & FormatSpace(nRitMax,10,True)
Call Scrivi(s)
Else
' cerca le sottocolonne che contravvengono al RitMax
' e individua quella piu conveniente per far saltare piu combinazioni possibili
nPosDaIncr = GetPosDaIncr(aCol,nRitmaxTrovato,aR,nSorte,nFine)
Call ForzaIncrementoPuntatoreSvilSisInt(nPosDaIncr)
End If
If k Mod 100 = 0 Then
Call AvanzamentoElab(1,100,GetPercCombSviluppate)
'Call AvanzamentoElab(1,nColonneTot,GetCombSviluppate)
Call Messaggio("Colonna " & k & " valide " & nColValide)
If ScriptInterrotto Then Exit Do
End If
Loop
Call Scrivi("svil : " & k)
Call Scrivi("Tempo elab : " & FormattaSecondi(Timer - nTimerStart))
End Sub
Function GetPosDaIncr(aCol,nRitMax,aR,nClasse,nFine)
Dim k,Colonne,j,nRit
Dim nUltimoNumComb
Dim nRetIdPosDaIncr,nPosDaIncrPiuBassa
Dim nNumeriDaPrendere
ReDim aSubCol(nClasse)
' questa funzione riceve la combinazione sviluppata dall'algoritmo principale e la scompone
' sviluppando le colonne di classe uguale alla sorte cercata (valore passato in nClasse)
' calcola il ritardo delle colonne scomposte , appena trova colonne con ritardo piu basso
' di quello massimo conosciuto allora cerca la colonna migliore.
' al termine torna la posizione da incrementare nello sviluppo integrale per fare in modo di saltare colonne
' aCol -- > Combinazione da scomporre in classe nClasse
' nRitMax -- > Ritardo massimo trovato durante la routine
' aR -- > Ruote analizzate
' nClasse -- > Sorte per la quale si analizza aCol
' nFine -- > Estrazione dalla quale calcolare il ritardo
nNumeriDaPrendere = UBound(aCol) - 1 ' prendiamo i numeri della colonna escludendo l'ultimo numero
' l'ultimo numero va escluso perche le colonne che lo conterrebbero per
' via dell'algoritmo non sarebbero utili a far saltare colonne
nPosDaIncrPiuBassa = 100 ' si parte da un numero alto impossibile
' imposto i numeri da sviluppare creando un array per contenerli
' i numeri sono letti dalla combinazione sviluppata passata dall'algoritmo principale
ReDim aN(nNumeriDaPrendere)
For k = 1 To nNumeriDaPrendere
aN(k) = aCol(k)
Next
' sviluppo le colonne in memoria in pratica scompongo aCol
' in subcombinazioni della classe uguale alal sorte che analizzo (valore in nClasse)
Colonne = SviluppoIntegrale(aN,nClasse)
' ciclo sulle colone sviluppate per cercare la piu conveniente per saltare piu
' colonne possibili nell'algoritmo principale
For k = 1 To UBound(Colonne)
' alimento un array con i numeri per calcolare il ritardo dell subcolonna
For j = 1 To nClasse
aSubCol(j) = Colonne(k,j)
Next
' calcola ritardo
nRit = RitardoCombinazioneTurbo(aR,aSubCol,nClasse,nFine)
If nRit < nRitMax Then
'se il ritardo è minore del Ritardo Max conosciuto fino a quel momento allora
'cerco la colonna che abbia le qualità per far saltare piu colonne possibili
' devo individuare in che posizione si trova l'ultimo numero della subcolonna
' piu la posizione è bassa maggiore saranno le colonne saltate dall'algoritmo
For j = 1 To nNumeriDaPrendere 'UBound(aCol)-1
If aCol(j) = aSubCol(nClasse) Then
' ho individuato il numero contenuto nell'ultima posizione della sub colonna
' e so in che posizione si trova nella colonna aCol
If j < nPosDaIncrPiuBassa Then
' cerco la posizione piu bassa possibile
nPosDaIncrPiuBassa = j
End If
' esce dal ciclo perche il numero è stato trovato
Exit For
End If
Next
End If
Next
If nPosDaIncrPiuBassa <> 100 Then
' al termine se la variabile nPosDaIncrPiuBassa è diversa dal valore dato per default
' vuol dire che sappiamo quale posizione andare ad incrementare per far saltare delle colonne
GetPosDaIncr = nPosDaIncrPiuBassa
Else
' se nPosDaIncrPiuBassa rimane al suo valre di default torna 0 e non salta colonne
GetPosDaIncr = 0
End If
End Function
Function FormattaSecondi(s)
'Questa Function trasforma il numero di secondi passato come parametro in una stringa
' passando i secondi si ottengono ore minuti e secondi in formato hh:mm:ss
' s ---> Numero di secondi da formattare
' ritorna una stringa il cui formato è hh:mm:ss (la function non funziona se in totale abbiamo piu di 99 ore )
Dim hh
Dim Mm
Dim Ss
Dim TimeStr
hh = s \ 3600
Mm =(s Mod 3600) \ 60
Ss = s -((hh * 3600) +(Mm * 60))
TimeStr = Format2(hh) & ":" & Format2(Mm) & ":" & Format2(Ss)
FormattaSecondi = TimeStr
End Function






VALIDO PER SPAZIOMETRIA 1.5.46
SI POSSONO CAMBIARE CLASSE DI SVILUPPO , SORTE , RUOTE



NON HO PAROLE... :eek: anzi si... GRAZIE LUIGI!!!!!!!!!!!!!!!!
Ti vogliamo Presidente!!! :p e le magliette con su scritto ad es.
"SPAZIOMETRIA PER UN MONDO MIGLIORE" :) quando le fai??? :rolleyes: ;)
Scarico subito la nuova versione del programma MITOOOOO! :D
 
Ultima modifica:
L

LuigiB

Guest
Ciao Tom , non esagerare con il numero di combinazioni io per fare la prova ho aspettato 51 minuti .....
 

lotto_tom75

Advanced Premium Member
LuigiB;n1902343 ha scritto:
Ciao Tom , non esagerare con il numero di combinazioni io per fare la prova ho aspettato 51 minuti .....


Ok non esagero... dopo i primi 30 giorni di elaborazione... mi fermo... promesso... :p ahahah :D
A parte gli scherzi... appena ho finito di provare la tua nuova ferrari... di bit... ti faccio sapere come l'ho trovata! ;) GRAZIE e COMPLIMENTIII ANCORAAA :)
 
Ultima modifica:

lotto_tom75

Advanced Premium Member
No Title

Dunque Luigi lo sto testando con questo tentativo di analisi:

Codice:
nFine = EstrazioneFin
ReDim aR(1)
aR(1) = TU_
'aR(2) = CA_
nSorte = 3
nClasse = 10 ' sviluppo in decine

e questa piccola modifichina per poter importare i numeri ridotti voluti (49) rispetto i 90

Codice:
Dim QuantitaNumeriScelti

ReDim aNum(0)
QuantitaNumeriScelti = ScegliNumeri(aNum)


'inizializza lo sviluppo
'nColonneTot = InitSviluppoIntegrale(aNumeri,nClasse)

nColonneTot = InitSviluppoIntegrale(aNum,nClasse)

Nonostante lo script sia davvero una potenza, mi appaiono questi due blocchi in fase di run time (vedi foto allegate)

blocco 1 ( mi chiede sempre se voglio interrompere o meno lo script... cosa che vorrei evitare... in modo che nn richieda nessun intervento manuale fino alla fine dell'elaborazione )

e blocco 2 (molto prima del termine della stessa...)


Ad ogni modo per ricerche un pò più contenute... (es. quartine x T su tutte ecc...) è impressionante la velocità di elaborazione di questi tuoi nuovi fiammanti script e funzione! Sei un magooo! :D


Un'altra cosa... essendo, come nel tuo esempio che ti ha richiesto 51 min, anche nel mio oltre 1 miliardo di colonne da elaborare è possibile aumentare ulteriormente... la velocità in qualche modo oppure il passo 100 è obbligatorio? (scusa se ho detto un eresia come credo di aver fatto quasi sicuramente) ;) Ciao!
 

Allegati

  • photo10983.jpg
    photo10983.jpg
    28,7 KB · Visite: 0
  • photo10984.jpg
    photo10984.jpg
    38,1 KB · Visite: 0
Ultima modifica:
L

LuigiB

Guest
ciao Tom quei due messaggi dipendono dallo srtesso motivo , hai impostato il menu a tendina relativo al tempo di attea script al valore infinito invece che a quello di default 3 minuti ?
Per incrementare ulteriormente la velocità si puo agire sulla linea che richiama la nuova funzione di cui ho parlato.
Come avrai visto quella funzione attualmente riceve solo un parametro cioè la posizione del puntatore da incrementare , epr default lo incrementa di uno , ma tu puoi mettere una virgola e inserire un valore maggiore (senza esagerare per sempio 2 o 3) .. questo aumenta la velocita ma esclude la precisione si potrebbero saltare colonne non da saltare in questo modo ...
 
Ultima modifica di un moderatore:
L

LuigiB

Guest
una considerazione da fare su questo algoritmo è ch esso potrebbe essere davvero molto efficente come anche no .... in realtà dipende da come sono combinate le estrazioni e il tipo di ricerca che si sta facendo.

Si ha velocità quando :
Tanto piu alta la classe di sviluppo quanto piu bassa la sorte cercata , per esempio cercare un ambo in decina sarà piu veloce che cercare un terno sempre in decina.

Quando esistono combinazioni con basso ritardo tra quelle che si formano con i primi 20 numeri
dei 90.
Se malauguratamente stiamo cercando ambo in decina e l'ambo 1.2 fosse quello che poi si scoprira il piu ritardato di tutti allora l'algoritmo non sarà efficiente come se fosse il contrario,
 

lotto_tom75

Advanced Premium Member
No Title

LuigiB;n1902617 ha scritto:
ciao Tom quei due messaggi dipendono dallo srtesso motivo , hai impostato il menu a tendina relativo al tempo di attea script al valore infinito invece che a quello di default 3 minuti ?
Per incrementare ulteriormente la velocità si puo agire sulla linea che richiama la nuova funzione di cui ho parlato.
Come avrai visto quella funzione attualmente riceve solo un parametro cioè la posizione del puntatore da incrementare , epr default lo incrementa di uno , ma tu puoi mettere una virgola e inserire un valore maggiore (senza esagerare per sempio 2 o 3) .. questo aumenta la velocita ma esclude la precisione si potrebbero saltare colonne non da saltare in questo modo ...

Ciao Grandeee!
Adesso... SI!

(vedi img allegata che non riesco più a mettere all'interno del post dove voglio...:()

L'ho attivato adesso!!!

Solo oggi, grazie alla tua dritta, mi sono
accorto di questa spettacolare nuova (x me...)
plancia di comando per le opzioni! :eek: :D
Che figataaaaaaaaaa!!! :eek: :p :)

Appena (e se...) vinco bene... :rolleyes:
ti faccio un monumento e ti chiedo l'iban!!! ;)

Ciaooo Grandissimooo Luigiiiiiiiiiiiiiiiiiiiiiiiiiiii,
per me, e credo anche per moltissimi altri/e
(riguardo il lotto e non solo...), sei...
l'Albert Einstein dei nostri giorni!
GRAZIEEEEEEEEEEEEEEEE


ps: Ho provato a sviluppare 10ine x T su TUTTE con appena... 49 numeri.. "importati da tabella" per un totale potenziale di sole... 8.217.822.536 colonne :D ma quando interrompo lo script perchè ci mette ancora troppo.. (oltre 10 ore... ed era ancora solo a 2 tacchette...) anzichè riportarmi come combinazioni integrali quella cifra mi riporta quella corrispondente alla generazione integrale di 10ine con 90 numeri ovvero la mastodontica... e impossibile attualmente da elaborare quantità di... 5.720.645.481.903 colonne (non so nemmeno come si traduce in lettere :D). Considerando ciò... il mio dubbio è che... nonostante la tabella per importare i numeri non dia errore e venga calcolato tutto correttamente non vengano considerati dal tuo script (da me leggermente modificato) solo... i 49 numeri importati ma erroneamente... sempre tutti e 90... E da qui i tempi biblici... ;) Che ne pensi Maestro? Grazie 1000 Ciao Tom
 

Allegati

  • photo10999.jpg
    photo10999.jpg
    44,3 KB · Visite: 0
Ultima modifica:

solare

Advanced Member >PLATINUM<
Ciao Luigi, complimenti ancora per questo tuo ultimo script. Se posso permettermi di dare una mia idea , si potrebbe realizzare la stessa cosa ma tenendo presente le combinazioni più frequenti ?
 
L

LuigiB

Guest
ciao Solare , purtroppo la tua proposta di farlo anche per frequenza non si addice a questo tipo di algoritmo che è adatto per i ritardi e che si basa proprio sui ritardi ..
 

i legend

Premium Member
Non posso testarlo al momento, ma studiarlo è qualcosa di eccezzzzzzzzzzzzzionale Veramennnnnnnnte! Ciao a Tutti:)
 

Ultima estrazione Lotto

  • Estrazione del lotto
    giovedì 18 aprile 2024
    Bari
    13
    39
    14
    70
    78
    Cagliari
    67
    65
    03
    87
    63
    Firenze
    85
    90
    19
    67
    78
    Genova
    60
    81
    39
    33
    13
    Milano
    90
    01
    83
    11
    88
    Napoli
    18
    12
    80
    29
    19
    Palermo
    50
    83
    40
    24
    12
    Roma
    74
    48
    75
    65
    37
    Torino
    80
    46
    44
    27
    30
    Venezia
    70
    16
    72
    03
    89
    Nazionale
    89
    22
    06
    87
    13
    Estrazione Simbolotto
    Genova
    28
    21
    43
    25
    17
Alto