lotto_tom75
Advanced Premium Member
[No message]
Ultima modifica:
Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature may not be available in some browsers.
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(12)
aR(01) = BA_
aR(02) = CA_
aR(03) = FI_
aR(04) = GE_
aR(05) = MI_
aR(06) = NA_
aR(07) = PA_
aR(08) = RO_
aR(09) = TO_
aR(10) = VE_
aR(11) = NZ_
'aR(12) = TT_
nSorte = AMBO_
nClasse = 10 ' sviluppo in decine
' da qui in poi non cambiare niente
nTimerStart = Timer
nRitardoNat = 01 / 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 = 01 To 90
aNumeri(k) = k
Next
'inizializza lo sviluppo
nColonneTot = InitSviluppoIntegrale(aNumeri,nClasse)
nColValide = 00
k = 00
' ciclo che continua fiono a quando le colonne non finiscono
Do While GetCombSviluppo(aCol)
k = k + 01 ' conteggio colonna corrente
nRitMax = RitardoCombinazioneTurbo(aR,aCol,nSorte,nFine)
'If nRitMax >= nRitmaxTrovato Then
If nRitMax > nRitmaxTrovato Then
nColValide = nColValide + 01
nRitmaxTrovato = nRitMax
' costruisco la stringa che contiene la colonna
s = FormatSpace(k,10,True) & " - " & FormatSpace(StringaNumeri(aCol,,True),nClasse * 03) & " 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 = 00 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) - 01 ' 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 = 100000 ' 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 = 01 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 = 01 To UBound(Colonne)
' alimento un array con i numeri per calcolare il ritardo dell subcolonna
For j = 01 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)-01
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 <> 100000 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 = 00
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
Option Explicit
Sub Main
Dim L , Nu,RU(1)
RU(1)= 11
L = "08.14.33.49.77"
Nu = Split("0." & L,".")
Scrivi StringaNumeri (Nu)
Scrivi RitardoCombinazioneTurbo (RU,Nu,AMBO_)
End Sub
joe;n1963758 ha scritto:Ciao Tom ...
Non ti curar di loro ma guarda e passa.
E' solo una "cosa tecnica".
Cartina di tornasole rilevatrice dell'attenzione ...
... che evidentemente è soggettiva, e varia da soggetto a soggetto.
A noi!
Lo script proposto al msg #47 eseguito per le cinquine alla data dell' 8 Marzo restituisce tra gli altri i 2 capilista:
04.18.24.62.83 Rit : 64
06.08.49.81.83 Rit : 81
Questo script certifica che a parità di parametri
tra il ritardo 64 ed il ritardo 81
c'è una cinquina che ha ritardo 78 ... non inclusa tra i risultati esposti.
Codice:Option Explicit Sub Main Dim L , Nu,RU(1) RU(1)= 11 L = "08.14.33.49.77" Nu = Split("0." & L,".") Scrivi StringaNumeri (Nu) Scrivi RitardoCombinazioneTurbo (RU,Nu,AMBO_) End Sub
Che mi dite ?