Novità

script

solare

Advanced Member >PLATINUM<
Se potete provarlo a me dopo l'avvio mostra pagina bianca senza risultati. Grazie

Option Explicit

Class clsCombinazione

Public aNumeri ' numeri che compongono la combinazione
Public aRitardi ' i ritardi negli ultimi cicli voluti dall'utente
Public aRitardiGlob ' ritardi globali della combinazione calcolati da 1 al maxRange
Public aIdEstrRitardi ' contiene gli id delle estrazioni alle quali si è calcolato il ritardo
Public nIdPrimoRitCons ' indice per l'array aRitardiGlob che indica il punto di inizio della serie consecutiva
Public nIdUltimoRitCons' indice per l'array aRitardiGlob che indica il punto di fine della serie consecutiva
Public nSommaUltim5
Public bUltimi5ritMaggDi11
Public bRitCorrMinoreDi12
Public Ruota
Public nRitConsecutiviMax
Public nIdEstrIni ' id Estrazione da cui parrte la serie consecutiva storica
Public nIdEstrFin ' id Estrazione in cui termina la serie consecutiva storica



Sub SetNumeriFromRigaCsv(sRiga)
Dim k
ReDim aV(0)
Call SplitByChar(sRiga,";",aV)
ReDim aNumeri(10)

For k = 1 To 10
If IsNumeric(aV(k)) Then
aNumeri(k) = CInt(aV(k))
Else

aNumeri(k) = 0
End If
Next

End Sub
Sub CalcolaTuttiRitardi(fine,Sorte,aRuote)




Dim nCicli
Dim nEstrFine

Dim k
Dim nMax


nEstrFine = fine
ReDim aRitardiGlob(nMax)
ReDim aIdEstrRitardi(nMax)


nCicli = 0

Do
nCicli = nCicli + 1
If nCicli > nMax Then
nMax = nMax + 100
ReDim Preserve aRitardiGlob(nMax)
ReDim Preserve aIdEstrRitardi(nMax)
End If

aRitardiGlob(nCicli) = RitardoCombinazione(aRuote,aNumeri,Sorte,nEstrFine)
aIdEstrRitardi(nCicli) = nEstrFine


nEstrFine = nEstrFine - aRitardiGlob(nCicli) - 1

If ScriptInterrotto Then Exit Do

Loop While nEstrFine > 0
ReDim Preserve aRitardiGlob(nCicli)
ReDim Preserve aIdEstrRitardi(nCicli)




End Sub

Sub CalcolaRitardi(fine,Sorte,aRuote,RitardoMinimo,CicliDiRitardo,UltimiRitardiDaConsiderare)



Dim nCicli
Dim k
Dim nRitTrovati

Call CalcolaTuttiRitardi(fine,Sorte,aRuote)
Call GetRitardiConsecMaggioriDiX(RitardoMinimo)


nCicli = CicliDiRitardo
nRitTrovati = UBound(aRitardiGlob)

ReDim aRitardi(CicliDiRitardo)




For k = 1 To CicliDiRitardo

If k <= nRitTrovati Then
aRitardi(nCicli) = aRitardiGlob(k)
nCicli = nCicli - 1
Else
Exit For
End If
If ScriptInterrotto Then Exit For

Next

bUltimi5ritMaggDi11 = True
For k =(CicliDiRitardo - UltimiRitardiDaConsiderare) To(CicliDiRitardo - 1)
nSommaUltim5 = nSommaUltim5 +(aRitardi(k))

If aRitardi(k) <= RitardoMinimo Then
bUltimi5ritMaggDi11 = False

End If
Next

If aRitardi(CicliDiRitardo) <= RitardoMinimo Then
bRitCorrMinoreDi12 = True
Else
bRitCorrMinoreDi12 = False
End If
End Sub


Sub GetRitardiConsecMaggioriDiX(RitardoMinimo)

Dim k
Dim nConsec
Dim nConsecMax
Dim nIdEstrA,nIdEstrB
Dim nIdRitA,nIdRitB
Dim nIdEstrATmp,nIdEstrBTmp
Dim nIdRitATmp,nIdRitBTmp





For k = UBound(aRitardiGlob) To 1 Step - 1

If aRitardiGlob(k) > RitardoMinimo Then
nIdEstrATmp = aIdEstrRitardi(k)
nIdRitATmp = k
nConsec = 0
Do While aRitardiGlob(k) > RitardoMinimo
nConsec = nConsec + 1
nIdEstrBTmp = aIdEstrRitardi(k)
nIdRitBTmp = k
k = k - 1
If k <= 0 Then Exit Do
Loop

If nConsec > nConsecMax Then

nConsecMax = nConsec
nIdEstrA = nIdEstrATmp
nIdEstrB = nIdEstrBTmp
nIdRitA = nIdRitATmp
nIdRitB = nIdRitBTmp
End If

k = k + 1
End If
If ScriptInterrotto Then Exit For

Next



nRitConsecutiviMax = nConsecMax
nIdEstrIni = nIdEstrB
nIdEstrFin = nIdEstrA

nIdPrimoRitCons = nIdRitB
nIdUltimoRitCons = nIdRitA



End Sub


End Class
Sub Main


Dim CollDecine
Dim Ruota,sorte
Dim RangeFine
Dim RitardoMinimo
Dim MaxDaMostrare
Dim CicliDiRitardo ' il numero dei ritardi da calcolare compreso l'ultimo
Dim UltimiRitardiDaConsiderare ' quanti ritardi considerare (escluso ultimo perche rit corrente)


Set CollDecine = GetNewCollection

sorte = 2 ' ambo

RitardoMinimo = 11
RitardoMinimo = CInt(InputBox("Inserire il valore per il ritardo naturale","Ritardo naturale",RitardoMinimo)) ' per la gestione degli ultimi 5 ritardi

CicliDiRitardo = 11
CicliDiRitardo = CInt(InputBox("Inserire il valore per i cicli di ritardo a ritroso da calcolare","Cicli di ritardo",CicliDiRitardo)) ' per la gestione degli ultimi 5 ritardi

UltimiRitardiDaConsiderare = 5
UltimiRitardiDaConsiderare = CInt(InputBox("Inserire il valore per identificare la quantita di ritardi (escluso l'ultimo che è il corrente) da valutare per la selezione","Cicli di ritardo",UltimiRitardiDaConsiderare)) ' per la gestione degli ultimi 5 ritardi


MaxDaMostrare = 100 ' le prime 100 combinazioni che hanno i 5 ultimi rit magiori di 11 ordinate per somma rit ultimi 5



ReDim aRuote(1)
ReDim abRuote(12)
Call ScegliRuote(aRuote,abRuote)

RangeFine = EstrazioneFin

If CicliDiRitardo - UltimiRitardiDaConsiderare <= 0 Then
MsgBox "I cicli di ritardo devono essere maggiori del valore che specifica quanti degli ultimi ritardi considerare"
Exit Sub
End If

If CicliDiRitardo > 0 And UltimiRitardiDaConsiderare > 0 And RitardoMinimo > 0 Then

For Ruota = 1 To 12
If abRuote(Ruota) Then
If Ruota <> 11 Then


Call AlimentaCollectionDecine(CollDecine,RangeFine,sorte,Ruota,RitardoMinimo,CicliDiRitardo,UltimiRitardiDaConsiderare)


End If
End If
Next

If CollDecine.count > 0 Then
Call Messaggio("Ordinamento in corso.....")
Call OrdinaItemCollection(CollDecine,"nSommaUltim5")

Call Messaggio("Creazione tabella riepilogativa.....")
Call CreaOutput(CollDecine,MaxDaMostrare,RitardoMinimo,CicliDiRitardo,UltimiRitardiDaConsiderare)

Call OrdinaItemCollection(CollDecine,"nRitConsecutiviMax")

Call Messaggio("Creazione tabella riepilogativa cicli consec max.....")
Call CreaOutputCicliConsecMax(CollDecine,MaxDaMostrare,RitardoMinimo,UltimiRitardiDaConsiderare)



End If
End If


End Sub

Sub CreaOutput(coll,MaxDaMostrare,RitardoMinimo,CicliDiRitardo,UltimiRitardiDaConsiderare)



Dim k,i
Dim clsDecina
Dim nColonne

nColonne = 3 + CicliDiRitardo + 2

ReDim aTitoli(nColonne)

aTitoli(1) = "Numero"
aTitoli(2) = " Combinazione "
aTitoli(3) = "Ruota "
For k = 1 To CicliDiRitardo - 1
aTitoli(k + 3) = "R" &(k) & " "
Next
aTitoli(nColonne - 2) = "Ritardo"
aTitoli(nColonne - 1) = "S. R" &(CicliDiRitardo - UltimiRitardiDaConsiderare) & "-R" &(CicliDiRitardo - 1)
aTitoli(nColonne) = "CONS MAX"




Call InitTabella(aTitoli,vbYellow)

For Each clsDecina In coll

If clsDecina.bUltimi5ritMaggDi11 Then
If clsDecina.bRitCorrMinoreDi12 Then

i = i + 1

ReDim aValori(nColonne)
aValori(1) = i
aValori(2) = StringaNumeri(clsDecina.aNumeri)
aValori(3) = NomeRuota(clsDecina.Ruota)
For k = 1 To CicliDiRitardo

aValori(k + 3) = clsDecina.aRitardi(k)
Next
aValori(nColonne - 1) = clsDecina.nSommaUltim5
aValori(nColonne) = clsDecina.nRitConsecutiviMax


Call AddRigaTabella(aValori,,"right")

If i >= MaxDaMostrare Then Exit For
End If
End If
If ScriptInterrotto Then Exit For

Next

Call Scrivi("Sono mostrate le combinazioni i cui ultimi " & UltimiRitardiDaConsiderare & _
" ritardi sono maggiori di " & RitardoMinimo & " ordinate per somma ultimi ritardi",True)


Call Scrivi

Call CreaTabella





End Sub
Sub CreaOutputCicliConsecMax(coll,MaxDaMostrare,RitardoMinimo,UltimiRitardiDaConsiderare)




Dim k,i
Dim clsDecina
Dim nColonne
Dim idCol
Dim idRit
Dim CicliDiRitardo


Set clsDecina = coll(1)
CicliDiRitardo = clsDecina.nRitConsecutiviMax '(clsDecina.nIdUltimoRitCons + 1) - clsDecina.nIdPrimoRitCons
nColonne = 3 + CicliDiRitardo + 3

ReDim aTitoli(nColonne)

aTitoli(1) = "Numero"
aTitoli(2) = " Combinazione "
aTitoli(3) = "Ruota "
For k = 1 To CicliDiRitardo
aTitoli(k + 3) = "R" &(k) & " "
Next

aTitoli(nColonne - 2) = "Data Inizio "
aTitoli(nColonne - 1) = "Data Fine "

aTitoli(nColonne) = "CONS MAX"




Call InitTabella(aTitoli,vbYellow)

For Each clsDecina In coll


i = i + 1

ReDim aValori(nColonne)
aValori(1) = i
aValori(2) = StringaNumeri(clsDecina.aNumeri)
aValori(3) = NomeRuota(clsDecina.Ruota)
idCol = 3
idRit = clsDecina.nIdPrimoRitCons

For k = 1 To CicliDiRitardo ' clsDecina.nIdPrimoRitCons To clsDecina.nIdUltimoRitCons
idCol = idCol + 1

'If idRit <= UBound(clsDecina.aRitardiGlob) Then
aValori(idCol) = clsDecina.aRitardiGlob(idRit)
idRit = idRit + 1
'End If

Next
aValori(nColonne - 1) = DataEstrazione(clsDecina.nIdEstrIni)
aValori(nColonne - 2) = DataEstrazione(clsDecina.nIdEstrFin)
aValori(nColonne) = clsDecina.nRitConsecutiviMax


Call AddRigaTabella(aValori,,"right")

If i >= MaxDaMostrare Then Exit For

If ScriptInterrotto Then Exit For


Next

Call Scrivi("Sono mostrate le combinazioni che nel corso del periodo analizzato" & vbCrLf & _
" hanno avuto i maggiori cicli di ritardo consecutivo superiore di " & _
RitardoMinimo & " ordinate per cicli di ritardo consecutivo",True)

Call Scrivi("N.B. I ritardi mostrati sono quelli che hanno generato la consecutività")



Call Scrivi

Call CreaTabella





End Sub

Sub AlimentaCollectionDecine(coll,fine,Sorte,Ruota,RitardoMinimo,CicliDiRitardo,UltimiRitardiDaConsiderare)


Dim sPercorsoFileCsv
Dim k
Dim clsDecina

ReDim aRuote(1)

aRuote(1) = Ruota


sPercorsoFileCsv = GetDirectoryAppData & "decine.csv"

ReDim aLinee(0)
If LeggiRigheFileDiTesto(sPercorsoFileCsv,aLinee) Then
Call Messaggio(NomeRuota(Ruota) & " - Lettura combinazioni e calcolo ritardo... Attendere")
For k = 1 To UBound(aLinee)

Set clsDecina = New clsCombinazione

clsDecina.Ruota = Ruota

Call clsDecina.SetNumeriFromRigaCsv(aLinee(k))
Call clsDecina.CalcolaRitardi(fine,Sorte,aRuote,RitardoMinimo,CicliDiRitardo,UltimiRitardiDaConsiderare)

coll.Add clsDecina

Call AvanzamentoElab(1,UBound(aLinee),k)
Next
End If


End Sub
 

Ultima estrazione Lotto

  • Estrazione del lotto
    sabato 21 giugno 2025
    Bari
    07
    03
    45
    25
    05
    Cagliari
    20
    73
    88
    50
    15
    Firenze
    04
    19
    09
    52
    55
    Genova
    21
    47
    65
    53
    24
    Milano
    11
    64
    70
    67
    51
    Napoli
    59
    66
    83
    33
    03
    Palermo
    61
    74
    28
    62
    04
    Roma
    25
    29
    15
    54
    44
    Torino
    34
    22
    30
    59
    28
    Venezia
    42
    75
    06
    83
    84
    Nazionale
    36
    67
    41
    54
    56
    Estrazione Simbolotto
    Napoli
    02
    40
    06
    26
    29

Ultimi Messaggi

Indietro
Alto