Tom un esempio reale di quello che vorresti sarebbe di aiuto maggiore.
Penso sia fattibilissimo quello che potrei aver capito, ma è sempre meglio fare esempi reali per eviatre di fare cose e analisi diverse.
Ciao fammi sapere
Guarda questo è l'output dello script che ti posto sotto... e che fa quasi quello che ho chiesto anche se in questo caso non valuta tutti gli ambi generabili per ogni ruota analizzata ma solo il numero generabile dal gruppo base di partenza (es. 21 ambi per gruppo base di 7 elementi ecc...)
Combinazioni di classe 2 analizzate per punti 2 sulle ruote FI MI NA PA RO TO VE
La seguente lista mostra le prime Combinazioni In Base al valore di Ritardo
Range analizzato [00001] [ 1 ] 07.01.1871 fino a [10036] [ 13] 29.01.2022
Estrazioni analizzate totali : 10036
r Napoli formazione: 62.86 - FQ 22 - RA 1893 - RS 2020 - DIFF 127 - INCMAX 0 - contatore 1
r Milano formazione: 4.62 - FQ 20 - RA 1681 - RS 1681 - 0 - INCMAX 78 - contatore 2
r Firenze formazione: 11.65 - FQ 22 - RA 1654 - RS 2802 - DIFF 1148 - INCMAX 0 - contatore 3
r Firenze formazione: 83.86 - FQ 23 - RA 1341 - RS 1405 - DIFF 64 - INCMAX 0 - contatore 4
r Venezia formazione: 76.86 - FQ 28 - RA 1294 - RS 1294 - 0 - INCMAX 85 - contatore 5
r Roma formazione: 4.83 - FQ 25 - RA 1214 - RS 2112 - DIFF 898 - INCMAX 0 - contatore 6
r Venezia formazione: 62.86 - FQ 26 - RA 1201 - RS 1201 - 0 - INCMAX 248 - contatore 7
r Torino formazione: 65.86 - FQ 24 - RA 1122 - RS 1407 - DIFF 285 - INCMAX 0 - contatore 8
r Firenze formazione: 62.83 - FQ 25 - RA 1089 - RS 1737 - DIFF 648 - INCMAX 0 - contatore 9
r Napoli formazione: 62.83 - FQ 26 - RA 1065 - RS 1065 - 0 - INCMAX 70 - contatore 10
r Palermo formazione: 76.86 - FQ 26 - RA 1013 - RS 1185 - DIFF 172 - INCMAX 0 - contatore 11
r Palermo formazione: 62.76 - FQ 19 - RA 995 - RS 1613 - DIFF 618 - INCMAX 0 - contatore 12
r Roma formazione: 62.76 - FQ 25 - RA 981 - RS 1312 - DIFF 331 - INCMAX 0 - contatore 13
r Palermo formazione: 4.83 - FQ 23 - RA 970 - RS 1663 - DIFF 693 - INCMAX 0 - contatore 14
r Venezia formazione: 4.86 - FQ 25 - RA 891 - RS 1123 - DIFF 232 - INCMAX 0 - contatore 15
r Palermo formazione: 11.62 - FQ 21 - RA 835 - RS 1297 - DIFF 462 - INCMAX 0 - contatore 16
r Palermo formazione: 83.86 - FQ 24 - RA 825 - RS 2218 - DIFF 1393 - INCMAX 0 - contatore 17
r Firenze formazione: 62.76 - FQ 30 - RA 818 - RS 1128 - DIFF 310 - INCMAX 0 - contatore 18
r Venezia formazione: 76.83 - FQ 26 - RA 814 - RS 1418 - DIFF 604 - INCMAX 0 - contatore 19
r Palermo formazione: 11.86 - FQ 35 - RA 800 - RS 900 - DIFF 100 - INCMAX 0 - contatore 20
r Roma formazione: 11.76 - FQ 18 - RA 774 - RS 1265 - DIFF 491 - INCMAX 0 - contatore 21
Tempo trascorso: 00:00:20
code x spaziometria che genera l'output soprastante dandogli il relativo gruppo base di 7 elementi e selezionando le ruote volute come target di ruote separate.
Codice:
Option Explicit
Class clsSviluppo
Private aBNumDaSvil
Private nQNumeri
Private nCombInt
Private nClasse
Private aRighe
Private nQNumPerRiga
Private aPuntatore
Private nSviluppate
Function InitSviluppo(aNumeri,Classe)
nQNumeri = AlimentArrayNumDaSvil(aNumeri)
nCombInt = Combinazioni(nQNumeri,Classe)
nClasse = Classe
nSviluppate = 0
If nCombInt > 0 Then
Call AlimentaArrayRighe
Call InitArrayPuntatore
End If
InitSviluppo = nCombInt
End Function
Function GetQuantitaNumeriDaSvil
GetQuantitaNumeriDaSvil = nQNumeri
End Function
Function GetStringaNumDaSvil
Dim s,k
s = ""
For k = 1 To UBound(aBNumDaSvil)
If aBNumDaSvil(k) Then
s = s & Format2(k) & "."
End If
Next
GetStringaNumDaSvil = RimuoviLastChr(s,".")
End Function
Private Sub InitArrayPuntatore
Dim k
ReDim aPuntatore(nClasse)
For k = 1 To nClasse - 1
aPuntatore(k) = 1
Next
aPuntatore(k) = 0
End Sub
Function GetComb(aComb)
Dim nTmp,K,nPuntatore
nPuntatore = nClasse
nTmp = aPuntatore(nPuntatore) + 1
Do While nTmp > nQNumPerRiga
nPuntatore = nPuntatore - 1
If nPuntatore <= 0 Then Exit Do
nTmp = aPuntatore(nPuntatore) + 1
Loop
If nPuntatore > 0 Then
For K = nPuntatore To nClasse
aPuntatore(K) = nTmp
Next
ReDim aComb(nClasse)
For K = 1 To nClasse
aComb(K) = aRighe(K,aPuntatore(K))
Next
nSviluppate = nSviluppate + 1
GetComb = True
Else
GetComb = False
End If
End Function
Function GetQuantitaSviluppate
GetQuantitaSviluppate = nSviluppate
End Function
Private Function AlimentArrayNumDaSvil(aNumeri)
Dim k,q
aBNumDaSvil = ArrayNumeriToBool(aNumeri)
For k = 1 To 90
If aBNumDaSvil(k) Then
q = q + 1
End If
Next
AlimentArrayNumDaSvil = q
End Function
Private Sub AlimentaArrayRighe
Dim nRiga,k,aNumeri
Call ArrayBNumToArrayNum(aBNumDaSvil,aNumeri)
nQNumPerRiga =(nQNumeri - nClasse) + 1
ReDim aRighe(nClasse,nQNumPerRiga)
For nRiga = 1 To nClasse
For k = nRiga To(nRiga + nQNumPerRiga) - 1 '(nQNumeri - nClasse) + nRiga
aRighe(nRiga,(k - nRiga) + 1) = aNumeri(k)
Next
Next
End Sub
Sub OutputARighe
Dim k,j,s
For k = 1 To nClasse
s = ""
For j = 1 To nQNumPerRiga
s = s & Format2(aRighe(k,j)) & "."
Next
Call Scrivi(Format2(k) & ") " & RimuoviLastChr(s,"."))
Next
End Sub
End Class
Sub Main
Dim clSvi
Dim nClasse
Dim nSorte
Dim k,j
Dim sNumeri
Dim idComb
Dim nInizio,nFine
Dim idValoreDaAna
Dim sValoreUsato
Dim CombTot
Dim aRuote
Set clSvi = New clsSviluppo
Dim quantirisultati
Dim Col_Ord
Dim Tipo_Ord
Dim QNS
ReDim aNum(0)
QNS = ScegliNumeri(aNum)
nClasse = ScegliEsito(7,1,90)
Call ScegliRuote(aRuote) ' ,BA_)
nSorte = ScegliSorte
idValoreDaAna = ScegliValoreDaAnalizzare(sValoreUsato)
Col_Ord = CInt(InputBox("Colonna da ordinare (freq= 2; Rit= 3; RitMax= 4; Diff= 5; Incmax= 6).","colonna da ordinare ",2))
Tipo_Ord = CInt(InputBox("Ordinamento (Crescente > 0 1; Decresc = 0).","Ordinamento ",1))
nInizio = EstrazioneIni
nFine = EstrazioneFin
If nClasse > 0 And nSorte > 0 And nSorte <= nClasse And idValoreDaAna > 0 Then
Call Messaggio("Sviluppo combinazioni di classe " & nClasse)
CombTot = clSvi.InitSviluppo(aNum,nClasse)
Call Messaggio("Lunghette totali da analizzare " & CombTot)
ReDim aCombMigliori(CombTot,8)
Call Messaggio("Statistica combinazioni in corso ")
ReDim aCol(nClasse)
Do While clSvi.GetComb(aCol) = True
ReDim aRuotetmp(1)
Dim y
For y = 1 To UBound(aRuote)
aRuotetmp(1) = aRuote(y)
Call AnalisiComb(aCol,aRuotetmp,nSorte,aCombMigliori,nInizio,nFine,idValoreDaAna)
k = k + 1
If k Mod 1 = 0 Then
Call Messaggio("Statistica combinazioni in corso " & k & " di " & CombTot)
Call AvanzamentoElab(1,CombTot,k)
If ScriptInterrotto Then Exit Do
End If
Next
Loop
Call Messaggio("")
Call Scrivi("Combinazioni di classe " & nClasse & " analizzate per punti " & nSorte & " sulle ruote " & GetRuoteUsate(aRuote))
Call Scrivi("La seguente lista mostra le prime " & quantirisultati & " Combinazioni In Base al valore di " & sValoreUsato)
Call Scrivi("Range analizzato " & GetInfoEstrazione(nInizio) & " fino a " & GetInfoEstrazione(nFine))
Call Scrivi("Estrazioni analizzate totali : " &(nFine + 1) - nInizio)
Call Scrivi
For k = 1 To UBound(aCombMigliori)
ReDim ADati(8)
ADati(1) = aCombMigliori(k,4)
ADati(2) = aCombMigliori(k,1)
ADati(3) = aCombMigliori(k,2)
ADati(4) = aCombMigliori(k,3)
ADati(5) = aCombMigliori(k,5)
ADati(6) = aCombMigliori(k,6)
ADati(7) = aCombMigliori(k,7)
Dim ccolonna
Dim contatore
contatore = contatore + 1
Dim diff
If ADati(5) <= 10 Then
Call Scrivi("r " & ADati(7) & " formazione: " & ADati(1) & " -" & " FQ " & ADati(2) & " -" & " RA " & ADati(3) & " -" & " RS " & ADati(4) & " -" & diff & " <font color=red bgcolor=yellow>" & ADati(5) & " -" & " INCMAX " & ADati(6) & "</font>" & " -" & " contatore " & contatore)
Else
Call Scrivi("r " & ADati(7) & " formazione: " & ADati(1) & " -" & " FQ " & ADati(2) & " -" & " RA " & ADati(3) & " -" & " RS " & ADati(4) & " - DIFF " & ADati(5) & " -" & " INCMAX " & ADati(6) & " -" & " contatore " & contatore)
End If
Next
Call Scrivi
Call Scrivi("Tempo trascorso: " & TempoTrascorso)
Call Scrivi
Else
MsgBox "Selezionare la classe di sviluppo e la Sorte , " & _
"si ricorda che la Sorte non puo essere maggiore della classe di sviluppo " & _
"e che bisogna scegliere quale valore statistico considerare per " & _
"alimentare la lista delle prime N Combinazioni desiderate da mostrare in output "
End If
End Sub
Sub AnalisiComb(aNum,aRuotetmp,Sorte,aCombMig,nInizio,nFine,idValoreDaAna)
Dim k,j
Dim Rit
Dim RitMax
Dim Freq
Dim Valore
Dim diff
Dim RetIncrRitMax
Call StatisticaFormazioneTurbo(aNum,aRuotetmp,Sorte,Rit,RitMax,RetIncrRitMax,Freq,nInizio,nFine)
diff = RitMax - Rit
Select Case idValoreDaAna
Case 1
Valore = Freq
Case 2
Valore = Rit
Case 3
Valore = RitMax
End Select
For k = 1 To UBound(aCombMig)
If Valore >= aCombMig(k,0) Then
For j = UBound(aCombMig) To(k + 1) Step - 1
aCombMig(j,0) = aCombMig(j - 1,0)
aCombMig(j,1) = aCombMig(j - 1,1)
aCombMig(j,2) = aCombMig(j - 1,2)
aCombMig(j,3) = aCombMig(j - 1,3)
aCombMig(j,4) = aCombMig(j - 1,4)
aCombMig(j,5) = aCombMig(j - 1,5)
aCombMig(j,6) = aCombMig(j - 1,6)
aCombMig(j,7) = aCombMig(j - 1,7)
Next
aCombMig(k,0) = Valore
aCombMig(k,1) = Freq
aCombMig(k,2) = Rit
aCombMig(k,3) = RitMax
aCombMig(k,4) = StringaNumeri(aNum)
aCombMig(k,5) = diff
aCombMig(k,6) = RetIncrRitMax
aCombMig(k,7) = NomeRuota(aRuotetmp(1))
Exit For
End If
Next
End Sub
Function ScegliSorte()
ReDim aVoci(4)
aVoci(0) = "Estratto"
aVoci(1) = "Ambo"
aVoci(2) = "Terno"
aVoci(3) = "Quaterna"
aVoci(4) = "Cinquina"
ScegliSorte = ScegliOpzioneMenu(aVoci,1,"Scegli Sorte") + 1
End Function
Function ScegliValoreDaAnalizzare(sValore)
ReDim aVoci(4)
Dim i
aVoci(0) = "Frequenza"
aVoci(1) = "Ritardo"
aVoci(2) = "Ritardo massimo"
aVoci(3) = "Differenza Aurea"
aVoci(4) = "IncMax"
i = ScegliOpzioneMenu(aVoci,0,"Quale valore considerare per l'ordinamento ? ")
sValore = aVoci(i)
ScegliValoreDaAnalizzare = i + 1
End Function
Function GetRuoteUsate(aRuote)
Dim k
Dim s
For k = 1 To UBound(aRuote)
s = s & SiglaRuota(aRuote(k)) & " "
Next
GetRuoteUsate = Trim(s)
End Function
In spazio script sarebbe ultra figo si potesse ordinare ogni colonna di parametro semplicemente cliccando sopra il relativo titolo di tabella e che appunto generasse in output non solo le prime formazioni integrali corrispondenti al numero massimo di sviluppo integrale bensì tutte quelle generabili dal gruppo base scelto (es. 21 x coppie integrali di 7 elementi) per ogni ruota esaminata.. Secondo l'esempio l'output corretto dovrebbe mostrare in modo ordinato per il parametro voluto tutti i 21 ambi generabili dalla 7ina base per ogni ruota...quindi se le ruote, come in questo caso fossero sette, un totale di 21x7 = 147 ambi ordinati per ritardo decrescente ad esempio con rispettiva ruota... una sotto l'altra...
questo output... dovrebbe continuare fino a mostrare tutti i 147 ambi dell'esempio... essendo
il gruppo base di 7 elementi
la classe di sviluppo integrale pari a 2
il gruppo di ruote separate da analizzare di 7 ruote
r Napoli formazione: 62.86 - FQ 22 - RA 1893 - RS 2020 - DIFF 127 - INCMAX 0 - contatore 1
r Milano formazione: 4.62 - FQ 20 - RA 1681 - RS 1681 - 0 - INCMAX 78 - contatore 2
r Firenze formazione: 11.65 - FQ 22 - RA 1654 - RS 2802 - DIFF 1148 - INCMAX 0 - contatore 3
r Firenze formazione: 83.86 - FQ 23 - RA 1341 - RS 1405 - DIFF 64 - INCMAX 0 - contatore 4
r Venezia formazione: 76.86 - FQ 28 - RA 1294 - RS 1294 - 0 - INCMAX 85 - contatore 5
r Roma formazione: 4.83 - FQ 25 - RA 1214 - RS 2112 - DIFF 898 - INCMAX 0 - contatore 6
r Venezia formazione: 62.86 - FQ 26 - RA 1201 - RS 1201 - 0 - INCMAX 248 - contatore 7
r Torino formazione: 65.86 - FQ 24 - RA 1122 - RS 1407 - DIFF 285 - INCMAX 0 - contatore 8
r Firenze formazione: 62.83 - FQ 25 - RA 1089 - RS 1737 - DIFF 648 - INCMAX 0 - contatore 9
r Napoli formazione: 62.83 - FQ 26 - RA 1065 - RS 1065 - 0 - INCMAX 70 - contatore 10
r Palermo formazione: 76.86 - FQ 26 - RA 1013 - RS 1185 - DIFF 172 - INCMAX 0 - contatore 11
r Palermo formazione: 62.76 - FQ 19 - RA 995 - RS 1613 - DIFF 618 - INCMAX 0 - contatore 12
r Roma formazione: 62.76 - FQ 25 - RA 981 - RS 1312 - DIFF 331 - INCMAX 0 - contatore 13
r Palermo formazione: 4.83 - FQ 23 - RA 970 - RS 1663 - DIFF 693 - INCMAX 0 - contatore 14
r Venezia formazione: 4.86 - FQ 25 - RA 891 - RS 1123 - DIFF 232 - INCMAX 0 - contatore 15
r Palermo formazione: 11.62 - FQ 21 - RA 835 - RS 1297 - DIFF 462 - INCMAX 0 - contatore 16
r Palermo formazione: 83.86 - FQ 24 - RA 825 - RS 2218 - DIFF 1393 - INCMAX 0 - contatore 17
r Firenze formazione: 62.76 - FQ 30 - RA 818 - RS 1128 - DIFF 310 - INCMAX 0 - contatore 18
r Venezia formazione: 76.83 - FQ 26 - RA 814 - RS 1418 - DIFF 604 - INCMAX 0 - contatore 19
r Palermo formazione: 11.86 - FQ 35 - RA 800 - RS 900 - DIFF 100 - INCMAX 0 - contatore 20
r Roma formazione: 11.76 - FQ 18 - RA 774 - RS 1265 - DIFF 491 - INCMAX 0 - contatore 21
Se non sono stato chiaro nell'esporre a quale tipo di script mi riferisca chiedi pure ragguagli ulteriori e cercherò di rimediare
Intanto grazie per la disponibilità!