Option Explicit
Class clsCombinazione
Private aNum
Private aRuote
Private mFrequenza
Private mSorte
Private mFine,mInizio
Public Property Get Frequenza
Frequenza = mFrequenza
End Property
Public Property Get Sorte
Sorte = mSorte
End Property
Public Property Get EstrazioneInizio
EstrazioneInizio = mInizio
End Property
Public Property Get EstrazioneFine
EstrazioneFine = mFine
End Property
Function GetNumeri()
GetNumeri = aNum
End Function
Function GetRuote()
GetRuote = aRuote
End Function
Function GetQuantitaRuote
GetQuantitaRuote = UBound(aRuote)
End Function
Sub AggiungiRuota(r)
Dim i
i = UBound(aRuote) + 1
ReDim Preserve aRuote(i)
aRuote(i) = r
End Sub
Function GetStringaRuote
Dim k , s
s = ""
For k = 1 To UBound(aRuote)
s = s & SiglaRuota (aRuote (k)) & "."
Next
GetStringaRuote = RimuoviLastChr( s , ".")
End Function
Sub SetDati(aN,aR,Sorte,Inizio,Fine)
aNum = aN
aRuote = aR
mSorte = Sorte
mInizio = Inizio
mFine = Fine
End Sub
Sub CalcolaFrequenza(aN,aR,nSorte,EstrIni,EstrFin)
aNum = aN
aRuote = aR
mSorte = nSorte
mInizio = EstrIni
mFine = EstrFin
mFrequenza = SerieFreqTurbo(mInizio,mFine,aNum,aRuote,mSorte)
End Sub
End Class
Sub Main
Dim r,k
Dim aNumeri,nNumSel,aCol,nColonneSvil
ReDim aRuote(1)
Dim nClasse,nSorte,nColonneTot
Dim CollLunghette
Dim clsComb
Dim Inizio,Fine
Dim mFreqMinima
nClasse = 3
nSorte = 3
mFreqMinima = 0
Inizio = EstrazioneIni
Fine = EstrazioneFin
Set CollLunghette = GetNewCollection
nNumSel = ScegliNumeri(aNumeri)
nColonneSvil = 0
If nNumSel >= nClasse Then
nColonneTot = InitSviluppoIntegrale(aNumeri,nClasse)
' ciclo che continua fiono a quando le colonne non finiscono
Do While GetCombSviluppo(aCol)
For r = 1 To 12
If r <> 11 Then
aRuote(1) = r
Set clsComb = New clsCombinazione
Call clsComb.CalcolaFrequenza(aCol,aRuote,nSorte,Inizio,Fine)
If clsComb.Frequenza <= mFreqMinima Then
Call AddFormazioneTrovata(clsComb,CollLunghette)
End If
End If
Next
nColonneSvil = nColonneSvil + 1
If nColonneSvil Mod 100 = 0 Then
Call AvanzamentoElab(0,nColonneTot,nColonneSvil)
If ScriptInterrotto Then Exit Do
Call DoEventsEx
End If
Loop
Call AvanzamentoElab(0,nColonneTot,nColonneSvil)
Scrivi "Analisi da "
Scrivi "Inizio : " & GetInfoEstrazione(Inizio)
Scrivi "Fine : " & GetInfoEstrazione(Fine)
Scrivi "Numeri : " & StringaNumeri (aNumeri)
Scrivi "Sviluppo in classe " & nClasse
Scrivi "Sorte " & NomeSorte(nSorte)
Scrivi "Elenco delle combinazioni presenti con frequenza minore uguale a " & mFreqMinima
Scrivi
Dim aTitoli
aTitoli = Array ("" ,"Combinazione" , "Q Ruote" , "Ruote")
Call InitTabella ( aTitoli ,vbYellow)
ReDim aValori (3)
For Each clsComb In CollLunghette
'Call Scrivi (StringaNumeri (clsComb.GetNumeri ,,True ) & " su " & clsComb.GetStringaRuote )
aValori (1)=StringaNumeri (clsComb.GetNumeri ,,True )
aValori(2) = clsComb.GetQuantitaRuote
aValori(3) = clsComb.GetStringaRuote
Call AddRigaTabella (aValori)
Next
Call CreaTabella ( 2)
End If
End Sub
Sub AddFormazioneTrovata(clsComb,coll)
Dim sKey
Dim clsCombTmp
sKey = "key" & StringaNumeri(clsComb.GetNumeri,".",True)
Set clsCombTmp = GetItemColl(sKey,coll)
If clsCombTmp Is Nothing Then
Set clsCombTmp = New clsCombinazione
Call clsCombTmp.SetDati(clsComb.GetNumeri,clsComb.GetRuote,clsComb.Sorte,clsComb.EstrazioneInizio,clsComb.EstrazioneFine)
Call coll.Add(clsCombTmp,sKey)
Else
Dim aR
aR = clsComb.GetRuote
Call clsCombTmp.AggiungiRuota (aR(1) )
End If
End Sub
Function GetItemColl(sKey,Coll)
On Error Resume Next
Set GetItemColl = Coll(sKey)
If Err <> 0 Then
Set GetItemColl = Nothing
Err.Clear
End If
End Function