L
LuigiB
Guest
non usare tutte , seleziona invece le ruote che vuoi.
Per il resto io voorrei insegnaare piu che regalare...
Per il resto io voorrei insegnaare piu che regalare...
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
Scrivi Combinazioni ( 24 , 4)
Scrivi 3^4
Scrivi Combinazioni ( 24 , 4) * 3^4
End Sub
Sub Main()
Dim nn(10),ru(1)
w = 3
r = 11
ru(1) = r
num1 = Array(1,21,41)
num2 = Array(05,25,45)
num3 = Array(31,51,71)
num4 = Array(15,35,55,19,39,59)
num5 = Array(23)
num6 = Array(16,36,56)
num7 = Array(14,24,34,44)
num8 = Array(10,20,30)
num9 = Array(26,46,66)
num10 = Array(11)
ww1 = UBound(num1)
ww2 = UBound(num2)
ww3 = UBound(num3)
ww4 = UBound(num4)
ww5 = UBound(num5)
ww6 = UBound(num6)
ww7 = UBound(num7)
ww8 = UBound(num8)
ww9 = UBound(num9)
ww10 = UBound(num10)
'-----------------------------------------------
For a = 0 To ww1
nn(1) = num1(a)
For b = 0 To ww2
nn(2) = num2(b)
For c = 0 To ww3
nn(3) = num3(c)
For d = 0 To ww4
nn(4) = num4(d)
For e = 0 To ww5
nn(5) = num5(e)
For f = 0 To ww6
nn(6) = num6(f)
For g = 0 To ww7
nn(7) = num7(g)
For h = 0 To ww8
If ScriptInterrotto Then Exit For
nn(8) = num8(h)
For i = 0 To ww9
nn(9) = num9(i)
For j = 0 To ww10
nn(10) = num10(j)
st = SerieStoricoTurbo(1,EstrazioneFin - 1,nn,ru,w)
If st < 55 Then
cc = cc + 1
Messaggio FormatSpace(cc,3,1) & ") " & SiglaRuota(r) & " " & StringaNumeri(nn) & " at " & FormatSpace(st,3,1)
Scrivi FormatSpace(cc,3,1) & ") " & SiglaRuota(r) & " " & StringaNumeri(nn) & " st " & FormatSpace(st,3,1)
End If
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
End Sub
st = SerieStoricoTurbo(1,EstrazioneFin - 1,nn,ru,w)
If st < 55 Then
' metti la colonna nella tabella
end if
Ahahahah ahahahahChe sei la sorella di LottoTom ?
Option Explicit
Sub Main
Dim aLunghette,nQuantitaLung,nClasseFormazione
nQuantitaLung = AlimentaArrayLunghette(aLunghette)
If nQuantitaLung >= 2 Then
nClasseFormazione = Int(InputBox("Quanti numeri per ogni formazione in gioco da 2 a " & nQuantitaLung))
If nClasseFormazione >= 2 And nClasseFormazione <= nQuantitaLung Then
Call ProduciFormazioni(aLunghette,nClasseFormazione)
Else
MsgBox "Quantità errata",vbExclamation
End If
Else
MsgBox "Lunghette insufficient",vbExclamation
End If
End Sub
Function AlimentaArrayLunghette(aLunghette)
' per comodita le lunghette sono preimpostate ma nulla vieta di leggerle da un file o da inputbox
ReDim aLunghette(5)
aLunghette(1) = Split("0,66,67,69,78,72,89",",")
aLunghette(2) = Split("0,55,57,59,75,77,86",",")
aLunghette(3) = Split("0,65,68,79,88",",")
aLunghette(4) = Split("0,50,58,54,70,87",",")
aLunghette(5) = Split("0,56,52,76,85",",")
' la funzione torna il numero di lunghette ( l'elemento a indice 0 non è usato)
AlimentaArrayLunghette = UBound(aLunghette)
End Function
Sub ProduciFormazioni(aLunghette,nClasseFormazione)
Dim I
Dim k,aRetColonna,sLungUsate
ReDim aN(UBound(aLunghette))
For k = 1 To UBound(aN)
aN(k) = k
Next
ReDim aSegni(nClasseFormazione)
Call InitSviluppoIntegrale(aN,nClasseFormazione)
Do While GetCombSviluppo(aRetColonna)
sLungUsate = ""
For k = 1 To nClasseFormazione
aSegni(k) = aLunghette(aRetColonna(k))
sLungUsate = sLungUsate & aRetColonna(k) & "-"
Next
Call Messaggio("Sviluppo colonne tra le lunghette " & RimuoviLastChr(sLungUsate,"-"))
Call SviluppaColonne(aSegni,I)
If ScriptInterrotto Then Exit Do
DoEventsEx
Loop
End Sub
Sub SviluppaColonne(aSegni,I)
Dim nClasse,K,aTmp,nPnt,aRu(1),Fr
nClasse = UBound(aSegni)
ReDim aColonna(nClasse)
ReDim aPuntatore(nClasse)
ReDim aQSegni(nClasse)
aRu(1) = TT_
For K = 1 To nClasse
aTmp = aSegni(K)
aPuntatore(K) = 1
aQSegni(K) = UBound(aTmp)
Next
nPnt = nClasse
Do
For K = 1 To nClasse
aTmp = aSegni(K)
aColonna(K) = aTmp(aPuntatore(K))
Next
I = I + 1
Fr = SerieFreqTurbo(1,EstrazioneFin,aColonna,aRu,nClasse)
If Fr > 250 Then
Call Scrivi(FormatSpace(I,4,True) & ") " & StringaNumeri(aColonna) & " Fr " & Fr)
End If
Do While aPuntatore(nPnt) + 1 > aQSegni(nPnt)
nPnt = nPnt - 1
If nPnt = 0 Then Exit Do
Loop
If nPnt > 0 Then
aPuntatore(nPnt) = aPuntatore(nPnt) + 1
For K = nPnt + 1 To nClasse
aPuntatore(K) = 1
Next
nPnt = nClasse
End If
If ScriptInterrotto Then Exit Do
DoEventsEx
Loop While nPnt > 0
End Sub
Option Explicit
Const cOrdinaRit = 2
Const cOrdinaFrq = 3
Const cOrdinaRitMax = 4
Sub Main
Dim aLunghette,nQuantitaLung,nClasseFormazione,nMaxClasse
Dim aRuote,nSorte
Dim Inizio,Fine
Dim nTipoOrdinamento
Inizio = EstrazioneIni
Fine = EstrazioneFin
nQuantitaLung = AlimentaArrayLunghette(aLunghette)
If nQuantitaLung >= 2 Then
If VerificaDoppi(aLunghette) Then
nMaxClasse = Iif(nQuantitaLung <= 10,nQuantitaLung,10)
nClasseFormazione = Int(InputBox("Quanti numeri per ogni formazione in gioco da 2 a " & nMaxClasse))
nTipoOrdinamento = ScegliTipoOrdinamento
Call ScegliRuote(aRuote)
nSorte = ScegliEsito(2,2,nClasseFormazione)
If nTipoOrdinamento > 0 Then
If nClasseFormazione >= 2 And nClasseFormazione <= nMaxClasse Then
Call ProduciFormazioni(aLunghette,nClasseFormazione,aRuote,nSorte,Inizio,Fine,nTipoOrdinamento)
Else
MsgBox "Quantità errata",vbExclamation
End If
End If
End If
Else
MsgBox "Lunghette insufficient",vbExclamation
End If
End Sub
Function ScegliTipoOrdinamento
Dim aV,i
aV = Array("Ritardo","Frequenza","Ritardo Max")
i = ScegliOpzioneMenu(aV,,"Ordina per")
Select Case i
Case 0
ScegliTipoOrdinamento = cOrdinaRit
Case 1
ScegliTipoOrdinamento = cOrdinaFrq
Case 2
ScegliTipoOrdinamento = cOrdinaRitMax
Case Else
ScegliTipoOrdinamento = 0
End Select
End Function
Function VerificaDoppi(aLunghette)
Dim k,j,n,sNumeriNonValidi,sNumeriDoppi
ReDim aB(90)
sNumeriNonValidi = ""
sNumeriDoppi = ""
For k = 1 To UBound(aLunghette)
For j = 1 To UBound(aLunghette(k))
n = Int(aLunghette(k)(j))
If n > 0 And n <= 90 Then
If aB(n) Then
sNumeriDoppi = sNumeriDoppi & " Lunghetta " & k & " numero " & n & ","
Else
aB(n) = True
End If
Else
sNumeriNonValidi = sNumeriNonValidi & " Lunghetta " & k & " numero " & n & ","
End If
Next
Next
If sNumeriNonValidi <> "" Or sNumeriDoppi <> "" Then
If sNumeriNonValidi <> "" Then
MsgBox "Numeri non validi " & vbCrLf & sNumeriNonValidi,vbExclamation
End If
If sNumeriDoppi <> "" Then
MsgBox "Numeri ripetuti " & vbCrLf & sNumeriDoppi,vbExclamation
End If
VerificaDoppi = False
Else
VerificaDoppi = True
End If
End Function
Function AlimentaArrayLunghette(aLunghette)
' per comodita le lunghette sono preimpostate ma nulla vieta di leggerle da un file o da inputbox
'ReDim aLunghette(5)
' aLunghette(1) = Split("0,66,67,69,78,72,89",",") ' 6
' aLunghette(2) = Split("0,55,57,59,75,77,86",",") ' 6
' aLunghette(3) = Split("0,65,68,79,88",",") '4
' aLunghette(4) = Split("0,50,58,54,70,87",",") '5
' aLunghette(5) = Split("0,56,52,76,85",",") '4
ReDim aLunghette(24)
aLunghette(1) = Split("0,90,89,88,87,86,85",",")
aLunghette(2) = Split("0,84,83,82,81,80,79",",")
aLunghette(3) = Split("0,78,77,76,75,74,73",",")
aLunghette(4) = Split("0,72,71,70,69",",")
aLunghette(5) = Split("0,68,67,66,65",",")
aLunghette(6) = Split("0,64,63,62",",")
aLunghette(7) = Split("0,61,60,59",",")
aLunghette(8) = Split("0,58,57,56",",")
aLunghette(9) = Split("0,55,54,53",",")
aLunghette(10) = Split("0,52",",")
aLunghette(11) = Split("0,51",",")
aLunghette(12) = Split("0,50",",")
aLunghette(13) = Split("0,49",",")
aLunghette(14) = Split("0,48,47,46",",")
aLunghette(15) = Split("0,45,44,43",",")
aLunghette(16) = Split("0,42,41,40",",")
aLunghette(17) = Split("0,39,38,37",",")
aLunghette(18) = Split("0,36,35,34",",")
aLunghette(19) = Split("0,33,32,31",",")
aLunghette(20) = Split("0,30,29,28,27,26,25",",")
aLunghette(21) = Split("0,24,23,22,21",",")
aLunghette(22) = Split("0,20,19,18,17,16,15",",")
aLunghette(23) = Split("0,14,13,12,11,10,09",",")
aLunghette(24) = Split("0,08,07,06,05,04,03,02,01",",")
' la funzione torna il numero di lunghette ( l'elemento a indice 0 non è usato)
AlimentaArrayLunghette = UBound(aLunghette)
End Function
Sub ProduciFormazioni(aLunghette,nClasseFormazione,aRuote,nSorte,Inizio,fine,nTipoOrdinamento)
Dim I
Dim k,aRetColonna,sLungUsate
Dim nRitardo,nRitardoMax,nFrequenza
Dim aT
Dim nCombTraLunghette
Dim aPrimeCombinazioni
Dim nSviluppate,nDaSviluppare
ReDim aPrimeCombinazioni(10,1)
ReDim aN(UBound(aLunghette))
For k = 1 To UBound(aN)
aN(k) = k
Next
nCombTraLunghette = Combinazioni(UBound(aN),nClasseFormazione)
If MsgBox("Le combinazioni tra lunghette sono " & nCombTraLunghette & " continuo ?",vbQuestion + vbYesNo) = vbYes Then
aT = Array("","Formazione","Ritardo","Frequenza","RitardoMax")
Call InitTabella(aT)
ReDim aSegni(nClasseFormazione)
nDaSviluppare = InitSviluppoIntegrale(aN,nClasseFormazione)
Do While GetCombSviluppo(aRetColonna)
nSviluppate = nSviluppate + 1
sLungUsate = ""
For k = 1 To nClasseFormazione
aSegni(k) = aLunghette(aRetColonna(k))
sLungUsate = sLungUsate & aRetColonna(k) & "-"
Next
Call Messaggio("Sviluppo colonne tra le lunghette " & RimuoviLastChr(sLungUsate,"-") & " (" & nSviluppate & "/" & nDaSviluppare & ")")
Call SviluppaColonne(aSegni,I,aRuote,nSorte,Inizio,fine,aPrimeCombinazioni,nTipoOrdinamento)
If ScriptInterrotto Then Exit Do
DoEventsEx
Loop
Call Scrivi(String(50,"="))
Call Scrivi("Colonne sviluppate : " & I)
Call Scrivi("Classe : " & nClasseFormazione)
Call Scrivi("Sorte : " & nSorte)
Call Scrivi("Ruote : " & StringaRuote(aRuote))
Call Scrivi(String(50,"="))
Call Scrivi
For k = 1 To UBound(aPrimeCombinazioni)
aRetColonna = StringaNumeriToArray(aPrimeCombinazioni(k,0))
Call StatFrzTurbo(aRetColonna,aRuote,nSorte,nRitardo,nRitardoMax,0,nFrequenza,,Inizio,fine)
aT(1) = aPrimeCombinazioni(k,0)
aT(2) = nRitardo
aT(4) = nRitardoMax
aT(3) = nFrequenza
Call AddRigaTabella(aT)
Next
Call CreaTabellaOrdinabile(nTipoOrdinamento)
End If
End Sub
Function CalcolaColonneDaSviluppare(aPresPerQ)
Dim t,k
t = 1
For k = 1 To UBound(aPresPerQ)
If aPresPerQ(k) > 0 Then
t = t *(k ^ aPresPerQ(k))
End If
Next
CalcolaColonneDaSviluppare = t
End Function
Sub SviluppaColonne(aSegni,I,aRuote,nSorte,Inizio,Fine,aPrimeCombinazioni,nTipoOrdinamento)
Dim nClasse,K,aTmp,nPnt,j,jj
Dim nRitardo,nRitardoMax,nFrequenza,nDaSviluppare,nSviluppate,nValMax
ReDim aT(4)
nClasse = UBound(aSegni)
ReDim aColonna(nClasse)
ReDim aPuntatore(nClasse)
ReDim aQSegni(nClasse)
ReDim aPresPerQuantita(90)
For K = 1 To nClasse
aTmp = aSegni(K)
aPuntatore(K) = 1
aQSegni(K) = UBound(aTmp)
aPresPerQuantita(aQSegni(K)) = aPresPerQuantita(aQSegni(K)) + 1
Next
Call AvanzamentoElab(1,nDaSviluppare,nSviluppate)
nDaSviluppare = CalcolaColonneDaSviluppare(aPresPerQuantita)
nPnt = nClasse
Do
For K = 1 To nClasse
aTmp = aSegni(K)
aColonna(K) = aTmp(aPuntatore(K))
Next
I = I + 1
nSviluppate = nSviluppate + 1
If nSviluppate Mod 500 = 0 Then
Call AvanzamentoElab(1,nDaSviluppare,nSviluppate)
End If
' Call Scrivi(FormatSpace(I,4,True) & ") " & StringaNumeri(aColonna))
' Call StatFrzTurbo(aColonna,aRuote,nSorte,nRitardo,nRitardoMax,0,nFrequenza,,Inizio,Fine)
' aT(1) = StringaNumeri(aColonna)
' aT(2) = nRitardo
' aT(4) = nRitardoMax
' aT(3) = nFrequenza
' Call AddRigaTabella(aT)
If nTipoOrdinamento = cOrdinaRit Then
nValMax = SerieRitardoTurbo(Inizio,Fine,aColonna,aRuote,nSorte)
ElseIf nTipoOrdinamento = cOrdinaFrq Then
nValMax = SerieFreqTurbo(Inizio,Fine,aColonna,aRuote,nSorte)
ElseIf nTipoOrdinamento = cOrdinaRitMax Then
nValMax = SerieStoricoTurbo(Inizio,Fine,aColonna,aRuote,nSorte)
End If
For j = 1 To UBound(aPrimeCombinazioni)
If nValMax >= aPrimeCombinazioni(j,1) Then
For jj = UBound(aPrimeCombinazioni) To j + 1 Step - 1
aPrimeCombinazioni(jj,0) = aPrimeCombinazioni(jj - 1,0)
aPrimeCombinazioni(jj,1) = aPrimeCombinazioni(jj - 1,1)
Next
aPrimeCombinazioni(j,0) = StringaNumeri(aColonna)
aPrimeCombinazioni(j,1) = nValMax
Exit For
End If
Next
Do While aPuntatore(nPnt) + 1 > aQSegni(nPnt)
nPnt = nPnt - 1
If nPnt = 0 Then Exit Do
Loop
If nPnt > 0 Then
aPuntatore(nPnt) = aPuntatore(nPnt) + 1
For K = nPnt + 1 To nClasse
aPuntatore(K) = 1
Next
nPnt = nClasse
End If
If ScriptInterrotto Then Exit Do
DoEventsEx
Loop While nPnt > 0
End Sub
con questo script mostrertà sempre e solo le prime 10 combinazioni migliori in base all'ordinamento scelto.
Quindi non darà problemi di memoria esaurita
Codice:Option Explicit Const cOrdinaRit = 2 Const cOrdinaFrq = 3 Const cOrdinaRitMax = 4 Sub Main Dim aLunghette,nQuantitaLung,nClasseFormazione,nMaxClasse Dim aRuote,nSorte Dim Inizio,Fine Dim nTipoOrdinamento Inizio = EstrazioneIni Fine = EstrazioneFin nQuantitaLung = AlimentaArrayLunghette(aLunghette) If nQuantitaLung >= 2 Then If VerificaDoppi(aLunghette) Then nMaxClasse = Iif(nQuantitaLung <= 10,nQuantitaLung,10) nClasseFormazione = Int(InputBox("Quanti numeri per ogni formazione in gioco da 2 a " & nMaxClasse)) nTipoOrdinamento = ScegliTipoOrdinamento Call ScegliRuote(aRuote) nSorte = ScegliEsito(2,2,nClasseFormazione) If nTipoOrdinamento > 0 Then If nClasseFormazione >= 2 And nClasseFormazione <= nMaxClasse Then Call ProduciFormazioni(aLunghette,nClasseFormazione,aRuote,nSorte,Inizio,Fine,nTipoOrdinamento) Else MsgBox "Quantità errata",vbExclamation End If End If End If Else MsgBox "Lunghette insufficient",vbExclamation End If End Sub Function ScegliTipoOrdinamento Dim aV,i aV = Array("Ritardo","Frequenza","Ritardo Max") i = ScegliOpzioneMenu(aV,,"Ordina per") Select Case i Case 0 ScegliTipoOrdinamento = cOrdinaRit Case 1 ScegliTipoOrdinamento = cOrdinaFrq Case 2 ScegliTipoOrdinamento = cOrdinaRitMax Case Else ScegliTipoOrdinamento = 0 End Select End Function Function VerificaDoppi(aLunghette) Dim k,j,n,sNumeriNonValidi,sNumeriDoppi ReDim aB(90) sNumeriNonValidi = "" sNumeriDoppi = "" For k = 1 To UBound(aLunghette) For j = 1 To UBound(aLunghette(k)) n = Int(aLunghette(k)(j)) If n > 0 And n <= 90 Then If aB(n) Then sNumeriDoppi = sNumeriDoppi & " Lunghetta " & k & " numero " & n & "," Else aB(n) = True End If Else sNumeriNonValidi = sNumeriNonValidi & " Lunghetta " & k & " numero " & n & "," End If Next Next If sNumeriNonValidi <> "" Or sNumeriDoppi <> "" Then If sNumeriNonValidi <> "" Then MsgBox "Numeri non validi " & vbCrLf & sNumeriNonValidi,vbExclamation End If If sNumeriDoppi <> "" Then MsgBox "Numeri ripetuti " & vbCrLf & sNumeriDoppi,vbExclamation End If VerificaDoppi = False Else VerificaDoppi = True End If End Function Function AlimentaArrayLunghette(aLunghette) ' per comodita le lunghette sono preimpostate ma nulla vieta di leggerle da un file o da inputbox 'ReDim aLunghette(5) ' aLunghette(1) = Split("0,66,67,69,78,72,89",",") ' 6 ' aLunghette(2) = Split("0,55,57,59,75,77,86",",") ' 6 ' aLunghette(3) = Split("0,65,68,79,88",",") '4 ' aLunghette(4) = Split("0,50,58,54,70,87",",") '5 ' aLunghette(5) = Split("0,56,52,76,85",",") '4 ReDim aLunghette(24) aLunghette(1) = Split("0,90,89,88,87,86,85",",") aLunghette(2) = Split("0,84,83,82,81,80,79",",") aLunghette(3) = Split("0,78,77,76,75,74,73",",") aLunghette(4) = Split("0,72,71,70,69",",") aLunghette(5) = Split("0,68,67,66,65",",") aLunghette(6) = Split("0,64,63,62",",") aLunghette(7) = Split("0,61,60,59",",") aLunghette(8) = Split("0,58,57,56",",") aLunghette(9) = Split("0,55,54,53",",") aLunghette(10) = Split("0,52",",") aLunghette(11) = Split("0,51",",") aLunghette(12) = Split("0,50",",") aLunghette(13) = Split("0,49",",") aLunghette(14) = Split("0,48,47,46",",") aLunghette(15) = Split("0,45,44,43",",") aLunghette(16) = Split("0,42,41,40",",") aLunghette(17) = Split("0,39,38,37",",") aLunghette(18) = Split("0,36,35,34",",") aLunghette(19) = Split("0,33,32,31",",") aLunghette(20) = Split("0,30,29,28,27,26,25",",") aLunghette(21) = Split("0,24,23,22,21",",") aLunghette(22) = Split("0,20,19,18,17,16,15",",") aLunghette(23) = Split("0,14,13,12,11,10,09",",") aLunghette(24) = Split("0,08,07,06,05,04,03,02,01",",") ' la funzione torna il numero di lunghette ( l'elemento a indice 0 non è usato) AlimentaArrayLunghette = UBound(aLunghette) End Function Sub ProduciFormazioni(aLunghette,nClasseFormazione,aRuote,nSorte,Inizio,fine,nTipoOrdinamento) Dim I Dim k,aRetColonna,sLungUsate Dim nRitardo,nRitardoMax,nFrequenza Dim aT Dim nCombTraLunghette Dim aPrimeCombinazioni Dim nSviluppate,nDaSviluppare ReDim aPrimeCombinazioni(10,1) ReDim aN(UBound(aLunghette)) For k = 1 To UBound(aN) aN(k) = k Next nCombTraLunghette = Combinazioni(UBound(aN),nClasseFormazione) If MsgBox("Le combinazioni tra lunghette sono " & nCombTraLunghette & " continuo ?",vbQuestion + vbYesNo) = vbYes Then aT = Array("","Formazione","Ritardo","Frequenza","RitardoMax") Call InitTabella(aT) ReDim aSegni(nClasseFormazione) nDaSviluppare = InitSviluppoIntegrale(aN,nClasseFormazione) Do While GetCombSviluppo(aRetColonna) nSviluppate = nSviluppate + 1 sLungUsate = "" For k = 1 To nClasseFormazione aSegni(k) = aLunghette(aRetColonna(k)) sLungUsate = sLungUsate & aRetColonna(k) & "-" Next Call Messaggio("Sviluppo colonne tra le lunghette " & RimuoviLastChr(sLungUsate,"-") & " (" & nSviluppate & "/" & nDaSviluppare & ")") Call SviluppaColonne(aSegni,I,aRuote,nSorte,Inizio,fine,aPrimeCombinazioni,nTipoOrdinamento) If ScriptInterrotto Then Exit Do DoEventsEx Loop Call Scrivi(String(50,"=")) Call Scrivi("Colonne sviluppate : " & I) Call Scrivi("Classe : " & nClasseFormazione) Call Scrivi("Sorte : " & nSorte) Call Scrivi("Ruote : " & StringaRuote(aRuote)) Call Scrivi(String(50,"=")) Call Scrivi For k = 1 To UBound(aPrimeCombinazioni) aRetColonna = StringaNumeriToArray(aPrimeCombinazioni(k,0)) Call StatFrzTurbo(aRetColonna,aRuote,nSorte,nRitardo,nRitardoMax,0,nFrequenza,,Inizio,fine) aT(1) = aPrimeCombinazioni(k,0) aT(2) = nRitardo aT(4) = nRitardoMax aT(3) = nFrequenza Call AddRigaTabella(aT) Next Call CreaTabellaOrdinabile(nTipoOrdinamento) End If End Sub Function CalcolaColonneDaSviluppare(aPresPerQ) Dim t,k t = 1 For k = 1 To UBound(aPresPerQ) If aPresPerQ(k) > 0 Then t = t *(k ^ aPresPerQ(k)) End If Next CalcolaColonneDaSviluppare = t End Function Sub SviluppaColonne(aSegni,I,aRuote,nSorte,Inizio,Fine,aPrimeCombinazioni,nTipoOrdinamento) Dim nClasse,K,aTmp,nPnt,j,jj Dim nRitardo,nRitardoMax,nFrequenza,nDaSviluppare,nSviluppate,nValMax ReDim aT(4) nClasse = UBound(aSegni) ReDim aColonna(nClasse) ReDim aPuntatore(nClasse) ReDim aQSegni(nClasse) ReDim aPresPerQuantita(90) For K = 1 To nClasse aTmp = aSegni(K) aPuntatore(K) = 1 aQSegni(K) = UBound(aTmp) aPresPerQuantita(aQSegni(K)) = aPresPerQuantita(aQSegni(K)) + 1 Next Call AvanzamentoElab(1,nDaSviluppare,nSviluppate) nDaSviluppare = CalcolaColonneDaSviluppare(aPresPerQuantita) nPnt = nClasse Do For K = 1 To nClasse aTmp = aSegni(K) aColonna(K) = aTmp(aPuntatore(K)) Next I = I + 1 nSviluppate = nSviluppate + 1 If nSviluppate Mod 500 = 0 Then Call AvanzamentoElab(1,nDaSviluppare,nSviluppate) End If ' Call Scrivi(FormatSpace(I,4,True) & ") " & StringaNumeri(aColonna)) ' Call StatFrzTurbo(aColonna,aRuote,nSorte,nRitardo,nRitardoMax,0,nFrequenza,,Inizio,Fine) ' aT(1) = StringaNumeri(aColonna) ' aT(2) = nRitardo ' aT(4) = nRitardoMax ' aT(3) = nFrequenza ' Call AddRigaTabella(aT) If nTipoOrdinamento = cOrdinaRit Then nValMax = SerieRitardoTurbo(Inizio,Fine,aColonna,aRuote,nSorte) ElseIf nTipoOrdinamento = cOrdinaFrq Then nValMax = SerieFreqTurbo(Inizio,Fine,aColonna,aRuote,nSorte) ElseIf nTipoOrdinamento = cOrdinaRitMax Then nValMax = SerieStoricoTurbo(Inizio,Fine,aColonna,aRuote,nSorte) End If For j = 1 To UBound(aPrimeCombinazioni) If nValMax >= aPrimeCombinazioni(j,1) Then For jj = UBound(aPrimeCombinazioni) To j + 1 Step - 1 aPrimeCombinazioni(jj,0) = aPrimeCombinazioni(jj - 1,0) aPrimeCombinazioni(jj,1) = aPrimeCombinazioni(jj - 1,1) Next aPrimeCombinazioni(j,0) = StringaNumeri(aColonna) aPrimeCombinazioni(j,1) = nValMax Exit For End If Next Do While aPuntatore(nPnt) + 1 > aQSegni(nPnt) nPnt = nPnt - 1 If nPnt = 0 Then Exit Do Loop If nPnt > 0 Then aPuntatore(nPnt) = aPuntatore(nPnt) + 1 For K = nPnt + 1 To nClasse aPuntatore(K) = 1 Next nPnt = nClasse End If If ScriptInterrotto Then Exit Do DoEventsEx Loop While nPnt > 0 End Sub
Ciao, Tom. Sto lavorando con gli script di questi grandiosi. Ti posso solo dire che se riesco a utilizzarli come spero verranno fuori delle belle lunghette.