lotto_tom75
Advanced Premium Member
[No message]
Ultima modifica:
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 ?