Novità

tom's bakery

wonderful wonderful wonderful

tom's bakery is magic​

Script n. 39 meraviglioso per la mia gola di statistica... si puo avere il bis
un 39 bis con i risultati su ruote scelte unite.
grande 75 grande 39
un saluto

🧙‍♂️🤖😄

ho sbagliato azz e' il 37 che sto usando si potrebbe avere il bis con ruote unite
scusa tom

👆👇


(y)👋;)
 
Buon pomeriggio. Tempo fa avevo recuperato uno script qui nel forum per l'elaborazione di un cruciverba ma con Spaziometria 1.6.41 mi da errore in NumeroCasuale. Ma credo che ce ne sono anche altri comandi che evidentemente non funzionano con Spaziometria.
Mi potreste dare una soluzione ?
grazie infinite

Codice:
Option Explicit
 

Dim aNumUsati
Dim aColonne
Dim aNumScelti

Sub Main
   Dim nLato,nScelti
   Const nMinLato = 2
   Const nMaxLato = 12
   ReDim aRuote(1)
   ReDim aPoste(2)
   Dim Sorte,Colpi
   Dim idEstr
   Dim RuotaDiRil
  
   RuotaDiRil = BA_
   aPoste(2) = 1
   aRuote(1) = RuotaDiRil
   Sorte = 2
   Colpi = 1
   nLato = 5
  
  
   nLato = Int(InputBox("Inserire la quantita di numeri per il lato del cruciverba","Lato Cruciverba",nLato))
   If nLato < nMinLato Or nLato > nMaxLato Then
      MsgBox "Il lato dve essere compreso tra " & nMinLato & " e " & nMaxLato
      Exit Sub
   End If
  
  
   ReDim aDiagonali(nLato,nLato)
   Call CalcolaDiagonali(aDiagonali,nLato)
  
   For idEstr = EstrazioneIni To EstrazioneFin Step Colpi
      Call Messaggio("Estrazione " & idEstr)
      ReDim aNumScelti(0)
      Call AlimentaNumScelti(aNumScelti,idEstr,RuotaDiRil,nLato)
     
      Call GiocaCruciverba(aNumScelti,nLato,aDiagonali,aRuote,aPoste,Colpi,Sorte,idEstr)
     
      If ScriptInterrotto Then Exit For
     
   Next
  
   Call ScriviResoconto
  
End Sub
Sub AlimentaNumScelti(aNumScelti,idEstr,RuotaDiRil,nLato)

   Dim k,e,n,t
   Dim nNumDaTrov
  
   ReDim aB(90)
   t = 0
   nNumDaTrov = nLato * nLato
     
   For k = idEstr To 1 Step - 1
      For e = 1 To 5
         n = Vert(Estratto(k,RuotaDiRil,e))
         If aB(n) = False Then
            aB(n) = True
            t = t + 1
            If t >= nNumDaTrov Then Exit For
         End If
        
      Next
      If t >= nNumDaTrov Then Exit For
   Next
  
   If t >= nNumDaTrov Then
      ReDim aNumScelti(t)
      t = 0
      For k = 1 To 90
         If aB(k) Then
            t = t + 1
            aNumScelti(t) = k
         End If
      Next
  
   End If
  
End Sub
Sub GiocaCruciverba(aNumScelti,nLato,aDiagonali,aRuote,aPoste,Colpi,Sorte,idEstr)
  
   Dim r,c,k
   Dim n
   Dim s
   Dim nTentativi
   Dim bTrovato
   Dim nScelti
   Dim bUnaPresenzaSola
  
   Const nTentativiMax = 1000
   bUnaPresenzaSola = False
  
  
   nScelti = UBound(aNumScelti)
   If nScelti >= nLato * nLato Then
      bUnaPresenzaSola = True
   End If
   Call DoEventsEx
  
   aNumUsati = ArrayNumeriToBool(aNumScelti)
  
   Do While bTrovato = False
      ReDim aNumeri(nLato,nLato)
      For r = 1 To nLato
         For c = 1 To nLato
            n = ScegliNumero(r,c,aNumeri,nLato,aDiagonali,bUnaPresenzaSola)
            If n = 0 Then Exit For
            aNumeri(r,c) = n
         Next
         If n = 0 Then Exit For
      Next
      If colonneDuplicate(aNumeri,nLato,aDiagonali) = False Then
         bTrovato = True
      Else
         nTentativi = nTentativi + 1
         If nTentativi > nTentativiMax Then Exit Do
      End If
      If ScriptInterrotto Then Exit Do
      Call Messaggio("Cruciverba Generati " & nTentativi)
      DoEventsEx
   Loop
   For r = 1 To nLato
      ReDim aV(nLato)
      For c = 1 To nLato
         aV(c) = Format2(Int(aNumeri(r,c)))
      Next
      If r = 1 Then
         Call InitTabella(aV,,,6)
      Else
         Call AddRigaTabella(aV,,,6)
      End If
   Next
   If nTentativi > nTentativiMax Or colonneDuplicate(aNumeri,nLato,aDiagonali) Then
      Call Scrivi("ATTENZIONE CRUCIVERBA NON VALIDO",True,,,vbRed)
  
   Else
      Call CreaTabella
     
   End If
  
   For k = 1 To UBound(aColonne)
      ReDim aN(0)
      Call SplitByChar("0." & aColonne(k),".",aN)
      Call ImpostaGiocata(k,aN,aRuote,aPoste,Colpi,Sorte)
   Next
   Call Gioca(idEstr)



  
End Sub


Sub CalcolaDiagonali(aDiagonali,nLato)
   Dim r,c
   For r = 1 To nLato
      c = c + 1
      aDiagonali(r,c) = True
   Next
   c = nLato + 1
   For r = 1 To nLato
      c = c - 1
      If aDiagonali(r,c) Then
         aDiagonali(r,c) = 1
      Else
         aDiagonali(r,c) = True
      End If
   Next
End Sub
Function ScegliNumero(Riga,Colonna,aNumeri,nLato,aDiagonali,bUnaVoltaSola)
   Dim n
   Dim nPassaggi
   Do
      n = aNumScelti(NumeroCasuale(1,UBound(aNumScelti)))
      nPassaggi = nPassaggi + 1
      If nPassaggi > 1000 Then
         n = 0
         Exit Do
      End If
      If ScriptInterrotto Then
         n = 0
         Exit Do
      End If
      Call DoEventsEx
   Loop While NumeroNonValido(n,Riga,Colonna,aNumeri,nLato,aDiagonali,bUnaVoltaSola)
   ScegliNumero = n
End Function
Function NumeroNonValido(Numero,Riga,Colonna,aNumeri,nLato,aDiagonali,bUnaVoltaSola)
   Dim k,r,c
   If Numero = 0 Then
      NumeroNonValido = True
      Exit Function
   End If
   If bUnaVoltaSola Then
      For r = 1 To nLato
         For c = 1 To nLato
            If aNumeri(r,c) = Numero Then
               NumeroNonValido = True
               Exit Function
            End If
         Next
      Next
   End If
   If aNumUsati(Numero) = False Then
      NumeroNonValido = True
      Exit Function
   End If
   For k = 1 To nLato
      If aNumeri(Riga,k) = Numero Then
         NumeroNonValido = True
         Exit Function
      End If
   Next
   For k = 1 To nLato
      If aNumeri(k,Colonna) = Numero Then
         NumeroNonValido = True
         Exit Function
      End If
   Next
   If aDiagonali(Riga,Colonna) Then
      'If Riga = Colonna Or ((Riga = nLato/2)And (Colonna = nLato/2)) Then
      If Riga = Colonna Then
         c = Colonna + 1
         For r = Riga To 1 Step - 1
            c = c - 1
            If aNumeri(r,c) = Numero Then
               NumeroNonValido = True
               Exit Function
            End If
         Next
         c = Colonna - 1
         For r = Riga + 1 To nLato
            c = c + 1
            If aNumeri(r,c) = Numero Then
               NumeroNonValido = True
               Exit Function
            End If
         Next
      End If
      If Riga <> Colonna Or aDiagonali(Riga,Colonna) = 1 Then
         c = Colonna - 1
         For r = Riga To 1 Step - 1
            c = c + 1
            If aNumeri(r,c) = Numero Then
               NumeroNonValido = True
               Exit Function
            End If
         Next
         c = Colonna + 1
         For r = Riga + 1 To nLato
            c = c - 1
            If aNumeri(r,c) = Numero Then
               NumeroNonValido = True
               Exit Function
            End If
         Next
      End If
   End If
End Function
Function colonneDuplicate(aNumeri,nLato,aDiagonali)
   Dim nColonneTot
   Dim r,c,i
   Dim k,kk
   nColonneTot = nLato * 2 + 2
   ReDim aColonne(nColonneTot)
   For r = 1 To nLato
      ReDim aN(nLato)
      For c = 1 To nLato
         aN(c) = aNumeri(r,c)
      Next
      i = i + 1
      Call OrdinaMatrice(aN,1,1)
      aColonne(i) = StringaNumeri(aN,,True)
   Next
   For c = 1 To nLato
      ReDim aN(nLato)
      For r = 1 To nLato
         aN(r) = aNumeri(r,c)
      Next
      i = i + 1
      Call OrdinaMatrice(aN,1,1)
      aColonne(i) = StringaNumeri(aN,,True)
   Next
   ReDim aN(nLato)
   c = 0
   For r = 1 To nLato
      c = c + 1
      aN(r) = aNumeri(r,c)
   Next
   i = i + 1
   Call OrdinaMatrice(aN,1,1)
   aColonne(i) = StringaNumeri(aN,,True)
   ReDim aN(nLato)
   c = nLato + 1
   For r = 1 To nLato
      c = c - 1
      aN(r) = aNumeri(r,c)
   Next
   i = i + 1
   Call OrdinaMatrice(aN,1,1)
   aColonne(i) = StringaNumeri(aN,,True)
   For k = 1 To nColonneTot - 1
      For kk = k + 1 To nColonneTot
         If aColonne(k) = aColonne(kk) Then
            colonneDuplicate = True
            Exit Function
         End If
      Next
   Next
   For k = 1 To nColonneTot
      If Len(aColonne(k)) < nLato *2 +(nLato - 1) Then
         colonneDuplicate = True
         Exit Function
      End If
   Next
End Function
Sub SalvaFileColonne
  
   Dim sFile
   Dim k
  
   sFile = GetDirectoryTemp & "Cruciverba.csv"
   If EliminaFile(sFile) Then
      For k = 1 To UBound(aColonne)
         Call ScriviFile(sFile,Replace(aColonne(k),".",";"),,False)
      Next
  
   End If

   Call Scrivi("Le colonne da giocare sono state salvate nel file : " & sFile)
End Sub





[/ code]
 
Ultima modifica:
Ciao tigre62, purtroppo non so assolutamente come funzionino i cruciverba e quindi non posso nemmeno vedere dove ha il bug... lo script, che non ho fatto io e che hai postato.. e che ti invito comunque a mettere tra i tag code e parentesi quadre accostate senza spazi x una miglior leggibilità dello stesso. Io non riesco a sistemartelo... Alla fine della fiera o provi a vedere se qualcuno raccoglie qui la tua richiesta di aiuto.. o cancelli il post e lo rimetti nella sezione download ex novo (cosa forse migliore) x avere + possibili eventuali aiuti in tal senso..
 
Ultima modifica:
Script n. 40 tom's bakery x lotto by tom ; sviluppo e analisi con ordinamento per parametro voluto in modo integrale in classe <= 20 con rilevamento del numero esatto di righe sviluppate in rapporto al numero desiderato di ruote unite a girare..., alla classe di sviluppo scelta e alla classe del gruppo base da sviluppare. Molto utile sopratutto in caso di matrici multidimensionali da inizializzare con numero di righe fisso... Inoltre molto utile per 'effettuare complesse analisi multiruota

Codice:
Option Explicit
Sub Main

' Script n. 40 tom's bakery x lotto by tom ; sviluppo e analisi in modo integrale con ordinamento per parametro 'voluto in classe <= 20 con rilevamento del 'numero di ' righe sviluppate in rapporto al numero  desiderato di ruote 'unite a girare..., alla classe di sviluppo 'scelta e alla 'classe del gruppo base da sviluppare. Molto utile sopratutto in 'caso di matrici multidimensionali' da inizializzare con numero di righe fisso... Inoltre molto utile per effettuare 'complesse analisi multiruota.

   Dim ruoteuniteminimo
   Dim ruoteunitemassimo
   Dim numeroruoteunite
   Dim filerisultato
   Dim coltotruoteunite
   ReDim aruote(0)
   Dim acolruoteunite
   Dim StringaRuoteUnite
   Dim contarighe
   Dim arighefile
   Dim righesviluppate
   Dim anumeri
   Dim classe
   Dim vettorerighefilemixruote
   Dim rigasviluppata
   Dim contarighesviluppate
   Dim sorte
   Dim rit,ritmax,Incmax,freq,Inizio,fine
   Inizio = EstrazioneIni
   fine = EstrazioneFin
   Dim diff
   Dim contatorexmatrice
   Dim contatorextabella
   ReDim aTitoli(9)
   aTitoli(1) = "Formazione"
   aTitoli(2) = "Ruote"
   aTitoli(3) = "Sorte"
   aTitoli(4) = "Ritardo"
   aTitoli(5) = "Ritardo Massimo"
   aTitoli(6) = "Incremento di Ritardo Massimo"
   aTitoli(7) = "Frequenza"
   aTitoli(8) = "Diff"
   aTitoli(9) = "Contatore"
   Call InitTabella(aTitoli)
   Dim righeoccupatenellamatrice
   ruoteuniteminimo = CInt(InputBox("ruote unite minimo",,1))
   ruoteunitemassimo = CInt(InputBox("ruote unite massimo",,11))
   MsgBox "scegli sorte"
   sorte = CInt(InputBox("sorte",,2))
   MsgBox "scegli ruote da analizzare"
   Call ScegliRuote(aruote)
   MsgBox "scegli gruppo base da sviluppare e analizzare"
   Call ScegliNumeri(anumeri)
   MsgBox "scegli classe da sviluppare"
   classe = CInt(InputBox("classe",,2))
   filerisultato = ".\gruppipossibilidiruoteunite.txt"
   If FileEsistente(filerisultato) Then
      Call EliminaFile(filerisultato)
   End If
   For numeroruoteunite = ruoteuniteminimo To ruoteunitemassimo
      coltotruoteunite = InitSviluppoIntegrale(aruote,numeroruoteunite)
      If coltotruoteunite > 0 Then
         Do While GetCombSviluppo(acolruoteunite) = True
            StringaRuoteUnite = StringaNumeri(acolruoteunite)
            contarighe = contarighe + 1
            ScriviFile filerisultato,StringaRuoteUnite
            If ScriptInterrotto Then Exit Do
         Loop
      End If
      CloseFileHandle(filerisultato)
      Call LeggiRigheFileDiTesto(filerisultato,arighefile)
      ReDim arigaruote(numeroruoteunite)
      Dim crr
      For crr = 0 To UBound(arighefile)
         righesviluppate = InitSviluppoIntegrale(anumeri,classe)
         Dim vettoreruoteunite
         Call SplitByChar("." & arighefile(crr) & ".",".",vettoreruoteunite)
         Dim cvru
         For cvru = 0 To UBound(vettoreruoteunite)
            If righesviluppate > 0 Then
               Do While GetCombSviluppo(rigasviluppata) = True
                  contarighesviluppate = contarighesviluppate + 1
                  Call StatisticaFormazioneTurbo(rigasviluppata,vettoreruoteunite,sorte,rit,ritmax,Incmax,freq,Inizio,fine)
                  diff = ritmax - rit
                  contatorextabella = contatorextabella + 1
                  ReDim aValori(9) '
                  aValori(1) = StringaNumeri(rigasviluppata) ' numero
                  aValori(2) = StringaRuote(vettoreruoteunite) ' nome ruota
                  aValori(3) = sorte
                  aValori(4) = rit
                  aValori(5) = ritmax
                  aValori(6) = Incmax
                  aValori(7) = freq
                  aValori(8) = diff
                  aValori(9) = contatorextabella
                  Call AddRigaTabella(aValori,Giallo_,"right",3)
                  Call AvanzamentoElab(1,10000,contatorextabella)
               Loop
            End If
         Next ' cvru
      Next
      If ScriptInterrotto Then Exit For
   Next 'x numero ruote unite
   contatorexmatrice = 0
   Dim Valorediordinamentovoluto
   Dim Valorecriteriodiordinamento
   Valorediordinamentovoluto = CInt(InputBox("valore di ordinamento voluto num(1); ruote(2); sorte(3); rit(4) ; ritmax(5) ; incmax(6) ; freq(7) ; diff(8) ; contatore (9) ",,4))
   Valorecriteriodiordinamento = CInt(InputBox("valore criterio di ordinamento voluto: crescente (1) decrescente (0) ",,0))
   Scrivi
   Scrivi "Prova visualizzazione del contenuto della tabella..."
   Scrivi
   Call CreaTabella(Valorediordinamentovoluto,Valorecriteriodiordinamento)
   Scrivi
   '-------------------------
   Scrivi "Elaborazione terminata con successo!"
   Scrivi
   Scrivi "classe gruppo numerico sviluppato " & UBound(anumeri)
   Scrivi "numero complessivo di ruote a girare " & UBound(aruote)
   Scrivi "ruote unite minimo " & ruoteuniteminimo
   Scrivi "ruote unite massimo " & ruoteunitemassimo
   Scrivi "classe di sviluppo " & classe
   Scrivi "righe (x mix di ruote) sviluppate " & contarighe
   Scrivi "righe totali di sviluppo generate " & contarighesviluppate
   Scrivi
   Scrivi "cgb " & UBound(anumeri) & " ; " & " cs " & classe & "  ; " & " pr " & UBound(aruote) & " ;  qruag  :  da " & ruoteuniteminimo & " a " & ruoteunitemassimo & " ;  righe " & contarighe * righesviluppate & " ;  tt : " & TempoTrascorso & " sg " & righesviluppate
   Scrivi
   Scrivi
   Scrivi
   Scrivi "Tt : " & TempoTrascorso
End Sub

🍰👋🤖🧑‍🍳🙂
 
Ultima modifica:
Script n.41 tom's bakery x lotto by tom costruito con componenti di codice realizzati dagli amici luigib, ilegend , edoardo_95; questo script piuttosto complesso consente di effettuare analisi di tipo incmax per qualsivoglia classe di di formazione <= 20 , sorte e ruota desiderate; sia con che senza numeri fissi; inoltre riesce ad evidenziare mediante relativo filtro le condizioni con numero di incrementi maggiore e anche se vi sono casi doppi o multipli o meno....
'per abilitare il relativo alert vocale opzionale basta decommentare la relativa riga e mettere in c:\ o nel percorso desiderato, che sarà da cambiare in quel caso anche a livello della relativa riga di codice, un file .wav muto e nominarlo ad es. silenzio.wav

Codice:
Option Explicit

' script n.41 tom's bakery x lotto by tom costruito con componenti di codice realizzati dagli amici luigib, ilegend , edoardo_95; questo script piuttosto complesso
'consente di effettuare analisi di tipo incmax per qualsivoglia classe di di formazione <= 20 , sorte e ruota desiderate; sia con che senza numeri fissi;
'inoltre riesce ad evidenziare mediante relativo filtro le condizioni con numero di incrementi maggiore e anche se vi sono casi doppi o multipli o meno....
'per abilitare il relativo alert vocale opzionale basta decommentare la relativa riga e mettere in c:\ o nel percorso desiderato (che sarà da cambiare in quel caso
'anche a livello della relativa riga di codice, un file .wav muto e nominarlo ad es. silenzio.wav

Class clslunghetta
Private anumeri ' contiene i numeri della lunghetta
Private minizio,mfine,aruote,msorte ' parametri per il range analisi
Private mclasse ' contine la classe della lunghetta
Private aelencorit ' conterra l'elenco dei ritardi per la lunghetta
Private aidestrelencorit ' conterra l'elenco dei ritardi per la lunghetta
Private aelencoincrritmax ' contiene l'elnco degli incrementi del ritardo max
Private aidestrincrritmax ' conterra l'elenco degli id estrazione in
Private aritardiallincremento ' contiene il valore del ritardo all'idestrazione in cui
Private mritardo,mritardomax,mincrritmax,mfrequenza ' valori statistici
Private mincrritardomaxsto,mstrincritsto
Public Property Get inumincrementi
inumincrementi = UBound(aelencoincrritmax)
End Property
Public Property Get incrritmaxsto
incrritmaxsto = mincrritardomaxsto
End Property
Public Property Get strincritmaxsto
strincritmaxsto = mstrincritsto
End Property
Public Property Get ritardo
ritardo = mritardo
End Property
Public Property Get ritardomax
ritardomax = mritardomax
End Property
Public Property Get incrritmax
incrritmax = mincrritmax
End Property
Public Property Get frequenza
frequenza = mfrequenza
End Property
Public Property Get lunghettastring
lunghettastring = StringaNumeri(anumeri)
End Property
Sub init(slunghetta,schrsep,rangeinizio,rangefine,vetruote,sorteingioco)
minizio = rangeinizio
mfine = rangefine
aruote = vetruote
msorte = sorteingioco
Call alimentavettorelunghetta(slunghetta,schrsep)
Call ElencoRitardiTurbo(anumeri,aruote,msorte,minizio,mfine,aelencorit,aidestrelencorit)
Call alimentavettoreincrritmax
End Sub
Sub eseguistatistica
Call StatisticaFormazioneTurbo(anumeri,aruote,msorte,mritardo,mritardomax,mincrritmax,mfrequenza,minizio,mfine)
End Sub
Private Sub alimentavettorelunghetta(slunghetta,schrsep)
Dim k
If IsArray(slunghetta) Then
ReDim anumeri(UBound(slunghetta))
For k = 1 To UBound(slunghetta)
anumeri(k) = slunghetta(k)
Next
Else
Call SplitByChar((schrsep & slunghetta),schrsep,anumeri)
End If
mclasse = UBound(anumeri)
End Sub
Private Sub alimentavettoreincrritmax
Dim nritmax,nincr,nid,k
nid = 0
ReDim aelencoincrritmax(0)
ReDim aidestrincrritmax(0)
ReDim aritardiallincremento(0)
aelencoincrritmax(0) = aelencorit(1) '<<< inserito il primo valore correttamente!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  :-)
For k = 1 To UBound(aelencorit)
If aelencorit(k) > nritmax Then
If nritmax > 0 Then
nincr = aelencorit(k) - nritmax
nid = nid + 1
ReDim Preserve aelencoincrritmax(nid)
aelencoincrritmax(nid) = nincr
ReDim Preserve aidestrincrritmax(nid)
aidestrincrritmax(nid) = aidestrelencorit(k)
ReDim Preserve aritardiallincremento(nid)
aritardiallincremento(nid) = aelencorit(k)
End If
nritmax = aelencorit(k)
End If
Next
mstrincritsto = StringaNumeri(aelencoincrritmax,,True)
End Sub
Function iscondizionerispettata(nidfiltro,nqincr)
Dim nupper
Dim vetritornon
Dim vetritornoq
Dim x
Dim numerominimoincrementiattsto
numerominimoincrementiattsto = 2 '
nqincr = 2 '
nupper = UBound(aelencoincrritmax)
mincrritardomaxsto = MassimoV(aelencoincrritmax,0,nupper)' - 1)
If aelencorit(UBound(aelencorit)) > 0 And aidestrincrritmax(nupper) = mfine And nupper >= nqincr Then
Select Case nidfiltro
Case 0
Call NumeriRipetutiRilevatiV(aelencoincrritmax,vetritornon,vetritornoq)
For x = 0 To UBound(vetritornoq)
If(vetritornoq(x) >= numerominimoincrementiattsto And vetritornon(x) = mincrritardomaxsto And mincrritardomaxsto <= 1000) Then
iscondizionerispettata =(aelencoincrritmax(nupper) = mincrritardomaxsto)
End If
Next
Case 1
iscondizionerispettata =(aelencoincrritmax(nupper) >= mincrritardomaxsto)
Case 2
iscondizionerispettata =(aelencoincrritmax(nupper) <= mincrritardomaxsto)
End Select
Else
iscondizionerispettata = False
End If
End Function
Function trasformaarraynumvirtonumreal(idist,bprimaestrfiss)
Dim k,ntotestr,valvirt
Dim snumreal
snumreal = ""
ntotestr =((mfine - minizio) + 1)Mod 90
valvirt = Fuori90(ntotestr *idist)
For k = 1 To UBound(anumeri)
snumreal = snumreal & Format2(Fuori90(anumeri(k) + valvirt)) & "."
Next
snumreal = RimuoviLastChr(snumreal,".")
trasformaarraynumvirtonumreal = snumreal
End Function
Sub disegnagraficoincrritmax
Dim x,y,k
Dim nvaloremaxx,nvaloremaxy,nvaloreminx
Dim nstepx,nstepy
Dim nuppervetincrrit
nvaloreminx = MinimoV(aidestrincrritmax,1)
nvaloremaxx = aidestrincrritmax(UBound(aidestrincrritmax))
nvaloremaxy = MassimoV(aelencorit,1)
nstepx =(nvaloremaxx -(minizio - 1)) \10
nstepy = nvaloremaxy \10
Call PreparaGrafico("formazione " & StringaNumeri(anumeri),nvaloreminx,nvaloremaxx,0,nvaloremaxy,nstepx,nstepy)
nuppervetincrrit = UBound(aelencoincrritmax)
ReDim av(nuppervetincrrit - 1,2)
For k = 1 To nuppervetincrrit
x = aidestrincrritmax(k)
y = aelencoincrritmax(k)
av(k - 1,1) = x
av(k - 1,2) = y
Next
Call DisegnaLineaGrafico(av,vbRed,"incrritmax")
ReDim av(nuppervetincrrit - 1,2)
For k = 1 To nuppervetincrrit
x = aidestrincrritmax(k)
y = aritardiallincremento(k)
av(k - 1,1) = x
av(k - 1,2) = y
Next
Call DisegnaLineaGrafico(av,vbBlue,"ritmax")
End Sub
End Class
Sub Main
Dim filerisultanzaconnumeroincrementitop
filerisultanzaconnumeroincrementitop = ".\filerisultanzaconnumeroincrementitop.txt"
Dim filerisultanzaconnumeroincrementitopcasimultipli
filerisultanzaconnumeroincrementitopcasimultipli = ".\filerisultanzaconnumeroincrementitopcasimultipli.txt"
If FileEsistente(filerisultanzaconnumeroincrementitop) Then
Call EliminaFile(filerisultanzaconnumeroincrementitop)
End If
If FileEsistente(filerisultanzaconnumeroincrementitopcasimultipli) Then
Call EliminaFile(filerisultanzaconnumeroincrementitopcasimultipli)
End If
Dim numeroincrementitop
numeroincrementitop = 0
Dim filereportxgufinale
filereportxgufinale = ".\filereportxgufinale.txt"
If FileEsistente(filereportxgufinale) Then
Call EliminaFile(filereportxgufinale)
End If
Dim sdir,inizio,fine,sfile,sfilecompleto,aruote,sorte
Dim bok,idfiltro,qincr
Dim bprimaestrfissa,ndistanza
sdir = GetDirectoryAppData & "archivivirtuali\"
sfile = sceglifilearchiviovirt(sdir)
bprimaestrfissa = False
If sfile <> "" Then
sfilecompleto = sdir & sfile & ".dat"
bok = ApriFileBaseDati(sfilecompleto)
bprimaestrfissa = True
ndistanza = getvalorefraseparatori(sfile,"(",")")
Else
bok = True ' archivio normale
ndistanza = 0 ' archivio reale
End If
If bok Then
If ScegliRange(inizio,fine) Then
sorte = ScegliEsito(3)
Dim ruoteselezionate,k
ReDim aruotesel(12)
ruoteselezionate = ScegliRuote(aruotesel)
For k = 1 To ruoteselezionate
Call Scrivi("scelta ruota " & NomeRuota(aruotesel(k)) & " - " & SiglaRuota(aruotesel(k)))
Next
ReDim aruote(1)
idfiltro = getidfiltro
qincr = getquantiincrementi
If(fine > inizio) And UBound(aruote) > 0 And sorte > 0 And idfiltro > - 1 Then
Call Scrivi("archivio : " & Iif(sfile <> "",sfile,"archivio lotto"))
Select Case sceglitiposviluppo
Case 5
Dim nclasse,quantitanumeriscelti,av
nclasse = CInt(InputBox(" classe di sviluppo? ",,10))
Dim quantinumfissi
quantinumfissi = CInt(InputBox("quanti numeri fissi a girare vuoi? [min 0 e max 20 num. fissi]: ",,0))
Dim alunghette
Dim quantiequalinumbers
quantiequalinumbers = ScegliNumeri(alunghette)
If quantinumfissi = 0 Then
quantitanumeriscelti = 0
Else
quantitanumeriscelti = ScegliNumeri(av)
End If
For k = 1 To ruoteselezionate
aruote(1) = aruotesel(k)
Call analisilunghettefromsceglinumericonnumerifissi(inizio,fine,aruote,sorte,idfiltro,qincr,bprimaestrfissa,ndistanza,nclasse,quantitanumeriscelti,av,quantinumfissi,quantiequalinumbers,alunghette,filereportxgufinale,numeroincrementitop,filerisultanzaconnumeroincrementitop,filerisultanzaconnumeroincrementitopcasimultipli)
Next
End Select
End If
End If
End If
Call CloseFileHandle(filereportxgufinale)
Dim alunghetteok
Dim ntotlunghetteok
Scrivi
Scrivi "Report gu finale"
Scrivi
If FileEsistente(filereportxgufinale) Then
Call LeggiRigheFileDiTesto(filereportxgufinale,alunghetteok)
ntotlunghetteok = UBound(alunghetteok)
If ntotlunghetteok > 0 Then
For k = 0 To ntotlunghetteok
Scrivi alunghetteok(k)
Next
End If
End If
End Sub
Function sceglifilearchiviovirt(sdir)
Dim i
ReDim afile(0)
Call ElencoFileInDirectory(sdir,afile,".dat")
afile(0) = "archivio reale"
i = ScegliOpzioneMenu(afile,0,"scegli archivio virtuale")
If i > 0 Then
sceglifilearchiviovirt = afile(i)
Else
sceglifilearchiviovirt = ""
End If
End Function
Function sceglitiposviluppo
ReDim avoci(5)
avoci(1) = "da file .txt"
avoci(2) = "da file .col"
avoci(3) = "da selezione casuale"
avoci(4) = "da selezione utente"
avoci(5) = "da selezione utente con fissi"
sceglitiposviluppo = ScegliOpzioneMenu(avoci,5,"selezionasviluppo")
End Function
Function getchrsepfromriga(sriga)
Dim k,schr
schr = ""
For k = 1 To Len(sriga)
schr = Mid(sriga,k,1)
If IsNumeric(schr) = False Then
Exit For
End If
Next
getchrsepfromriga = schr
End Function
Function getidfiltro
Dim afiltro(2)
afiltro(0) = "aelencoincrritmax(nupper) = mincrritardomaxsto"
afiltro(1) = "aelencoincrritmax(nupper)>= mincrritardomaxsto"
afiltro(2) = "aelencoincrritmax(nupper)<= mincrritardomaxsto"
getidfiltro = ScegliOpzioneMenu(afiltro,0,"select filtro condizione")
End Function
Function scrivifiltro(idfiltro)
Select Case idfiltro
Case 0
scrivifiltro =("aelencoincrritmax(nupper) = mincrritardomaxsto")
Case 1
scrivifiltro =("aelencoincrritmax(nupper)>= mincrritardomaxsto")
Case 2
scrivifiltro =("aelencoincrritmax(nupper)<= mincrritardomaxsto")
End Select
End Function
Function getquantiincrementi
getquantiincrementi = 1
End Function
Function addlunghetta(colllunghette,clsl)
On Error Resume Next
colllunghette.Add clsl,"k" & clsl.lunghettastring
If Err = 0 Then
addlunghetta = True
Else
addlunghetta = False
End If
err.Clear
End Function
Function getvalorefraseparatori(sfile,charsep1,charsep2)
Dim k
Dim i,f,sval
i = InStr(1,sfile,charsep1) + 1
f = InStr(i,sfile,charsep2)
getvalorefraseparatori = Int(Mid(sfile,i,f - i))
End Function
Sub analisilunghettefromfiletxt(inizio,fine,aruote,sorte,idfiltro,qincr,bprimaestrfissa,ndistanza)
Dim sfile,alunghette,ntotlunghette
Dim k,schrsep,snumreal
Dim clsl,colllunghette
Set colllunghette = GetNewCollection
sfile = ScegliFile(GetDirectoryAppData,".txt")
If FileEsistente(sfile) Then
Call LeggiRigheFileDiTesto(sfile,alunghette)
ntotlunghette = UBound(alunghette)
If ntotlunghette > 0 Then
schrsep = getchrsepfromriga(alunghette(1))
For k = 0 To ntotlunghette
Set clsl = New clslunghetta
Call clsl.init(alunghette(k),schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
End If
If k Mod 50 = 0 Then
Call Messaggio("righe esaminate : " & k & " valide: " & colllunghette.count)
Call AvanzamentoElab(1,ntotlunghette,k)
If ScriptInterrotto Then Exit For
End If
Next
Call Scrivi
Call Scrivi("elaborazione effettuata con archivio lotto aggiornato all'estrazione del: " & giorno(EstrazioneFin) & "-" & Mese(EstrazioneFin) & "-" & Anno(EstrazioneFin))
Call Scrivi
Scrivi "range analisi         : " & GetInfoEstrazione(inizio) & " - " & GetInfoEstrazione(fine)
Scrivi "filtro esaminato      : " & scrivifiltro(idfiltro)
Scrivi "lunghette esaminate   : " & ntotlunghette & " valide : " & colllunghette.count
Scrivi "sorte                 : " & NomeSorte(sorte)
Scrivi "ruote                 : " & StringaRuote(aruote)
Scrivi "numero minimo incrrit : " & Format2(qincr)
Scrivi
Scrivi FormatSpace("lunghette ordinate per incremento ritardo max",75),True,True,RGB(25,89,76),vbWhite
Call Scrivi
If colllunghette.count > 0 Then
Call OrdinaItemCollection(colllunghette,"incrritmax",,,- 1)
For Each clsl In colllunghette
If ndistanza = 0 Then
Call Scrivi("numeri formazione     : " & clsl.lunghettastring)
Else
snumreal = clsl.trasformaarraynumvirtonumreal(ndistanza,bprimaestrfissa)
Call Scrivi("numeri formazione     : " & clsl.lunghettastring & "   " & "numeri verifica   : " & snumreal)
End If
Call Scrivi("ritardo               : " & clsl.ritardo)
Call Scrivi("ritmax                : " & clsl.ritardomax)
Call Scrivi("freq                  : " & clsl.frequenza)
Call Scrivi("incrritmx             : " & clsl.incrritmax)
Call Scrivi("incrritmaxsto         : " & clsl.incrritmaxsto)
Call Scrivi("strincrementi (incluso il 1â° ra)        : " & clsl.strincritmaxsto)
Call Scrivi("numero incrementi effettivi    : " & clsl.inumincrementi)
Call clsl.disegnagraficoincrritmax
Next
Else
Scrivi "nessuna lunghetta rispetta le condizioni"
Scrivi "lunghette esaminate " & ntotlunghette + 1
End If
End If
End If
End Sub
Sub analisilunghettefromsceglinumericonnumerifissi(inizio,fine,aruote,sorte,idfiltro,qincr,bprimaestrfissa,ndistanza,nclasse,quantitanumeriscelti,av,quantinumfissi,quantiequalinumbers,alunghette,filereportxgufinale,numeroincrementitop,filerisultanzaconnumeroincrementitop,filerisultanzaconnumeroincrementitopcasimultipli)
Dim ntotlunghette
Dim k,schrsep,snumreal
Dim anumeri,afissi ', nclasse,nsorte,retrit1,retritmax,retincrritmax,retfreq
Dim ruoteselezionate',quantitanumeriscelti
Dim ms,aretcol
ReDim afissi(7)
Dim i
Dim numfissoagirare,numfissoagirare2,numfissoagirare3,numfissoagirare4,numfissoagirare5,numfissoagirare6,numfissoagirare7,numfissoagirare8,numfissoagirare9,numfissoagirare10
Dim numfissoagirare11,numfissoagirare12,numfissoagirare13,numfissoagirare14,numfissoagirare15,numfissoagirare16,numfissoagirare17,numfissoagirare18,numfissoagirare19,numfissoagirare20
Dim clsl,colllunghette,filtroesaminato
Dim valorestringa
Set colllunghette = GetNewCollection
filtroesaminato = scrivifiltro(idfiltro)
schrsep = " "
Dim an,anum
Select Case quantinumfissi
Case 0
Call Messaggio("hai scelto 0 num. fissi")
Dim fissidecisi,nav
afissi = Array(0)
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("riga: " & i & " fisso(i): " & "-" & "0" & " classe: " & nclasse & " l. Int: " & ntotlunghette & " valide " & colllunghette.count & " sorte " & sorte & " ruota " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
Dim diff
diff = retritmax - retrit1
Dim rapportorars
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fissi: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 1
Call Messaggio("hai scelto 1 num. fisso")
For nav = 0 To UBound(av) - 1
afissi = Array(0,av(1))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("riga: " & i & " fisso(i): " & "-" & av(1) & " classe: " & nclasse & " l. int: " & ntotlunghette & " valide " & colllunghette.count & " sorte " & sorte & " ruota " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Next
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 2
Call Messaggio("hai scelto 2 num. fissi")
afissi = Array(0,av(1),av(2))',av(3),av(4),av(5),av(6),av(7),av(8),av(9),av(10),av(11),av(12),av(13))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n.fisso(i): " & av(0) & "-" & av(1) & "-" & av(2) & " classe: " & nclasse & " l.int: " & ntotlunghette & " valide " & colllunghette.count & " sorte " & sorte & " ruota " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 3
Call Messaggio("hai scelto 3 num. fissi")
afissi = Array(0,av(1),av(2),av(3))',av(4),av(5),av(6),av(7),av(8),av(9),av(10),av(11),av(12),av(13))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n.f(i): " & av(0) & "-" & av(1) & "-" & av(2) & "-" & av(3) & " c: " & nclasse & " l.i: " & ntotlunghette & " v: " & colllunghette.count & " sorte " & sorte & " ruota " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 4
Call Messaggio("hai scelto 4 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4))',av(5),av(6),av(7),av(8),av(9),av(10),av(11),av(12),av(13))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n.fisso(i): " & av(0) & "-" & av(1) & "-" & av(2) & "-" & av(3) & "-" & av(4) & " c: " & nclasse & " l. i: " & ntotlunghette & " valide " & colllunghette.count & " sorte " & sorte & " ruota " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 5
Call Messaggio("hai scelto 5 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4),av(5))',av(6),av(7),av(8),av(9),av(10),av(11),av(12),av(13))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("r: " & i & " n.f.(i): " & av(0) & "-" & av(1) & "-" & av(2) & "-" & av(3) & "-" & av(4) & "-" & av(5) & " c: " & nclasse & " l.i. " & ntotlunghette & " v: " & colllunghette.count & " sorte " & sorte & " ruota " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " n. fissi: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 6
Call Messaggio("hai scelto 6 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4),av(5),av(6))',av(7),av(8),av(9),av(10),av(11),av(12),av(13))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n. fisso(i): " & av(0) & "-" & av(1) & "-" & av(2) & "-" & av(3) & "-" & av(4) & "-" & av(5) & "-" & av(6) & " c: " & nclasse & " l.i:" & ntotlunghette & " valide " & colllunghette.count & " sorte " & sorte & " ruota " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 7
Call Messaggio("hai scelto 7 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4),av(5),av(6),av(7))',av(8),av(9),av(10),av(11),av(12),av(13)) ',av(8),av(9),av(10),av(11),av(12),av(13))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " nf(i): " & av(0) & "-" & av(1) & "-" & av(2) & "-" & av(3) & "-" & av(4) & "-" & av(5) & "-" & av(6) & "-" & av(7) & " c: " & nclasse & " l.i: " & ntotlunghette & " v: " & colllunghette.count & " sorte " & sorte & " ruota " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 8
Call Messaggio("hai scelto 8 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4),av(5),av(6),av(7),av(8))',av(9),av(10),av(11),av(12),av(13))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n. f(i): " & av(0) & "-" & av(1) & "-" & av(2) & "-" & av(3) & "-" & av(4) & "-" & av(5) & "-" & av(6) & "-" & av(7) & "-" & av(8) & " c: " & nclasse & " l. i: " & ntotlunghette & " valide " & colllunghette.count & " sorte " & sorte & " ruota " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 9
Call Messaggio("hai scelto 9 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4),av(5),av(6),av(7),av(8),av(9))',av(10),av(11),av(12),av(13))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n.f(i): " & av(0) & "-" & av(1) & "-" & av(2) & "-" & av(3) & "-" & av(4) & "-" & av(5) & "-" & av(6) & "-" & av(7) & "-" & av(8) & "-" & av(9) & " c: " & nclasse & " l.i: " & ntotlunghette & " v: " & colllunghette.count & " s: " & sorte & " r: " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 10
Call Messaggio("hai scelto 10 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4),av(5),av(6),av(7),av(8),av(9),av(10))',av(11),av(12),av(13))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n.f(i): " & av(0) & "-" & av(1) & "-" & av(2) & "-" & av(3) & "-" & av(4) & "-" & av(5) & "-" & av(6) & "-" & av(7) & "-" & av(8) & "-" & av(9) & "-" & av(10) & " c: " & nclasse & " l.i: " & ntotlunghette & " v: " & colllunghette.count & " s: " & sorte & " r: " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 11
Call Messaggio("hai scelto 11 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4),av(5),av(6),av(7),av(8),av(9),av(10),av(11))',av(12),av(13))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n.f(i): " & av(0) & "-" & av(1) & "-" & av(2) & "-" & av(3) & "-" & av(4) & "-" & av(5) & "-" & av(6) & "-" & av(7) & "-" & av(8) & "-" & av(9) & "-" & av(10) & "-" & av(11) & " c: " & nclasse & " l.i: " & ntotlunghette & " v: " & colllunghette.count & " s: " & sorte & " r: " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 12
Call Messaggio("hai scelto 12 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4),av(5),av(6),av(7),av(8),av(9),av(10),av(11),av(12)) '<< cos㬠funziona perfettamente...
valorestringa = StringaNumeri(afissi,,True)
Dim stringaav
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n.f(i): " & av(0) & "-" & av(1) & "-" & av(2) & "-" & av(3) & "-" & av(4) & "-" & av(5) & "-" & av(6) & "-" & av(7) & "-" & av(8) & "-" & av(9) & "-" & av(10) & "-" & av(11) & "-" & av(12) & "-" & " c: " & nclasse & " l.i: " & ntotlunghette & " v: " & colllunghette.count & " s: " & sorte & " r: " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 13
Call Messaggio("hai scelto 13 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4),av(5),av(6),av(7),av(8),av(9),av(10),av(11),av(12),av(13))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n.f(i): " & quantinumfissi & " c: " & nclasse & " l.i: " & ntotlunghette & " v: " & colllunghette.count & " s: " & sorte & " r: " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 14
Call Messaggio("hai scelto 14 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4),av(5),av(6),av(7),av(8),av(9),av(10),av(11),av(12),av(13),av(14))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n.f(i): " & av(0) & "-" & av(1) & "-" & av(2) & "-" & av(3) & "-" & av(4) & "-" & av(5) & "-" & av(6) & "-" & av(7) & "-" & av(8) & "-" & av(9) & "-" & av(10) & "-" & av(11) & "-" & av(12) & "-" & av(13) & "-" & av(14) & " c: " & nclasse & " l.i: " & ntotlunghette & " v: " & colllunghette.count & " s: " & sorte & " r: " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 15
Call Messaggio("hai scelto 15 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4),av(5),av(6),av(7),av(8),av(9),av(10),av(11),av(12),av(13),av(14),av(15))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n.f(i): " & av(0) & "-" & av(1) & "-" & av(2) & "-" & av(3) & "-" & av(4) & "-" & av(5) & "-" & av(6) & "-" & av(7) & "-" & av(8) & "-" & av(9) & "-" & av(10) & "-" & av(11) & "-" & av(12) & "-" & av(13) & "-" & av(14) & "-" & av(15) & " c: " & nclasse & " l.i: " & ntotlunghette & " v: " & colllunghette.count & " s: " & sorte & " r: " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 16
Call Messaggio("hai scelto 16 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4),av(5),av(6),av(7),av(8),av(9),av(10),av(11),av(12),av(13),av(14),av(15),av(16))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n.f(i): " & quantinumfissi & " c: " & nclasse & " l.i: " & ntotlunghette & " v: " & colllunghette.count & " s: " & sorte & " r: " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 17
Call Messaggio("hai scelto 17 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4),av(5),av(6),av(7),av(8),av(9),av(10),av(11),av(12),av(13),av(14),av(15),av(16),av(17))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n.f(i): " & av(0) & "-" & av(1) & "-" & av(2) & "-" & av(3) & "-" & av(4) & "-" & av(5) & "-" & av(6) & "-" & av(7) & "-" & av(8) & "-" & av(9) & "-" & av(10) & "-" & av(11) & "-" & av(12) & "-" & av(13) & "-" & av(14) & "-" & av(15) & "-" & av(16) & "-" & av(17) & " c: " & nclasse & " l.i: " & ntotlunghette & " v: " & colllunghette.count & " s: " & sorte & " r: " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 18
Call Messaggio("hai scelto 18 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4),av(5),av(6),av(7),av(8),av(9),av(10),av(11),av(12),av(13),av(14),av(15),av(16),av(17),av(18))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n.f(i): " & av(0) & "-" & av(1) & "-" & av(2) & "-" & av(3) & "-" & av(4) & "-" & av(5) & "-" & av(6) & "-" & av(7) & "-" & av(8) & "-" & av(9) & "-" & av(10) & "-" & av(11) & "-" & av(12) & "-" & av(13) & "-" & av(14) & "-" & av(15) & "-" & av(16) & "-" & av(17) & "-" & av(18) & " c: " & nclasse & " l.i: " & ntotlunghette & " v: " & colllunghette.count & " s: " & sorte & " r: " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 19
Call Messaggio("hai scelto 19 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4),av(5),av(6),av(7),av(8),av(9),av(10),av(11),av(12),av(13),av(14),av(15),av(16),av(17),av(18),av(19))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n.f(i): " & quantinumfissi & " c: " & nclasse & " l.i: " & ntotlunghette & " v: " & colllunghette.count & " s: " & sorte & " r: " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
Call Scrivi("tempo trascorso " & TempoTrascorso)
Case 20
Call Messaggio("hai scelto 20 num. fissi")
afissi = Array(0,av(1),av(2),av(3),av(4),av(5),av(6),av(7),av(8),av(9),av(10),av(11),av(12),av(13),av(14),av(15),av(16),av(17),av(18),av(19),av(20))
valorestringa = StringaNumeri(afissi,,True)
Set ms = GetMotoreSviluppoIntegrale
Call ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
ntotlunghette = ms.InitSviluppoIntegrale(alunghette,nclasse,afissi)
k = 0
Do While ms.GetCombSviluppo(aretcol)
Call Messaggio("rn: " & i & " n.f(i): " & av(0) & "-" & av(1) & "-" & av(2) & "-" & av(3) & "-" & av(4) & "-" & av(5) & "-" & av(6) & "-" & av(7) & "-" & av(8) & "-" & av(9) & "-" & av(10) & "-" & av(11) & "-" & av(12) & "-" & av(13) & "-" & av(14) & "-" & av(15) & "-" & av(16) & "-" & av(17) & "-" & av(18) & "-" & av(19) & "-" & av(20) & " c: " & nclasse & " l.i: " & ntotlunghette & " v: " & colllunghette.count & " s: " & sorte & " r: " & StringaRuote(aruote))
i = i + 1
ReDim aruotetmp(1)
For k = 1 To ruoteselezionate
aruotetmp(1) = aruote(k)
Call StatisticaFormazioneTurbo(aretcol,aruotetmp,nsorte,retrit1,retritmax,retincrritmax,retfreq)
diff = retritmax - retrit1
rapportorars = retrit1/retritmax
Next
If ScriptInterrotto Then Exit Do
k = k + 1
Set clsl = New clslunghetta
Call clsl.init(aretcol,schrsep,inizio,fine,aruote,sorte)
If clsl.iscondizionerispettata(idfiltro,qincr) Then
Call clsl.eseguistatistica
colllunghette.Add clsl
Call ScriviFile(filereportxgufinale,StringaNumeri(aretcol))
Call CloseFileHandle(filereportxgufinale)
End If
If k Mod 50 = 0 Then
Call Messaggio("riga: " & k & " valide " & colllunghette. count & " num fisso: " & numfissoagirare)
If colllunghette.count > 0 Then
Call Messaggio("trovata!")
'Call playwav("C:\silenzio.wav",1,"Bene! Condizione incmax doc trovata! Adesso sviluppo il gruppo base in ambi e ne verifico eventuali frequenze zero ad oggi")
End If
DoEventsEx
Call AvanzamentoElab(1,aretcol,k)
If ScriptInterrotto Then Exit Do
End If
Loop
Set ms = Nothing
Call Scrivi
End Select
Call Scrivi
Call Scrivi("elaborazione effettuata con archivio lotto aggiornato all'estrazione del: " & giorno(EstrazioneFin) & "-" & Mese(EstrazioneFin) & "-" & Anno(EstrazioneFin))
Call Scrivi
Scrivi "range analisi         : " & GetInfoEstrazione(inizio) & " - " & GetInfoEstrazione(fine)
Scrivi "filtro esaminato      : " & filtroesaminato
Scrivi "classe di sviluppo    : " & nclasse
Scrivi "numero(i) fisso(i) scelto(i) : " & valorestringa
Scrivi "lunghette totali in esame : " & ntotlunghette
Scrivi "lunghette esaminate   : " & i & " valide : " & colllunghette.count
Scrivi "sorte                 : " & NomeSorte(sorte)
Scrivi "ruote                 : " & StringaRuote(aruote)
Scrivi "numero minimo incrrit : " & Format2(qincr)
Scrivi
Scrivi FormatSpace("lunghette ordinate per incremento ritardo max",75),True,True,RGB(25,89,76),vbWhite
Call Scrivi
If colllunghette.count > 0 Then
Call OrdinaItemCollection(colllunghette,"incrritmax",,,- 1)
For Each clsl In colllunghette
If ndistanza = 0 Then
Call Scrivi("numeri formazione     : " & clsl.lunghettastring)
Else
snumreal = clsl.trasformaarraynumvirtonumreal(ndistanza,bprimaestrfissa)
Call Scrivi("numeri formazione     : " & clsl.lunghettastring)
End If
Call Scrivi("ritardo               : " & clsl.ritardo)
Call Scrivi("ritmax                : " & clsl.ritardomax)
Call Scrivi("freq                  : " & clsl.frequenza)
Call Scrivi("incrritmx             : " & clsl.incrritmax)
Call Scrivi("incrritmaxsto         : " & clsl.incrritmaxsto)
Call Scrivi("strincrementi         : " & clsl.strincritmaxsto)
Call Scrivi("numero incrementi     : " & clsl.inumincrementi)
If Int(clsl.inumincrementi) = numeroincrementitop Then
Scrivi
Scrivi "RILEVATO CASO NUMERO INCREMENTI MASSIMO MULTIPLO! " & numeroincrementitop
Scrivi
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"elaborazione effettuata con archivio lotto aggiornato all'estrazione del: " & giorno(EstrazioneFin) & "-" & Mese(EstrazioneFin) & "-" & Anno(EstrazioneFin))
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"")
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"range analisi         : " & GetInfoEstrazione(inizio) & " - " & GetInfoEstrazione(fine))
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"filtro esaminato      : " & filtroesaminato)
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"classe di sviluppo    : " & nclasse)
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"numero(i) fisso(i) scelto(i) : " & valorestringa)
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"lunghette totali in esame : " & ntotlunghette)
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"lunghette esaminate   : " & i & " valide : " & colllunghette.count)
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"sorte                 : " & NomeSorte(sorte))
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"ruote                 : " & StringaRuote(aruote))
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"numero minimo incrrit : " & Format2(qincr))
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"")
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,FormatSpace("lunghette ordinate per incremento ritardo max",75))
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"")
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"IL NUMERO DI INCREMENTI TOP SEMBRA ESSERE... " & numeroincrementitop)
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"")
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"")
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"numeri formazione     : " & clsl.lunghettastring)
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"ritardo               : " & clsl.ritardo)
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"ritmax                : " & clsl.ritardomax)
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"freq                  : " & clsl.frequenza)
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"incrritmx             : " & clsl.incrritmax)
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"incrritmaxsto         : " & clsl.incrritmaxsto)
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"strincrementi         : " & clsl.strincritmaxsto)
Call ScriviFile(filerisultanzaconnumeroincrementitopcasimultipli,"numero incrementi     : " & clsl.inumincrementi)
Call CloseFileHandle(filerisultanzaconnumeroincrementitopcasimultipli)
Scrivi
Scrivi "IL NUMERO DI INCREMENTI TOP SEMBRA ESSERE ANCORA... " & numeroincrementitop
Scrivi
End If
If Int(clsl.inumincrementi) > numeroincrementitop Then
numeroincrementitop = Int(clsl.inumincrementi)
If FileEsistente(filerisultanzaconnumeroincrementitop) Then
Call EliminaFile(filerisultanzaconnumeroincrementitop)
End If
Call ScriviFile(filerisultanzaconnumeroincrementitop,"elaborazione effettuata con archivio lotto aggiornato all'estrazione del: " & giorno(EstrazioneFin) & "-" & Mese(EstrazioneFin) & "-" & Anno(EstrazioneFin))
Call ScriviFile(filerisultanzaconnumeroincrementitop,"")
Call ScriviFile(filerisultanzaconnumeroincrementitop,"range analisi         : " & GetInfoEstrazione(inizio) & " - " & GetInfoEstrazione(fine))
Call ScriviFile(filerisultanzaconnumeroincrementitop,"filtro esaminato      : " & filtroesaminato)
Call ScriviFile(filerisultanzaconnumeroincrementitop,"classe di sviluppo    : " & nclasse)
Call ScriviFile(filerisultanzaconnumeroincrementitop,"numero(i) fisso(i) scelto(i) : " & valorestringa)
Call ScriviFile(filerisultanzaconnumeroincrementitop,"lunghette totali in esame : " & ntotlunghette)
Call ScriviFile(filerisultanzaconnumeroincrementitop,"lunghette esaminate   : " & i & " valide : " & colllunghette.count)
Call ScriviFile(filerisultanzaconnumeroincrementitop,"sorte                 : " & NomeSorte(sorte))
Call ScriviFile(filerisultanzaconnumeroincrementitop,"ruote                 : " & StringaRuote(aruote))
Call ScriviFile(filerisultanzaconnumeroincrementitop,"numero minimo incrrit : " & Format2(qincr))
Call ScriviFile(filerisultanzaconnumeroincrementitop,"")
Call ScriviFile(filerisultanzaconnumeroincrementitop,FormatSpace("lunghette ordinate per incremento ritardo max",75))
Call ScriviFile(filerisultanzaconnumeroincrementitop,"")
Call ScriviFile(filerisultanzaconnumeroincrementitop,"IL NUMERO DI INCREMENTI TOP SEMBRA ESSERE... " & numeroincrementitop)
Call ScriviFile(filerisultanzaconnumeroincrementitop,"")
Call ScriviFile(filerisultanzaconnumeroincrementitop,"")
Call ScriviFile(filerisultanzaconnumeroincrementitop,"numeri formazione     : " & clsl.lunghettastring)
Call ScriviFile(filerisultanzaconnumeroincrementitop,"ritardo               : " & clsl.ritardo)
Call ScriviFile(filerisultanzaconnumeroincrementitop,"ritmax                : " & clsl.ritardomax)
Call ScriviFile(filerisultanzaconnumeroincrementitop,"freq                  : " & clsl.frequenza)
Call ScriviFile(filerisultanzaconnumeroincrementitop,"incrritmx             : " & clsl.incrritmax)
Call ScriviFile(filerisultanzaconnumeroincrementitop,"incrritmaxsto         : " & clsl.incrritmaxsto)
Call ScriviFile(filerisultanzaconnumeroincrementitop,"strincrementi         : " & clsl.strincritmaxsto)
Call ScriviFile(filerisultanzaconnumeroincrementitop,"numero incrementi     : " & clsl.inumincrementi)
Call CloseFileHandle(filerisultanzaconnumeroincrementitop)
End If
Scrivi
Scrivi "IL NUMERO DI INCREMENTI TOP SEMBRA ESSERE... " & numeroincrementitop
Scrivi
Dim vettorexlaverificaesiti
Dim sommaritardi
sommaritardi = 0
Dim sommafrequenze
sommafrequenze = 0
Dim sommaincmax
sommaincmax = 0
Call SplitByChar("." & clsl.lunghettastring & ".",".",vettorexlaverificaesiti)
Dim v
For v = 0 To UBound(vettorexlaverificaesiti)
Scrivi vettorexlaverificaesiti(v)
Next
Dim coltot,Classe
Dim acol
Dim sortediverifica
Dim retrit1
Dim retritmax
Dim retincrritmax
Dim retfreq
sortediverifica = 2
Classe = 2
Dim inizioverifica,fineverifica,rangetemporalediverifica
fineverifica = EstrazioneFin
rangetemporalediverifica = 1830
inizioverifica = 1 ' fineverifica - rangetemporalediverifica
coltot = InitSviluppoIntegrale(vettorexlaverificaesiti,Classe)
If coltot > 0 Then
Call Scrivi
Call Scrivi(" Sviluppo in classe: " & Classe & " sorte  " & sortediverifica)
Call Scrivi
Do While GetCombSviluppo(acol) = True
Call StatisticaFormazioneTurbo(acol,aruote,sortediverifica,retrit1,retritmax,retincrritmax,retfreq,inizioverifica,fineverifica)
sommaritardi = sommaritardi + retrit1
sommafrequenze = sommafrequenze + retfreq
sommaincmax = sommaincmax + retincrritmax
Scrivi "<font color=blue>" & StringaNumeri(acol) & " rit " & retrit1 & " ritmax " & retritmax & " incmax " & retincrritmax & " freq " & retfreq
fineverifica = EstrazioneFin
rangetemporalediverifica = 1830
Call StatisticaFormazioneTurbo(acol,aruote,sortediverifica,retrit1,retritmax,retincrritmax,retfreq,inizioverifica,fineverifica)
If retfreq = 0 Then
Scrivi StringaNumeri(acol) & " rit " & retrit1 & " ritmax " & retritmax & " incmax " & retincrritmax & " freq " & retfreq
End If
Loop
End If
Dim secondaclasse
Dim Secondasorte
secondaclasse = 1
Secondasorte = 1
Dim coltot1
Dim acol1
coltot1 = InitSviluppoIntegrale(vettorexlaverificaesiti,secondaclasse)
If coltot1 > 0 Then
Call Scrivi
Call Scrivi(" Sviluppo in classe: " & secondaclasse & " sorte  " & Secondasorte)
Call Scrivi
Do While GetCombSviluppo(acol1) = True
Call StatisticaFormazioneTurbo(acol1,aruote,Secondasorte,retrit1,retritmax,retincrritmax,retfreq,inizioverifica,fineverifica)
Scrivi "<font color=blue>" & StringaNumeri(acol1) & " rit " & retrit1 & " ritmax " & retritmax & " incmax " & retincrritmax & " freq " & retfreq
Loop
End If
Scrivi
Scrivi "Numero formazioni sviluppate " & coltot
Scrivi
Scrivi "<font color=red>Somma ritardi relativa " & sommaritardi
Scrivi
Scrivi "<font color=blue>Somma frequenze relativa " & sommafrequenze
Scrivi
Scrivi "<font color=violet><strong>Somma incmax relativa " & sommaincmax & "</strong>"
Scrivi
Next
Else
Scrivi "nessuna lunghetta rispetta le condizioni"
Scrivi "lunghette esaminate " & ntotlunghette
End If
Scrivi
Scrivi("tempo trascorso: " & TempoTrascorso)
End Sub
Sub playwav(sfile,nrepeat,stesto)
Dim ovoice,ospfilestream
Dim k
Set ovoice = CreateObject("sapi.spvoice")
Set ospfilestream = CreateObject("sapi.spfilestream")
For k = 1 To nrepeat
ospfilestream.Open sfile
ovoice.speakstream ospfilestream
ospfilestream.Close
Next
ovoice.speak stesto
End Sub

Presto..., sicuramente... prima di Pasqua, condividerò il mio + recente script realizzato e particolamermente... super power... n.42 👽👾⚡🚀🛸 🤖😄

Coming Soon... 👋🥚🤖🧑‍🍳🙂


 
Ultima modifica:
Script n. 42 tom's bakery x lotto by tom ; sviluppo e analisi in modo integrale in classe <= 20 con rilevamento del numero esatto di righe sviluppate in rapporto al numero desiderato di ruote unite a girare..., alla classe di sviluppo scelta e alla classe del gruppo base da sviluppare. A differenza dello script n. 40, quasi del tutto analogo, questo invece di avvalersi dell'ordinamento tramite tabella (molto più lento e limitato) si basa sull'uso di matrici dinamiche molto più performanti battendo molto in velocità elaborazionale e di ordinamento il suo predecessore; sempre a differenza dell'altro consente l'analisi tramite inserimento dei numeri voluti sia da tabella che da file txt, inoltre rileva per ogni elaborazione anche il valori massimi e minimi di ra , rs , fq e incmax. Uno dei migliori script che io abbia mai realizzato da zero e totalmente alone, per quanto riguarda almeno la velocità e la sintesi massima di analisi su più sfaccettature diverse e multiruota... Sicuramente avrò dimenticato qualcosa... , o ci saranno mille cose da ottimizzare... ma già così credo possa fare felici molti amanti di queste analisi lotto ludiche per così dire "extreme" :)

Codice:
Option Explicit
' Script n. 42 tom's bakery x lotto by tom ; sviluppo e analisi in modo integrale in classe <= 20 con rilevamento del 'numero esatto di righe sviluppate in rapporto al numero ' desiderato di ruote unite a girare..., alla classe di sviluppo 'scelta e alla classe del gruppo base da sviluppare. A 'differenza dello script n. 40, quasi del tutto analogo, questo 'invece di avvalersi 'dell'ordinamento tramite tabella (molto più lento e limitato) si basa sull'uso di matrici dinamiche 'molto più 'performanti battendo molto in velocità elaborazionale e di ordinamento il suo 'predecessore; sempre a 'differenza dell'altro consente l'analisi tramite inserimento dei numeri voluti sia da tabella 'che da file txt, inoltre 'rileva per ogni elaborazione anche il valori massimi e minimi di ra , rs , fq e incmax  :)
Sub Main
   Dim ruoteuniteminimo
   Dim ruoteunitemassimo
   Dim numeroruoteunite
   Dim filerisultato
   Dim coltotruoteunite
   ReDim aruote(0)
   Dim acolruoteunite
   Dim StringaRuoteUnite
   Dim contarighe
   Dim arighefile
   Dim righesviluppate
   Dim anumeri
   Dim classe
   Dim vettorerighefilemixruote
   Dim rigasviluppata
   Dim contarighesviluppate
   Dim sorte
   Dim rit,ritmax,Incmax,freq,Inizio,fine
   Dim diff
   Dim ritardomassimorilevato
   Dim ritardomassimostoricorilevato
   Dim stringarisultatoxritardomassimorilevato
   Dim stringarisultatoxritardostoricomassimorilevato
   Dim ritardominimorilevato
   Dim ritardominimostoricorilevato
   Dim stringarisultatoxritardominimorilevato
   Dim stringarisultatoxritardominimostoricorilevato
   Dim freqmassimarilevata
   Dim freqminimarilevata
   Dim stringarisultatoxfreqmassimarilevata
   Dim stringarisultatoxfreqminimarilevata
   Dim Incmaxmassimorilevato
   Dim Incmaxminimorilevato
   Dim stringarisultatoxincmaxmassimorilevato
   Dim stringarisultatoxincmaxminimorilevato
   Dim diffmassimarilevata
   Dim diffminimarilevata
   Dim stringarisultatoxdiffmassimarilevata
   Dim stringarisultatoxdiffminimarilevata
   ritardomassimorilevato = 0
   ritardomassimostoricorilevato = 0
   ritardominimorilevato = EstrazioneFin
   ritardominimostoricorilevato = EstrazioneFin
   freqmassimarilevata = 0
   freqminimarilevata = EstrazioneFin
   Incmaxmassimorilevato = 0
   Incmaxminimorilevato = EstrazioneFin
   diffmassimarilevata = 0
   diffminimarilevata = EstrazioneFin
   Inizio = EstrazioneIni
   fine = EstrazioneFin
   Dim contatorexmatrice
   Dim matriceordinabilemultidimensionale(500000,6) '10000
   Dim righeoccupatenellamatrice
   ruoteuniteminimo = CInt(InputBox("ruote unite minimo",,1))
   ruoteunitemassimo = CInt(InputBox("ruote unite massimo",,1))
   MsgBox "scegli sorte"
   sorte = CInt(InputBox("sorte",,1))
   MsgBox "scegli ruote da analizzare"
   Call ScegliRuote(aruote)
   Dim dafileodatabella
   dafileodatabella = InputBox("da file (f) o da tabella (t)",,"f")
   If dafileodatabella = "t" Then
      MsgBox "hai scelto da tabella"
      MsgBox "scegli gruppo base da sviluppare e analizzare"
      Call ScegliNumeri(anumeri)
      MsgBox "scegli classe da sviluppare"
      classe = CInt(InputBox("classe",,1))
      filerisultato = ".\gruppipossibilidiruoteunite.txt"
      If FileEsistente(filerisultato) Then
         Call EliminaFile(filerisultato)
      End If
      For numeroruoteunite = ruoteuniteminimo To ruoteunitemassimo
         coltotruoteunite = InitSviluppoIntegrale(aruote,numeroruoteunite)
         If coltotruoteunite > 0 Then
            Do While GetCombSviluppo(acolruoteunite) = True
               StringaRuoteUnite = StringaNumeri(acolruoteunite)
               contarighe = contarighe + 1
               ScriviFile filerisultato,StringaRuoteUnite
               If ScriptInterrotto Then Exit Do
            Loop
         End If
         CloseFileHandle(filerisultato)
         Call LeggiRigheFileDiTesto(filerisultato,arighefile)
         ReDim arigaruote(numeroruoteunite)
         Dim crr
         For crr = 0 To UBound(arighefile)
            righesviluppate = InitSviluppoIntegrale(anumeri,classe)
            Dim vettoreruoteunite
            Call SplitByChar("." & arighefile(crr) & ".",".",vettoreruoteunite)
            Dim cvru
            ReDim arigaruote(UBound(vettoreruoteunite))
            For cvru = 0 To UBound(vettoreruoteunite)
               If righesviluppate > 0 Then
                  Do While GetCombSviluppo(rigasviluppata) = True
                     contarighesviluppate = contarighesviluppate + 1
                     Call StatisticaFormazione(rigasviluppata,vettoreruoteunite,sorte,rit,ritmax,Incmax,freq,Inizio,fine)
                     Messaggio "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " crm " & contatorexmatrice
                     diff = ritmax - rit
                     matriceordinabilemultidimensionale(contatorexmatrice,0) = StringaNumeri(rigasviluppata)
                     matriceordinabilemultidimensionale(contatorexmatrice,1) = StringaNumeri(vettoreruoteunite)
                     matriceordinabilemultidimensionale(contatorexmatrice,2) = NomeSorte(sorte)
                     matriceordinabilemultidimensionale(contatorexmatrice,3) = Int(rit)
                     matriceordinabilemultidimensionale(contatorexmatrice,4) = Int(ritmax)
                     matriceordinabilemultidimensionale(contatorexmatrice,5) = Int(Incmax)
                     matriceordinabilemultidimensionale(contatorexmatrice,6) = Int(freq)
                     contatorexmatrice = contatorexmatrice + 1
                     righeoccupatenellamatrice = righeoccupatenellamatrice + 1
                     If rit > ritardomassimorilevato Then
                        ritardomassimorilevato = rit
                        stringarisultatoxritardomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If ritmax > ritardomassimostoricorilevato Then
                        ritardomassimostoricorilevato = ritmax
                        stringarisultatoxritardostoricomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If rit < ritardominimorilevato Then
                        ritardominimorilevato = rit
                        stringarisultatoxritardominimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If ritmax < ritardominimostoricorilevato Then
                        ritardominimostoricorilevato = ritmax
                        stringarisultatoxritardominimostoricorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If freq > freqmassimarilevata Then
                        freqmassimarilevata = freq
                        stringarisultatoxfreqmassimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If freq < freqminimarilevata Then
                        freqminimarilevata = freq
                        stringarisultatoxfreqminimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If Incmax > Incmaxmassimorilevato Then
                        Incmaxmassimorilevato = Incmax
                        stringarisultatoxincmaxmassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If Incmax < Incmaxminimorilevato Then
                        Incmaxminimorilevato = Incmax
                        stringarisultatoxincmaxminimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If diff > diffmassimarilevata Then
                        diffmassimarilevata = diff
                        stringarisultatoxdiffmassimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If diff < diffminimarilevata Then
                        diffminimarilevata = diff
                        stringarisultatoxdiffminimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                  Loop
               End If
               If ScriptInterrotto Then Exit For
            Next ' cvru
            If ScriptInterrotto Then Exit For
            Messaggio "thread elaborazionale n. " & contatorexmatrice
         Next
         If ScriptInterrotto Then Exit For
         Call AvanzamentoElab(1,ruoteunitemassimo,crr)
      Next 'x numero ruote unite
      Dim Valorediordinamentovoluto
      Dim Valorecriteriodiordinamento
      Dim quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice
      Valorediordinamentovoluto =  CInt(InputBox("valore di ordinamento voluto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) ",,3))
      Valorecriteriodiordinamento = CInt(InputBox("valore criterio di ordinamento voluto: crescente (1) decrescente (-1) ",,- 1))
      quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice = CInt(InputBox("quanti risultati vuoi visualizzare rispetto quelli presenti in matrice e pari a " & righeoccupatenellamatrice & " ?"    ,,100))
      Scrivi
'      Scrivi "visualizzazione del contenuto della matrice non ordinata..."
'      Scrivi
'      For contatorexmatrice = 0 To quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice 'righeoccupateinmatrice 'UBound(matriceordinabilemultidimensionale)
'         Messaggio "sto elaborando il record di matrice n. " & contatorexmatrice
'         Scrivi " n " & matriceordinabilemultidimensionale(contatorexmatrice,0) & " r " & matriceordinabilemultidimensionale(contatorexmatrice,1) & " s " & matriceordinabilemultidimensionale(contatorexmatrice,2) & " rit " & matriceordinabilemultidimensionale(contatorexmatrice,3) & " ritmax " & matriceordinabilemultidimensionale(contatorexmatrice,4) & " incmax " & matriceordinabilemultidimensionale(contatorexmatrice,5) & " freq " & matriceordinabilemultidimensionale(contatorexmatrice,6) & " diff " & diff & " contatore riga matrice " & contatorexmatrice
'      Next
      'Scrivi
      Scrivi "visualizzazione del contenuto dell matrice ordinata..."
      Scrivi
      Dim sortFREQ
      Dim MassimoFreq
      Dim MinimoFreq
      Dim sortRITMAX
      Dim MassimoRITMAX
      Dim MinimoRITMAX
      Dim sortINCMAX
      Dim MassimoINCMAX
      Dim MinimoINCMAX
      Dim sortRIT
      Dim MassimoRIT
      Dim MinimoRIT
      MassimoFreq = freqmassimarilevata 'EstrazioneFin
      MinimoFreq = freqminimarilevata '0
      MassimoRITMAX = ritardomassimostoricorilevato 'EstrazioneFin
      MinimoRITMAX = ritardominimostoricorilevato '0
      MassimoINCMAX = Incmaxmassimorilevato 'EstrazioneFin
      MinimoINCMAX = Incmaxminimorilevato '0
      MassimoRIT = ritardomassimorilevato 'EstrazioneFin
      MinimoRIT = ritardominimorilevato '0
      Dim cmom
      Dim k
      Call OrdinaMatrice(matriceordinabilemultidimensionale,Valorecriteriodiordinamento ,Valorediordinamentovoluto)
      For k = 1 To quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice 'righeoccupatenellamatrice
         Scrivi matriceordinabilemultidimensionale(k,0) & " - " & matriceordinabilemultidimensionale(k,1) & " - " & matriceordinabilemultidimensionale(k,2) & " - " & matriceordinabilemultidimensionale(k,3) & " - " & matriceordinabilemultidimensionale(k,4) & " - " & matriceordinabilemultidimensionale(k,5) & " - " & matriceordinabilemultidimensionale(k,6)
      Next
      Scrivi
      Scrivi
      Scrivi "Elaborazione terminata con successo!"
      Scrivi
      Scrivi "range temporale analizzato " & GetInfoEstrazione(EstrazioneIni) & " - " & GetInfoEstrazione(EstrazioneFin)
      Scrivi "n. di estrazioni totali analizzate " &(EstrazioneFin - EstrazioneIni) + 1
      Scrivi "Input numeri scelti da tabella"
      Scrivi "gruppo base numerico analizzato " & StringaNumeri(anumeri)
      Scrivi "classe gruppo numerico sviluppato " & UBound(anumeri)
      Scrivi "numero complessivo di ruote a girare " & UBound(aruote)
      Scrivi "ruote analizzate " & StringaRuote(aruote)
      Scrivi "ruote unite minimo " & ruoteuniteminimo
      Scrivi "ruote unite massimo " & ruoteunitemassimo
      Scrivi "classe di sviluppo " & classe
      Scrivi "sorte di ricerca " & sorte
      Scrivi "parametro di ordinamento scelto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) " & Valorediordinamentovoluto
      Scrivi "criterio di ordinamento impostato crescente (1) decrescente (-1)  " & Valorecriteriodiordinamento
      Scrivi "righe (x mix di ruote) sviluppate " & contarighe
      Scrivi "righe totali di sviluppo generate " & contarighesviluppate
      Scrivi
      Scrivi "cgb " & UBound(anumeri) & " ; " & " cs " & classe & "  ; " & " pr " & UBound(aruote) & " ;  qruag  :  da " & ruoteuniteminimo & " a " & ruoteunitemassimo & " ;  righe " & contarighesviluppate & " ;  tt : " & TempoTrascorso & " sg " & righesviluppate
      Scrivi
      Scrivi "righe occupate nella matrice di dimensione ( " & UBound(matriceordinabilemultidimensionale) & " ) : " & righeoccupatenellamatrice
      Scrivi "numero dei primi risultati visualizzati in output in base all'ordinamento scelto " & quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice
      Scrivi
      Scrivi "report sui valori estremi rilevati"
      Scrivi
      Scrivi "rit max generale " & ritardomassimorilevato
      Scrivi "formazione : " & stringarisultatoxritardomassimorilevato
      Scrivi "rs max generale " & ritardomassimostoricorilevato
      Scrivi "formazione : " & stringarisultatoxritardostoricomassimorilevato
      Scrivi "ra min generale " & ritardominimorilevato
      Scrivi "formazione : " & stringarisultatoxritardominimorilevato
      Scrivi "rs min generale " & ritardominimostoricorilevato
      Scrivi "formazione : " & stringarisultatoxritardominimostoricorilevato
      Scrivi "fq max generale " & freqmassimarilevata
      Scrivi "formazione : " & stringarisultatoxfreqmassimarilevata
      Scrivi "fq min generale " & freqminimarilevata
      Scrivi "formazione : " & stringarisultatoxfreqminimarilevata
      Scrivi "incmax max generale " & Incmaxmassimorilevato
      Scrivi "formazione : " & stringarisultatoxincmaxmassimorilevato
      Scrivi "incmax min generale " & Incmaxminimorilevato
      Scrivi "formazione : " & stringarisultatoxincmaxminimorilevato
      Scrivi "diff max generale " & diffmassimarilevata
      Scrivi "formazione : " & stringarisultatoxdiffmassimarilevata
      Scrivi "diff min generale " & diffminimarilevata
      Scrivi "formazione : " & stringarisultatoxdiffminimarilevata
      Scrivi
      Scrivi "Tt : " & TempoTrascorso
   Else
      MsgBox "hai scelto analisi da file"
      MsgBox "scegli file da analizzare"
      Dim filedaelaborare
      filedaelaborare = ScegliFile(".\",".txt","filetxtdasviluppareeanalizzare.txt")
      MsgBox "hai scelto di analizzare il seguente file: " & filedaelaborare
      MsgBox "scegli classe da sviluppare"
      classe = CInt(InputBox("classe",,2))
      filerisultato = ".\gruppipossibilidiruoteunite.txt"
      If FileEsistente(filerisultato) Then
         Call EliminaFile(filerisultato)
      End If
      For numeroruoteunite = ruoteuniteminimo To ruoteunitemassimo
         coltotruoteunite = InitSviluppoIntegrale(aruote,numeroruoteunite)
         If coltotruoteunite > 0 Then
            Do While GetCombSviluppo(acolruoteunite) = True
               StringaRuoteUnite = StringaNumeri(acolruoteunite)
               contarighe = contarighe + 1
               ScriviFile filerisultato,StringaRuoteUnite
               If ScriptInterrotto Then Exit Do
            Loop
         End If
         CloseFileHandle(filerisultato)
         Dim arighefiledaelaborare
         Dim crfde
         Dim vettorestringhenumerifile
         Dim vettoreinterinumerifile
         Call LeggiRigheFileDiTesto(filedaelaborare,arighefiledaelaborare)
         For crfde = 0 To UBound(arighefiledaelaborare)
            'Scrivi "|" & arighefiledaelaborare(crfde) & "|"
            Call SplitByChar(arighefiledaelaborare(crfde),".",vettorestringhenumerifile)
            Dim cevns
            ReDim vettoreinterinumerifile(UBound(vettorestringhenumerifile))
            For cevns = 0 To UBound(vettorestringhenumerifile)
               vettoreinterinumerifile(cevns) = Int(vettorestringhenumerifile(cevns))
               Dim cvi
            Next ' x vettore stringhe numeri   file
            Scrivi
            Call LeggiRigheFileDiTesto(filerisultato,arighefile)
            ReDim arigaruote(numeroruoteunite)
            For crr = 0 To UBound(arighefile)
               righesviluppate = InitSviluppoIntegrale(vettoreinterinumerifile,classe)
               Call SplitByChar("." & arighefile(crr) & ".",".",vettoreruoteunite)
               ReDim arigaruote(UBound(vettoreruoteunite))
               For cvru = 0 To UBound(vettoreruoteunite)
                  If righesviluppate > 0 Then
                     Do While GetCombSviluppo(rigasviluppata) = True
                        contarighesviluppate = contarighesviluppate + 1
                        Call StatisticaFormazione(rigasviluppata,vettoreruoteunite,sorte,rit,ritmax,Incmax,freq,Inizio,fine)
                        Messaggio "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " crm " & contatorexmatrice
                        diff = ritmax - rit
                        matriceordinabilemultidimensionale(contatorexmatrice,0) = StringaNumeri(rigasviluppata)
                        matriceordinabilemultidimensionale(contatorexmatrice,1) = StringaNumeri(vettoreruoteunite)
                        matriceordinabilemultidimensionale(contatorexmatrice,2) = NomeSorte(sorte)
                        matriceordinabilemultidimensionale(contatorexmatrice,3) = Int(rit)
                        matriceordinabilemultidimensionale(contatorexmatrice,4) = Int(ritmax)
                        matriceordinabilemultidimensionale(contatorexmatrice,5) = Int(Incmax)
                        matriceordinabilemultidimensionale(contatorexmatrice,6) = Int(freq)
                        contatorexmatrice = contatorexmatrice + 1
                        righeoccupatenellamatrice = righeoccupatenellamatrice + 1
                        If rit > ritardomassimorilevato Then
                           ritardomassimorilevato = rit
                           stringarisultatoxritardomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If ritmax > ritardomassimostoricorilevato Then
                           ritardomassimostoricorilevato = ritmax
                           stringarisultatoxritardostoricomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If rit < ritardominimorilevato Then
                           ritardominimorilevato = rit
                           stringarisultatoxritardominimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If ritmax < ritardominimostoricorilevato Then
                           ritardominimostoricorilevato = ritmax
                           stringarisultatoxritardominimostoricorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If freq > freqmassimarilevata Then
                           freqmassimarilevata = freq
                           stringarisultatoxfreqmassimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If freq < freqminimarilevata Then
                           freqminimarilevata = freq
                           stringarisultatoxfreqminimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If Incmax > Incmaxmassimorilevato Then
                           Incmaxmassimorilevato = Incmax
                           stringarisultatoxincmaxmassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If Incmax < Incmaxminimorilevato Then
                           Incmaxminimorilevato = Incmax
                           stringarisultatoxincmaxminimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If diff > diffmassimarilevata Then
                           diffmassimarilevata = diff
                           stringarisultatoxdiffmassimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If diff < diffminimarilevata Then
                           diffminimarilevata = diff
                           stringarisultatoxdiffminimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                     Loop
                  End If
                  If ScriptInterrotto Then Exit For
               Next ' cvru
               If ScriptInterrotto Then Exit For
               Messaggio "thread elaborazionale n. " & contatorexmatrice
            Next
            Call AvanzamentoElab(1,ruoteunitemassimo,crr)
         Next ' x vettore righe file txt da elaborare
      Next 'x numero ruote unite...
      Valorediordinamentovoluto = CInt(InputBox("valore di ordinamento voluto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) ",,3))
      Valorecriteriodiordinamento = CInt(InputBox("valore criterio di ordinamento voluto: crescente (1) decrescente (-1) ",,- 1))
      quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice = CInt(InputBox("quanti risultati vuoi visualizzare rispetto quelli presenti in matrice e pari a " & righeoccupatenellamatrice & " ?"    ,,100))
      Scrivi
'      Scrivi "visualizzazione del contenuto della matrice non ordinata..."
'      Scrivi
'      For contatorexmatrice = 0 To  quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice  'righeoccupatenellamatrice 'UBound(matriceordinabilemultidimensionale)
'         Messaggio "sto elaborando il record di matrice n. " & contatorexmatrice
'         Scrivi " n " & matriceordinabilemultidimensionale(contatorexmatrice,0) & " r " & matriceordinabilemultidimensionale(contatorexmatrice,1) & " s " & matriceordinabilemultidimensionale(contatorexmatrice,2) & " rit " & matriceordinabilemultidimensionale(contatorexmatrice,3) & " ritmax " & matriceordinabilemultidimensionale(contatorexmatrice,4) & " incmax " & matriceordinabilemultidimensionale(contatorexmatrice,5) & " freq " & matriceordinabilemultidimensionale(contatorexmatrice,6) & " diff " & diff & " contatore riga matrice " & contatorexmatrice
'      Next
      'Scrivi
      Scrivi "visualizzazione del contenuto della matrice ordinata..."
      Scrivi
      MassimoFreq = freqmassimarilevata 'EstrazioneFin
      MinimoFreq = freqminimarilevata '0
      MassimoRITMAX = ritardomassimostoricorilevato 'EstrazioneFin
      MinimoRITMAX = ritardominimostoricorilevato '0
      MassimoINCMAX = Incmaxmassimorilevato 'EstrazioneFin
      MinimoINCMAX = Incmaxminimorilevato '0
      MassimoRIT = ritardomassimorilevato 'EstrazioneFin
      MinimoRIT = ritardominimorilevato '0
      Call OrdinaMatrice(matriceordinabilemultidimensionale,Valorecriteriodiordinamento,Valorediordinamentovoluto)
      For k = 1 To quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice 'righeoccupatenellamatrice
         Scrivi matriceordinabilemultidimensionale(k,0) & " - " & matriceordinabilemultidimensionale(k,1) & " - " & matriceordinabilemultidimensionale(k,2) & " - " & matriceordinabilemultidimensionale(k,3) & " - " & matriceordinabilemultidimensionale(k,4) & " - " & matriceordinabilemultidimensionale(k,5) & " - " & matriceordinabilemultidimensionale(k,6)
      Next
      Scrivi
      Scrivi
      Scrivi "Elaborazione terminata con successo!"
      Scrivi
      Scrivi "range temporale analizzato " & GetInfoEstrazione(EstrazioneIni) & " - " & GetInfoEstrazione(EstrazioneFin)
      Scrivi "n. di estrazioni totali analizzate " &(EstrazioneFin - EstrazioneIni) + 1
      Scrivi "Input numeri scelti da file"
      Scrivi "file scelto per l'elaborazione " & filedaelaborare
      Scrivi "numero complessivo di ruote a girare " & UBound(aruote)
      Scrivi "ruote analizzate " & StringaRuote(aruote)
      Scrivi "ruote unite minimo " & ruoteuniteminimo
      Scrivi "ruote unite massimo " & ruoteunitemassimo
      Scrivi "classe di sviluppo " & classe
      Scrivi "sorte di ricerca " & sorte
      Scrivi "parametro di ordinamento scelto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) " & Valorediordinamentovoluto
      Scrivi "criterio di ordinamento impostato crescente (1) decrescente (-1)  " & Valorecriteriodiordinamento
      Scrivi "righe (x mix di ruote) sviluppate " & contarighe
      Scrivi "righe totali di sviluppo generate " & contarighesviluppate
      Scrivi
      Scrivi "righe occupate nella matrice di dimensione ( " & UBound(matriceordinabilemultidimensionale) & " ) : " & righeoccupatenellamatrice
      Scrivi "numero dei primi risultati visualizzati in output in base all'ordinamento scelto " & quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice
      Scrivi
      Scrivi "report sui valori estremi rilevati"
      Scrivi
      Scrivi "rit max generale " & ritardomassimorilevato
      Scrivi "formazione : " & stringarisultatoxritardomassimorilevato
      Scrivi "rs max generale " & ritardomassimostoricorilevato
      Scrivi "formazione : " & stringarisultatoxritardostoricomassimorilevato
      Scrivi "ra min generale " & ritardominimorilevato
      Scrivi "formazione : " & stringarisultatoxritardominimorilevato
      Scrivi "rs min generale " & ritardominimostoricorilevato
      Scrivi "formazione : " & stringarisultatoxritardominimostoricorilevato
      Scrivi "fq max generale " & freqmassimarilevata
      Scrivi "formazione : " & stringarisultatoxfreqmassimarilevata
      Scrivi "fq min generale " & freqminimarilevata
      Scrivi "formazione : " & stringarisultatoxfreqminimarilevata
      Scrivi "incmax max generale " & Incmaxmassimorilevato
      Scrivi "formazione : " & stringarisultatoxincmaxmassimorilevato
      Scrivi "incmax min generale " & Incmaxminimorilevato
      Scrivi "formazione : " & stringarisultatoxincmaxminimorilevato
      Scrivi "diff max generale " & diffmassimarilevata
      Scrivi "formazione : " & stringarisultatoxdiffmassimarilevata
      Scrivi "diff min generale " & diffminimarilevata
      Scrivi "formazione : " & stringarisultatoxdiffminimarilevata
      Scrivi
      Scrivi "Tt : " & TempoTrascorso
   End If
End Sub


script 42 [versione B] con implementazione del motore per sviluppo formazioni senza limite di classe


Codice:
Option Explicit
' Script n. 42 (B) tom's bakery x lotto by tom ; sviluppo e analisi in modo integrale SENZA LIMITE DI CLASSE con rilevamento del numero esatto di righe sviluppate in rapporto al numero
' desiderato di ruote unite a girare..., alla classe di sviluppo scelta e alla classe del gruppo base da sviluppare. A differenza dello script n. 40, quasi del tutto analogo, questo invece di avvalersi
'dell'ordinamento tramite tabella (molto più lento e limitato) si basa sull'uso di matrici dinamiche molto più performanti battendo molto in velocità elaborazionale e di ordinamento il suo
'predecessore; sempre a differenza dell'altro consente l'analisi tramite inserimento dei numeri voluti sia da tabella che da file txt, inoltre rileva per ogni elaborazione anche il valori massimi di ra , rs , fq e incmax  :)
'classe  motore x sviluppo senza limite di classe
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
            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
      Next
   End Sub
End Class
'fine classe motore senzalimitediclasse
Sub Main
   Dim ruoteuniteminimo
   Dim ruoteunitemassimo
   Dim numeroruoteunite
   Dim filerisultato
   Dim coltotruoteunite
   ReDim aruote(0)
   Dim acolruoteunite
   Dim StringaRuoteUnite
   Dim contarighe
   Dim arighefile
   Dim righesviluppate
   Dim anumeri
   Dim classe
   Dim vettorerighefilemixruote
   Dim rigasviluppata
   Dim contarighesviluppate
   Dim sorte
   Dim rit,ritmax,Incmax,freq,Inizio,fine
   Dim diff
   Dim ritardomassimorilevato
   Dim ritardomassimostoricorilevato
   Dim stringarisultatoxritardomassimorilevato
   Dim stringarisultatoxritardostoricomassimorilevato
   Dim ritardominimorilevato
   Dim ritardominimostoricorilevato
   Dim stringarisultatoxritardominimorilevato
   Dim stringarisultatoxritardominimostoricorilevato
   Dim freqmassimarilevata
   Dim freqminimarilevata
   Dim stringarisultatoxfreqmassimarilevata
   Dim stringarisultatoxfreqminimarilevata
   Dim Incmaxmassimorilevato
   Dim Incmaxminimorilevato
   Dim stringarisultatoxincmaxmassimorilevato
   Dim stringarisultatoxincmaxminimorilevato
   Dim diffmassimarilevata
   Dim diffminimarilevata
   Dim stringarisultatoxdiffmassimarilevata
   Dim stringarisultatoxdiffminimarilevata
   Dim stringarsmaxdiognigrupporuoteunite
   Dim ritardomassimoxgrupporuoteunite
   ritardomassimoxgrupporuoteunite = 0
   Dim contacasimultiplixrit
   contacasimultiplixrit = 0
   Dim contacasimultiplixritmin
   contacasimultiplixritmin = EstrazioneFin
   Dim contacasimultiplixfqmax
   contacasimultiplixfqmax = 0
   Dim contacasimultiplixfqmin
   contacasimultiplixfqmin = EstrazioneFin
   Dim contacasimultiplixincmaxmax
   contacasimultiplixincmaxmax = 0
   stringarsmaxdiognigrupporuoteunite = ""
   ritardomassimorilevato = 0
   ritardomassimostoricorilevato = 0
   ritardominimorilevato = EstrazioneFin
   ritardominimostoricorilevato = EstrazioneFin
   freqmassimarilevata = 0
   freqminimarilevata = EstrazioneFin
   Incmaxmassimorilevato = 0
   Incmaxminimorilevato = EstrazioneFin
   diffmassimarilevata = 0
   diffminimarilevata = EstrazioneFin
   Inizio = EstrazioneIni
   fine = EstrazioneFin
   Dim contatorexmatrice
   'Dim matriceordinabilemultidimensionale(500000,6) '(1300000,6) '(2600000,6) ' (500000,6) '10000  ' in c5 by gruppo 72 le formazioni integrali sono oltre 13 mln... ; in c4 solo.. 1.028.000 ca
   Dim matriceordinabilemultidimensionale(500000,6) '(3200000,6) 'rispetto i 3162510 necessari ad analizzare le rispettive c5 x A by cf54 sarebbero più che sufficienti...
   Dim righeoccupatenellamatrice
   ruoteuniteminimo = CInt(InputBox("ruote unite minimo",,1))
   ruoteunitemassimo = CInt(InputBox("ruote unite massimo",,ruoteuniteminimo))
   MsgBox "scegli sorte"
   sorte = CInt(InputBox("sorte",,1))
   MsgBox "scegli ruote da analizzare"
   Call ScegliRuote(aruote)
   Dim dafileodatabella
   Dim csvil
   Set csvil = New clsSviluppo
   dafileodatabella = InputBox("da file (f) o da tabella (t)",,"t")
   If dafileodatabella = "t" Then
      MsgBox "hai scelto da tabella"
      MsgBox "scegli gruppo base da sviluppare e analizzare"
      Call ScegliNumeri(anumeri)
      MsgBox "scegli classe da sviluppare"
      classe = CInt(InputBox("classe",,sorte))
      filerisultato = ".\gruppipossibilidiruoteunite.txt"
      If FileEsistente(filerisultato) Then
         Call EliminaFile(filerisultato)
      End If
      For numeroruoteunite = ruoteuniteminimo To ruoteunitemassimo
         coltotruoteunite = InitSviluppoIntegrale(aruote,numeroruoteunite)
         If coltotruoteunite > 0 Then
            Do While GetCombSviluppo(acolruoteunite) = True
               StringaRuoteUnite = StringaNumeri(acolruoteunite)
               contarighe = contarighe + 1
               ScriviFile filerisultato,StringaRuoteUnite
               If ScriptInterrotto Then Exit Do
            Loop
         End If
         CloseFileHandle(filerisultato)
         Call LeggiRigheFileDiTesto(filerisultato,arighefile)
         ReDim arigaruote(numeroruoteunite)
         Dim crr
         For crr = 0 To UBound(arighefile)
            'righesviluppate = InitSviluppoIntegrale(anumeri,classe)
            righesviluppate = csvil.InitSviluppo(anumeri,classe)
            Dim vettoreruoteunite
            Call SplitByChar("." & arighefile(crr) & ".",".",vettoreruoteunite)
            Dim cvru
            ReDim arigaruote(UBound(vettoreruoteunite))
            For cvru = 0 To UBound(vettoreruoteunite)
               If righesviluppate > 0 Then
                  ' Do While GetCombSviluppo(rigasviluppata) = True
                  Do While cSvil.GetComb(rigasviluppata)
                     contarighesviluppate = contarighesviluppate + 1
                     Call StatisticaFormazioneTurbo(rigasviluppata,vettoreruoteunite,sorte,rit,ritmax,Incmax,freq,Inizio,fine)
                     'Messaggio "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " crm " & contatorexmatrice
                     Messaggio "n" & StringaNumeri(rigasviluppata) & "r" & StringaNumeri(vettoreruoteunite) & "s" & NomeSorte(sorte) & "rit" & rit & "rs" & ritmax & "incmax" & Incmax & "frq" & freq & "diff" & diff & "crm" & contatorexmatrice
                     diff = ritmax - rit
                     matriceordinabilemultidimensionale(contatorexmatrice,0) = StringaNumeri(rigasviluppata)
                     matriceordinabilemultidimensionale(contatorexmatrice,1) = StringaNumeri(vettoreruoteunite)
                     matriceordinabilemultidimensionale(contatorexmatrice,2) = NomeSorte(sorte)
                     matriceordinabilemultidimensionale(contatorexmatrice,3) = Int(rit)
                     matriceordinabilemultidimensionale(contatorexmatrice,4) = Int(ritmax)
                     matriceordinabilemultidimensionale(contatorexmatrice,5) = Int(Incmax)
                     matriceordinabilemultidimensionale(contatorexmatrice,6) = Int(freq)
                     contatorexmatrice = contatorexmatrice + 1
                     righeoccupatenellamatrice = righeoccupatenellamatrice + 1
                     If rit = ritardomassimorilevato Then
                        contacasimultiplixrit = contacasimultiplixrit + 1
                     End If
                     If rit > ritardomassimorilevato Then
                        ritardomassimorilevato = rit
                        stringarisultatoxritardomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixrit = 0
                     End If
                     If ritmax > ritardomassimostoricorilevato Then
                        ritardomassimostoricorilevato = ritmax
                        stringarisultatoxritardostoricomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If ritmax > ritardomassimoxgrupporuoteunite Then
                        ritardomassimoxgrupporuoteunite = ritmax
                        'stringarisultatoxritardostoricomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If rit < ritardominimorilevato Then
                        ritardominimorilevato = rit
                        stringarisultatoxritardominimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixritmin = 0
                     End If
                     If rit = ritardominimorilevato Then
                        contacasimultiplixritmin = contacasimultiplixritmin + 1
                     End If
                     If ritmax < ritardominimostoricorilevato Then
                        ritardominimostoricorilevato = ritmax
                        stringarisultatoxritardominimostoricorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If freq > freqmassimarilevata Then
                        freqmassimarilevata = freq
                        stringarisultatoxfreqmassimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixfqmax = 0
                     End If
                     If freq = freqmassimarilevata Then
                        contacasimultiplixfqmax = contacasimultiplixfqmax + 1
                     End If
                     If freq < freqminimarilevata Then
                        freqminimarilevata = freq
                        stringarisultatoxfreqminimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixfqmin = 0
                     End If
                     If freq = freqminimarilevata Then
                        contacasimultiplixfqmin = contacasimultiplixfqmin + 1
                     End If
                     If Incmax > Incmaxmassimorilevato Then
                        Incmaxmassimorilevato = Incmax
                        stringarisultatoxincmaxmassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixincmaxmax = 0
                     End If
                     If Incmax = Incmaxmassimorilevato Then
                        contacasimultiplixincmaxmax = contacasimultiplixincmaxmax + 1
                     End If
                     If Incmax < Incmaxminimorilevato Then
                        Incmaxminimorilevato = Incmax
                        stringarisultatoxincmaxminimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If diff > diffmassimarilevata Then
                        diffmassimarilevata = diff
                        stringarisultatoxdiffmassimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If diff < diffminimarilevata Then
                        diffminimarilevata = diff
                        stringarisultatoxdiffminimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If ScriptInterrotto Then Exit Do
                  Loop
               End If
               If ritardomassimoxgrupporuoteunite <> 0 And ritardomassimoxgrupporuoteunite <> "0" Then
                  stringarsmaxdiognigrupporuoteunite = stringarsmaxdiognigrupporuoteunite & " | " & StringaNumeri(vettoreruoteunite) & " rsgru " & ritardomassimoxgrupporuoteunite & " . "
               End If
               ritardomassimoxgrupporuoteunite = 0
               If ScriptInterrotto Then Exit For
            Next ' cvru
            If ScriptInterrotto Then Exit For
            Messaggio "thread elaborazionale n. " & contatorexmatrice
         Next
         If ScriptInterrotto Then Exit For
         Call AvanzamentoElab(1,ruoteunitemassimo,crr)
      Next 'x numero ruote unite
      Dim Valorediordinamentovoluto
      Dim Valorecriteriodiordinamento
      Dim quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice
      Valorediordinamentovoluto = CInt(InputBox("valore di ordinamento voluto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) ",,3))
      Valorecriteriodiordinamento = CInt(InputBox("valore criterio di ordinamento voluto: crescente (1) decrescente (-1) ",,- 1))
      'quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice = CInt(InputBox("quanti risultati vuoi visualizzare rispetto quelli presenti in matrice e pari a " & righeoccupatenellamatrice & " ?",,100))
      quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice = InputBox("quanti risultati vuoi visualizzare rispetto quelli presenti in matrice e pari a " & righeoccupatenellamatrice & " ?",,100)
      quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice = Int(quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice)
      Scrivi
      '      Scrivi "visualizzazione del contenuto della matrice non ordinata..."
      '      Scrivi
      '      For contatorexmatrice = 0 To quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice 'righeoccupateinmatrice 'UBound(matriceordinabilemultidimensionale)
      '         Messaggio "sto elaborando il record di matrice n. " & contatorexmatrice
      '         Scrivi " n " & matriceordinabilemultidimensionale(contatorexmatrice,0) & " r " & matriceordinabilemultidimensionale(contatorexmatrice,1) & " s " & matriceordinabilemultidimensionale(contatorexmatrice,2) & " rit " & matriceordinabilemultidimensionale(contatorexmatrice,3) & " ritmax " & matriceordinabilemultidimensionale(contatorexmatrice,4) & " incmax " & matriceordinabilemultidimensionale(contatorexmatrice,5) & " freq " & matriceordinabilemultidimensionale(contatorexmatrice,6) & " diff " & diff & " contatore riga matrice " & contatorexmatrice
      '      Next
      'Scrivi
      Scrivi "visualizzazione del contenuto dell matrice ordinata..."
      Scrivi
      Scrivi "num-ruota-sorte-rit-ritmax-incmax-freq"
      Scrivi
      Dim sortFREQ
      Dim MassimoFreq
      Dim MinimoFreq
      Dim sortRITMAX
      Dim MassimoRITMAX
      Dim MinimoRITMAX
      Dim sortINCMAX
      Dim MassimoINCMAX
      Dim MinimoINCMAX
      Dim sortRIT
      Dim MassimoRIT
      Dim MinimoRIT
      MassimoFreq = freqmassimarilevata 'EstrazioneFin
      MinimoFreq = freqminimarilevata '0
      MassimoRITMAX = ritardomassimostoricorilevato 'EstrazioneFin
      MinimoRITMAX = ritardominimostoricorilevato '0
      MassimoINCMAX = Incmaxmassimorilevato 'EstrazioneFin
      MinimoINCMAX = Incmaxminimorilevato '0
      MassimoRIT = ritardomassimorilevato 'EstrazioneFin
      MinimoRIT = ritardominimorilevato '0
      Dim cmom
      Dim k
      Call OrdinaMatrice(matriceordinabilemultidimensionale,Valorecriteriodiordinamento,Valorediordinamentovoluto)
      For k = 0 To quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice 'righeoccupatenellamatrice
         Scrivi matriceordinabilemultidimensionale(k,0) & " - " & matriceordinabilemultidimensionale(k,1) & " - " & matriceordinabilemultidimensionale(k,2) & " - " & matriceordinabilemultidimensionale(k,3) & " - " & matriceordinabilemultidimensionale(k,4) & " - " & matriceordinabilemultidimensionale(k,5) & " - " & matriceordinabilemultidimensionale(k,6)
      Next
      Scrivi
      Scrivi
      Scrivi "Elaborazione terminata con successo!"
      Scrivi
      Scrivi "range temporale analizzato " & GetInfoEstrazione(EstrazioneIni) & " - " & GetInfoEstrazione(EstrazioneFin)
      Scrivi "n. di estrazioni totali analizzate " &(EstrazioneFin - EstrazioneIni) + 1
      Scrivi "Input numeri scelti da tabella"
      Scrivi "gruppo base numerico analizzato " & StringaNumeri(anumeri)
      Scrivi "classe gruppo numerico sviluppato " & UBound(anumeri)
      Scrivi "numero complessivo di ruote a girare " & UBound(aruote)
      Scrivi "ruote analizzate " & StringaRuote(aruote)
      Scrivi "ruote unite minimo " & ruoteuniteminimo
      Scrivi "ruote unite massimo " & ruoteunitemassimo
      Scrivi "classe di sviluppo " & classe
      Scrivi "sorte di ricerca " & sorte
      Scrivi "parametro di ordinamento scelto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) " & Valorediordinamentovoluto
      Scrivi "criterio di ordinamento impostato crescente (1) decrescente (-1)  " & Valorecriteriodiordinamento
      Scrivi "righe (x mix di ruote) sviluppate " & contarighe
      Scrivi "righe totali di sviluppo generate " & contarighesviluppate
      Scrivi
      Scrivi "cgb " & UBound(anumeri) & " ; " & " cs " & classe & "  ; " & " pr " & UBound(aruote) & " ;  qruag  :  da " & ruoteuniteminimo & " a " & ruoteunitemassimo & " ;  righe " & contarighesviluppate & " ;  tt : " & TempoTrascorso & " sg " & righesviluppate
      Scrivi
      Scrivi "righe occupate nella matrice di dimensione ( " & UBound(matriceordinabilemultidimensionale) & " ) : " & righeoccupatenellamatrice
      Scrivi "numero dei primi risultati visualizzati in output in base all'ordinamento scelto " & quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice
      Scrivi
      Scrivi "report sui valori estremi rilevati"
      Scrivi
      Scrivi "rit max generale " & ritardomassimorilevato
      Scrivi "formazione : " & stringarisultatoxritardomassimorilevato
      Scrivi "n. casi multipli di rit max generale " & contacasimultiplixrit
      Scrivi "rs max generale " & ritardomassimostoricorilevato
      Scrivi "formazione : " & stringarisultatoxritardostoricomassimorilevato
      Scrivi "ra min generale " & ritardominimorilevato
      Scrivi "formazione : " & stringarisultatoxritardominimorilevato
      Scrivi "n. casi multipli di rit min generale " & Int(contacasimultiplixritmin) - 1
      Scrivi "rs min generale " & ritardominimostoricorilevato
      Scrivi "formazione : " & stringarisultatoxritardominimostoricorilevato
      Scrivi "fq max generale " & freqmassimarilevata
      Scrivi "formazione : " & stringarisultatoxfreqmassimarilevata
      Scrivi "n. casi multipli di fq max generale " & Int(contacasimultiplixfqmax) - 1
      Scrivi "fq min generale " & freqminimarilevata
      Scrivi "formazione : " & stringarisultatoxfreqminimarilevata
      Scrivi "n. casi multipli di fq min generale " & Int(contacasimultiplixfqmin) - 1
      Scrivi "incmax max generale " & Incmaxmassimorilevato
      Scrivi "formazione : " & stringarisultatoxincmaxmassimorilevato
      Scrivi "n. casi multipli di incmax max generale " & Int(contacasimultiplixincmaxmax) - 1
      Scrivi "incmax min generale " & Incmaxminimorilevato
      Scrivi "formazione : " & stringarisultatoxincmaxminimorilevato
      Scrivi "diff max generale " & diffmassimarilevata
      Scrivi "formazione : " & stringarisultatoxdiffmassimarilevata
      Scrivi "diff min generale " & diffminimarilevata
      Scrivi "formazione : " & stringarisultatoxdiffminimarilevata
      Scrivi
      Scrivi "rs max relativi ad ogni gruppo di ruote unite generato " & stringarsmaxdiognigrupporuoteunite
      Scrivi
      Scrivi "Tt : " & TempoTrascorso
   Else
      MsgBox "hai scelto analisi da file"
      MsgBox "scegli file da analizzare"
      Dim filedaelaborare
      filedaelaborare = ScegliFile(".\",".txt","filetxtdasviluppareeanalizzare.txt")
      MsgBox "hai scelto di analizzare il seguente file: " & filedaelaborare
      MsgBox "scegli classe da sviluppare"
      classe = CInt(InputBox("classe",,2))
      filerisultato = ".\gruppipossibilidiruoteunite.txt"
      If FileEsistente(filerisultato) Then
         Call EliminaFile(filerisultato)
      End If
      For numeroruoteunite = ruoteuniteminimo To ruoteunitemassimo
         coltotruoteunite = InitSviluppoIntegrale(aruote,numeroruoteunite)
         If coltotruoteunite > 0 Then
            Do While GetCombSviluppo(acolruoteunite) = True
               StringaRuoteUnite = StringaNumeri(acolruoteunite)
               contarighe = contarighe + 1
               ScriviFile filerisultato,StringaRuoteUnite
               If ScriptInterrotto Then Exit Do
            Loop
         End If
         CloseFileHandle(filerisultato)
         Dim arighefiledaelaborare
         Dim crfde
         Dim vettorestringhenumerifile
         Dim vettoreinterinumerifile
         Call LeggiRigheFileDiTesto(filedaelaborare,arighefiledaelaborare)
         For crfde = 0 To UBound(arighefiledaelaborare)
            'Scrivi "|" & arighefiledaelaborare(crfde) & "|"
            Call SplitByChar(arighefiledaelaborare(crfde),".",vettorestringhenumerifile)
            Dim cevns
            ReDim vettoreinterinumerifile(UBound(vettorestringhenumerifile))
            For cevns = 0 To UBound(vettorestringhenumerifile)
               vettoreinterinumerifile(cevns) = Int(vettorestringhenumerifile(cevns))
               Dim cvi
            Next ' x vettore stringhe numeri   file
            Scrivi
            Call LeggiRigheFileDiTesto(filerisultato,arighefile)
            ReDim arigaruote(numeroruoteunite)
            For crr = 0 To UBound(arighefile)
               'righesviluppate = InitSviluppoIntegrale(vettoreinterinumerifile,classe)
               righesviluppate = csvil.InitSviluppo(vettoreinterinumerifile,classe)
               Call SplitByChar("." & arighefile(crr) & ".",".",vettoreruoteunite)
               ReDim arigaruote(UBound(vettoreruoteunite))
               For cvru = 0 To UBound(vettoreruoteunite)
                  If righesviluppate > 0 Then
                     ' Do While GetCombSviluppo(rigasviluppata) = True
                     Do While cSvil.GetComb(rigasviluppata)
                        contarighesviluppate = contarighesviluppate + 1
                        Call StatisticaFormazioneTurbo(rigasviluppata,vettoreruoteunite,sorte,rit,ritmax,Incmax,freq,Inizio,fine)
                        Messaggio "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " crm " & contatorexmatrice
                        diff = ritmax - rit
                        matriceordinabilemultidimensionale(contatorexmatrice,0) = StringaNumeri(rigasviluppata)
                        matriceordinabilemultidimensionale(contatorexmatrice,1) = StringaNumeri(vettoreruoteunite)
                        matriceordinabilemultidimensionale(contatorexmatrice,2) = NomeSorte(sorte)
                        matriceordinabilemultidimensionale(contatorexmatrice,3) = Int(rit)
                        matriceordinabilemultidimensionale(contatorexmatrice,4) = Int(ritmax)
                        matriceordinabilemultidimensionale(contatorexmatrice,5) = Int(Incmax)
                        matriceordinabilemultidimensionale(contatorexmatrice,6) = Int(freq)
                        contatorexmatrice = contatorexmatrice + 1
                        righeoccupatenellamatrice = righeoccupatenellamatrice + 1
                        If rit > ritardomassimorilevato Then
                           ritardomassimorilevato = rit
                           stringarisultatoxritardomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If ritmax > ritardomassimostoricorilevato Then
                           ritardomassimostoricorilevato = ritmax
                           stringarisultatoxritardostoricomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If ritmax > ritardomassimoxgrupporuoteunite Then
                           ritardomassimoxgrupporuoteunite = ritmax
                           'stringarisultatoxritardostoricomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If rit < ritardominimorilevato Then
                           ritardominimorilevato = rit
                           stringarisultatoxritardominimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If ritmax < ritardominimostoricorilevato Then
                           ritardominimostoricorilevato = ritmax
                           stringarisultatoxritardominimostoricorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If freq > freqmassimarilevata Then
                           freqmassimarilevata = freq
                           stringarisultatoxfreqmassimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If freq < freqminimarilevata Then
                           freqminimarilevata = freq
                           stringarisultatoxfreqminimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If Incmax > Incmaxmassimorilevato Then
                           Incmaxmassimorilevato = Incmax
                           stringarisultatoxincmaxmassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If Incmax < Incmaxminimorilevato Then
                           Incmaxminimorilevato = Incmax
                           stringarisultatoxincmaxminimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If diff > diffmassimarilevata Then
                           diffmassimarilevata = diff
                           stringarisultatoxdiffmassimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If diff < diffminimarilevata Then
                           diffminimarilevata = diff
                           stringarisultatoxdiffminimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If ScriptInterrotto Then Exit Do
                     Loop
                  End If
                  If ritardomassimoxgrupporuoteunite <> 0 And ritardomassimoxgrupporuoteunite <> "0" Then
                     stringarsmaxdiognigrupporuoteunite = stringarsmaxdiognigrupporuoteunite & " | " & StringaNumeri(vettoreruoteunite) & " rsgru " & ritardomassimoxgrupporuoteunite & " . "
                  End If
                  ritardomassimoxgrupporuoteunite = 0
                  If ScriptInterrotto Then Exit For
               Next ' cvru
               If ScriptInterrotto Then Exit For
               Messaggio "thread elaborazionale n. " & contatorexmatrice
            Next
            If ScriptInterrotto Then Exit For
            Call AvanzamentoElab(1,ruoteunitemassimo,crr)
         Next ' x vettore righe file txt da elaborare
         If ScriptInterrotto Then Exit For
      Next 'x numero ruote unite...
      Valorediordinamentovoluto = CInt(InputBox("valore di ordinamento voluto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) ",,3))
      Valorecriteriodiordinamento = CInt(InputBox("valore criterio di ordinamento voluto: crescente (1) decrescente (-1) ",,- 1))
      quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice = CInt(InputBox("quanti risultati vuoi visualizzare rispetto quelli presenti in matrice e pari a " & righeoccupatenellamatrice & " ?",,100))
      Scrivi
      '      Scrivi "visualizzazione del contenuto della matrice non ordinata..."
      '      Scrivi
      '      For contatorexmatrice = 0 To  quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice  'righeoccupatenellamatrice 'UBound(matriceordinabilemultidimensionale)
      '         Messaggio "sto elaborando il record di matrice n. " & contatorexmatrice
      '         Scrivi " n " & matriceordinabilemultidimensionale(contatorexmatrice,0) & " r " & matriceordinabilemultidimensionale(contatorexmatrice,1) & " s " & matriceordinabilemultidimensionale(contatorexmatrice,2) & " rit " & matriceordinabilemultidimensionale(contatorexmatrice,3) & " ritmax " & matriceordinabilemultidimensionale(contatorexmatrice,4) & " incmax " & matriceordinabilemultidimensionale(contatorexmatrice,5) & " freq " & matriceordinabilemultidimensionale(contatorexmatrice,6) & " diff " & diff & " contatore riga matrice " & contatorexmatrice
      '      Next
      'Scrivi
      Scrivi "visualizzazione del contenuto della matrice ordinata..."
      Scrivi
      MassimoFreq = freqmassimarilevata 'EstrazioneFin
      MinimoFreq = freqminimarilevata '0
      MassimoRITMAX = ritardomassimostoricorilevato 'EstrazioneFin
      MinimoRITMAX = ritardominimostoricorilevato '0
      MassimoINCMAX = Incmaxmassimorilevato 'EstrazioneFin
      MinimoINCMAX = Incmaxminimorilevato '0
      MassimoRIT = ritardomassimorilevato 'EstrazioneFin
      MinimoRIT = ritardominimorilevato '0
      Call OrdinaMatrice(matriceordinabilemultidimensionale,Valorecriteriodiordinamento,Valorediordinamentovoluto)
      '  For k = 1 To quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice 'righeoccupatenellamatrice
      '   Scrivi matriceordinabilemultidimensionale(k,0) & " - " & matriceordinabilemultidimensionale(k,1) & " - " & matriceordinabilemultidimensionale(k,2) & " - " & matriceordinabilemultidimensionale(k,3) & " - " & matriceordinabilemultidimensionale(k,4) & " - " & matriceordinabilemultidimensionale(k,5) & " - " & matriceordinabilemultidimensionale(k,6)
      ' Next
      Scrivi
      Scrivi
      Scrivi "Elaborazione terminata con successo!"
      Scrivi
      Scrivi "range temporale analizzato " & GetInfoEstrazione(EstrazioneIni) & " - " & GetInfoEstrazione(EstrazioneFin)
      Scrivi "n. di estrazioni totali analizzate " &(EstrazioneFin - EstrazioneIni) + 1
      Scrivi "Input numeri scelti da file"
      Scrivi "file scelto per l'elaborazione " & filedaelaborare
      Scrivi "numero complessivo di ruote a girare " & UBound(aruote)
      Scrivi "ruote analizzate " & StringaRuote(aruote)
      Scrivi "ruote unite minimo " & ruoteuniteminimo
      Scrivi "ruote unite massimo " & ruoteunitemassimo
      Scrivi "classe di sviluppo " & classe
      Scrivi "sorte di ricerca " & sorte
      Scrivi "parametro di ordinamento scelto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) " & Valorediordinamentovoluto
      Scrivi "criterio di ordinamento impostato crescente (1) decrescente (-1)  " & Valorecriteriodiordinamento
      Scrivi "righe (x mix di ruote) sviluppate " & contarighe
      Scrivi "righe totali di sviluppo generate " & contarighesviluppate
      Scrivi
      Scrivi "righe occupate nella matrice di dimensione ( " & UBound(matriceordinabilemultidimensionale) & " ) : " & righeoccupatenellamatrice
      Scrivi "numero dei primi risultati visualizzati in output in base all'ordinamento scelto " & quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice
      Scrivi
      Scrivi "report sui valori estremi rilevati"
      Scrivi
      Scrivi "rit max generale " & ritardomassimorilevato
      Scrivi "formazione : " & stringarisultatoxritardomassimorilevato
      Scrivi "rs max generale " & ritardomassimostoricorilevato
      Scrivi "formazione : " & stringarisultatoxritardostoricomassimorilevato
      Scrivi "ra min generale " & ritardominimorilevato
      Scrivi "formazione : " & stringarisultatoxritardominimorilevato
      Scrivi "rs min generale " & ritardominimostoricorilevato
      Scrivi "formazione : " & stringarisultatoxritardominimostoricorilevato
      Scrivi "fq max generale " & freqmassimarilevata
      Scrivi "formazione : " & stringarisultatoxfreqmassimarilevata
      Scrivi "fq min generale " & freqminimarilevata
      Scrivi "formazione : " & stringarisultatoxfreqminimarilevata
      Scrivi "incmax max generale " & Incmaxmassimorilevato
      Scrivi "formazione : " & stringarisultatoxincmaxmassimorilevato
      Scrivi "incmax min generale " & Incmaxminimorilevato
      Scrivi "formazione : " & stringarisultatoxincmaxminimorilevato
      Scrivi "diff max generale " & diffmassimarilevata
      Scrivi "formazione : " & stringarisultatoxdiffmassimarilevata
      Scrivi "diff min generale " & diffminimarilevata
      Scrivi "formazione : " & stringarisultatoxdiffminimarilevata
      Scrivi
      Scrivi "rs max relativi ad ogni gruppo di ruote unite generato " & stringarsmaxdiognigrupporuoteunite
      Scrivi
      Scrivi "Tt : " & TempoTrascorso
   End If
End Sub

script 42 [versione C] in questa terza versione lo script mostra anche il numero di eventuali casi multipli riscontrati per ogni tipo di parametro statistico analizzato (solo per la scelta analisi da tabella).

Codice:
Option Explicit
' Script n. 42 (C) tom's bakery x lotto by tom ; sviluppo e analisi in modo integrale SENZA LIMITE DI CLASSE con rilevamento del numero esatto di righe sviluppate in rapporto al numero
' desiderato di ruote unite a girare..., alla classe di sviluppo scelta e alla classe del gruppo base da sviluppare. A differenza dello script n. 40, quasi del tutto analogo, questo invece di avvalersi
'dell'ordinamento tramite tabella (molto più lento e limitato) si basa sull'uso di matrici dinamiche molto più performanti battendo molto in velocità elaborazionale e di ordinamento il suo
'predecessore; sempre a differenza dell'altro consente l'analisi tramite inserimento dei numeri voluti sia da tabella che da file txt, inoltre rileva per ogni elaborazione anche il valori massimi di ra , rs , fq e incmax  :)
'rilevamento anche del numero di casi multipli eventuali per tutti i parametri statistici analizzati
'classe  motore x sviluppo senza limite di classe
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
            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
      Next
   End Sub
End Class
'fine classe motore senzalimitediclasse
Sub Main
   Dim ruoteuniteminimo
   Dim ruoteunitemassimo
   Dim numeroruoteunite
   Dim filerisultato
   Dim coltotruoteunite
   ReDim aruote(0)
   Dim acolruoteunite
   Dim StringaRuoteUnite
   Dim contarighe
   Dim arighefile
   Dim righesviluppate
   Dim anumeri
   Dim classe
   Dim vettorerighefilemixruote
   Dim rigasviluppata
   Dim contarighesviluppate
   Dim sorte
   Dim rit,ritmax,Incmax,freq,Inizio,fine
   Dim diff
   Dim ritardomassimorilevato
   Dim ritardomassimostoricorilevato
   Dim stringarisultatoxritardomassimorilevato
   Dim stringarisultatoxritardostoricomassimorilevato
   Dim ritardominimorilevato
   Dim ritardominimostoricorilevato
   Dim stringarisultatoxritardominimorilevato
   Dim stringarisultatoxritardominimostoricorilevato
   Dim freqmassimarilevata
   Dim freqminimarilevata
   Dim stringarisultatoxfreqmassimarilevata
   Dim stringarisultatoxfreqminimarilevata
   Dim Incmaxmassimorilevato
   Dim Incmaxminimorilevato
   Dim stringarisultatoxincmaxmassimorilevato
   Dim stringarisultatoxincmaxminimorilevato
   Dim diffmassimarilevata
   Dim diffminimarilevata
   Dim stringarisultatoxdiffmassimarilevata
   Dim stringarisultatoxdiffminimarilevata
   Dim stringarsmaxdiognigrupporuoteunite
   Dim ritardomassimoxgrupporuoteunite
   ritardomassimoxgrupporuoteunite = 0
   Dim contacasimultiplixrit
   contacasimultiplixrit = 0
   Dim contacasimultiplixritmin
   contacasimultiplixritmin = 0 'EstrazioneFin
   Dim contacasimultiplixfqmax
   contacasimultiplixfqmax = 0
   Dim contacasimultiplixfqmin
   contacasimultiplixfqmin = 0 ' EstrazioneFin
   Dim contacasimultiplixincmaxmax
   contacasimultiplixincmaxmax = 0
   '---------------------------------------------------
   Dim contacasimultiplixrsmaxgenerale 
   contacasimultiplixrsmaxgenerale = 0
   Dim contacasimultiplixrsmingenerale
   contacasimultiplixrsmingenerale = 0
   Dim contacasimultiplixincmaxmin
   contacasimultiplixincmaxmin = 0
   Dim contacasimultiplixdiffmax
   contacasimultiplixdiffmax = 0
   Dim contacasimultiplixdiffmin
   contacasimultiplixdiffmin = 0
   '---------------------------------------------------
   stringarsmaxdiognigrupporuoteunite = ""
   ritardomassimorilevato = 0
   ritardomassimostoricorilevato = 0
   ritardominimorilevato = EstrazioneFin
   ritardominimostoricorilevato = EstrazioneFin
   freqmassimarilevata = 0
   freqminimarilevata = EstrazioneFin
   Incmaxmassimorilevato = 0
   Incmaxminimorilevato = EstrazioneFin
   diffmassimarilevata = 0
   diffminimarilevata = EstrazioneFin
   Inizio = EstrazioneIni
   fine = EstrazioneFin
   Dim contatorexmatrice
   'Dim matriceordinabilemultidimensionale(500000,6) '(1300000,6) '(2600000,6) ' (500000,6) '10000  ' in c5 by gruppo 72 le formazioni integrali sono oltre 13 mln... ; in c4 solo.. 1.028.000 ca
   Dim matriceordinabilemultidimensionale(500000,6) '(3200000,6) 'rispetto i 3162510 necessari ad analizzare le rispettive c5 x A by cf54 sarebbero più che sufficienti...
   Dim righeoccupatenellamatrice
   ruoteuniteminimo = CInt(InputBox("ruote unite minimo",,1))
   ruoteunitemassimo = CInt(InputBox("ruote unite massimo",,ruoteuniteminimo))
   MsgBox "scegli sorte"
   sorte = CInt(InputBox("sorte",,1))
   MsgBox "scegli ruote da analizzare"
   Call ScegliRuote(aruote)
   Dim dafileodatabella
   Dim csvil
   Set csvil = New clsSviluppo
   dafileodatabella = InputBox("da file (f) o da tabella (t)",,"t")
   If dafileodatabella = "t" Then
      MsgBox "hai scelto da tabella"
      MsgBox "scegli gruppo base da sviluppare e analizzare"
      Call ScegliNumeri(anumeri)
      MsgBox "scegli classe da sviluppare"
      classe = CInt(InputBox("classe",,sorte))
      filerisultato = ".\gruppipossibilidiruoteunite.txt"
      If FileEsistente(filerisultato) Then
         Call EliminaFile(filerisultato)
      End If
      For numeroruoteunite = ruoteuniteminimo To ruoteunitemassimo
         coltotruoteunite = InitSviluppoIntegrale(aruote,numeroruoteunite)
         If coltotruoteunite > 0 Then
            Do While GetCombSviluppo(acolruoteunite) = True
               StringaRuoteUnite = StringaNumeri(acolruoteunite)
               contarighe = contarighe + 1
               ScriviFile filerisultato,StringaRuoteUnite
               If ScriptInterrotto Then Exit Do
            Loop
         End If
         CloseFileHandle(filerisultato)
         Call LeggiRigheFileDiTesto(filerisultato,arighefile)
         ReDim arigaruote(numeroruoteunite)
         Dim crr
         For crr = 0 To UBound(arighefile)
            'righesviluppate = InitSviluppoIntegrale(anumeri,classe)
            righesviluppate = csvil.InitSviluppo(anumeri,classe)
            Dim vettoreruoteunite
            Call SplitByChar("." & arighefile(crr) & ".",".",vettoreruoteunite)
            Dim cvru
            ReDim arigaruote(UBound(vettoreruoteunite))
            For cvru = 0 To UBound(vettoreruoteunite)
               If righesviluppate > 0 Then
                  ' Do While GetCombSviluppo(rigasviluppata) = True
                  Do While cSvil.GetComb(rigasviluppata)
                     contarighesviluppate = contarighesviluppate + 1
                     Call StatisticaFormazioneTurbo(rigasviluppata,vettoreruoteunite,sorte,rit,ritmax,Incmax,freq,Inizio,fine)
                     'Messaggio "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " crm " & contatorexmatrice
                     'Messaggio "n" & StringaNumeri(rigasviluppata) & "r" & StringaNumeri(vettoreruoteunite) & "s" & NomeSorte(sorte) & "rit" & rit & "rs" & ritmax & "incmax" & Incmax & "frq" & freq & "diff" & diff & "crm" & contatorexmatrice
                   
                      Messaggio  "r" & StringaNumeri(vettoreruoteunite) & "s" & NomeSorte(sorte) & "rit" & rit & "rs" & ritmax & "incmax" & Incmax & "frq" & freq & "diff" & diff & "crm" & contatorexmatrice
                   
                   
                     diff = ritmax - rit
                     matriceordinabilemultidimensionale(contatorexmatrice,0) = StringaNumeri(rigasviluppata)
                     matriceordinabilemultidimensionale(contatorexmatrice,1) = StringaNumeri(vettoreruoteunite)
                     matriceordinabilemultidimensionale(contatorexmatrice,2) = NomeSorte(sorte)
                     matriceordinabilemultidimensionale(contatorexmatrice,3) = Int(rit)
                     matriceordinabilemultidimensionale(contatorexmatrice,4) = Int(ritmax)
                     matriceordinabilemultidimensionale(contatorexmatrice,5) = Int(Incmax)
                     matriceordinabilemultidimensionale(contatorexmatrice,6) = Int(freq)
                     contatorexmatrice = contatorexmatrice + 1
                     righeoccupatenellamatrice = righeoccupatenellamatrice + 1
                     If rit = ritardomassimorilevato Then
                        contacasimultiplixrit = contacasimultiplixrit + 1
                     End If
                     If rit > ritardomassimorilevato Then
                        ritardomassimorilevato = rit
                        stringarisultatoxritardomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixrit = 0
                     End If
                   
                      If ritmax = ritardomassimostoricorilevato Then
                        contacasimultiplixrsmaxgenerale = contacasimultiplixrsmaxgenerale + 1
                     End If
                   
                     If ritmax > ritardomassimostoricorilevato Then
                        ritardomassimostoricorilevato = ritmax
                        stringarisultatoxritardostoricomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If ritmax > ritardomassimoxgrupporuoteunite Then
                        ritardomassimoxgrupporuoteunite = ritmax
                        'stringarisultatoxritardostoricomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If rit < ritardominimorilevato Then
                        ritardominimorilevato = rit
                        stringarisultatoxritardominimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixritmin = 0
                     End If
                     If rit = ritardominimorilevato Then
                        contacasimultiplixritmin = contacasimultiplixritmin + 1
                     End If
                   
                   
                           If ritmax = ritardominimostoricorilevato Then
                        contacasimultiplixrsmingenerale = contacasimultiplixrsmingenerale + 1
                     End If
                   
                   
                     If ritmax < ritardominimostoricorilevato Then
                        ritardominimostoricorilevato = ritmax
                        stringarisultatoxritardominimostoricorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If freq > freqmassimarilevata Then
                        freqmassimarilevata = freq
                        stringarisultatoxfreqmassimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixfqmax = 0
                     End If
                     If freq = freqmassimarilevata Then
                        contacasimultiplixfqmax = contacasimultiplixfqmax + 1
                     End If
                     If freq < freqminimarilevata Then
                        freqminimarilevata = freq
                        stringarisultatoxfreqminimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixfqmin = 0
                     End If
                     If freq = freqminimarilevata Then
                        contacasimultiplixfqmin = contacasimultiplixfqmin + 1
                     End If
                     If Incmax > Incmaxmassimorilevato Then
                        Incmaxmassimorilevato = Incmax
                        stringarisultatoxincmaxmassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixincmaxmax = 0
                     End If
                     If Incmax = Incmaxmassimorilevato Then
                        contacasimultiplixincmaxmax = contacasimultiplixincmaxmax + 1
                     End If
                   
                           If Incmax = contacasimultiplixincmaxmin Then
                        contacasimultiplixincmaxmin = contacasimultiplixincmaxmin + 1
                     End If
                   
                     If Incmax < Incmaxminimorilevato Then
                        Incmaxminimorilevato = Incmax
                        stringarisultatoxincmaxminimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                   
                             If diff  = contacasimultiplixdiffmax  Then
                        contacasimultiplixdiffmax = contacasimultiplixdiffmax + 1
                     End If
                   
                     If diff > diffmassimarilevata Then
                        diffmassimarilevata = diff
                        stringarisultatoxdiffmassimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                   
                              If diff  = contacasimultiplixdiffmin  Then
                        contacasimultiplixdiffmin = contacasimultiplixdiffmin + 1
                     End If
                   
                     If diff < diffminimarilevata Then
                        diffminimarilevata = diff
                        stringarisultatoxdiffminimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If ScriptInterrotto Then Exit Do
                  Loop
               End If
               If ritardomassimoxgrupporuoteunite <> 0 And ritardomassimoxgrupporuoteunite <> "0" Then
                  stringarsmaxdiognigrupporuoteunite = stringarsmaxdiognigrupporuoteunite & " | " & StringaNumeri(vettoreruoteunite) & " rsgru " & ritardomassimoxgrupporuoteunite & " . "
               End If
               ritardomassimoxgrupporuoteunite = 0
               If ScriptInterrotto Then Exit For
            Next ' cvru
            If ScriptInterrotto Then Exit For
            Messaggio "thread elaborazionale n. " & contatorexmatrice
         Next
         If ScriptInterrotto Then Exit For
         Call AvanzamentoElab(1,ruoteunitemassimo,crr)
      Next 'x numero ruote unite
      Dim Valorediordinamentovoluto
      Dim Valorecriteriodiordinamento
      Dim quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice
      Valorediordinamentovoluto = CInt(InputBox("valore di ordinamento voluto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) ",,3))
      Valorecriteriodiordinamento = CInt(InputBox("valore criterio di ordinamento voluto: crescente (1) decrescente (-1) ",,- 1))
      'quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice = CInt(InputBox("quanti risultati vuoi visualizzare rispetto quelli presenti in matrice e pari a " & righeoccupatenellamatrice & " ?",,100))
      quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice = InputBox("quanti risultati vuoi visualizzare rispetto quelli presenti in matrice e pari a " & righeoccupatenellamatrice & " ?",,100)
      quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice = Int(quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice)
      Scrivi
      '      Scrivi "visualizzazione del contenuto della matrice non ordinata..."
      '      Scrivi
      '      For contatorexmatrice = 0 To quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice 'righeoccupateinmatrice 'UBound(matriceordinabilemultidimensionale)
      '         Messaggio "sto elaborando il record di matrice n. " & contatorexmatrice
      '         Scrivi " n " & matriceordinabilemultidimensionale(contatorexmatrice,0) & " r " & matriceordinabilemultidimensionale(contatorexmatrice,1) & " s " & matriceordinabilemultidimensionale(contatorexmatrice,2) & " rit " & matriceordinabilemultidimensionale(contatorexmatrice,3) & " ritmax " & matriceordinabilemultidimensionale(contatorexmatrice,4) & " incmax " & matriceordinabilemultidimensionale(contatorexmatrice,5) & " freq " & matriceordinabilemultidimensionale(contatorexmatrice,6) & " diff " & diff & " contatore riga matrice " & contatorexmatrice
      '      Next
      'Scrivi
      Scrivi "visualizzazione del contenuto dell matrice ordinata..."
      Scrivi
      Scrivi "num-ruota-sorte-rit-ritmax-incmax-freq"
      Scrivi
      Dim sortFREQ
      Dim MassimoFreq
      Dim MinimoFreq
      Dim sortRITMAX
      Dim MassimoRITMAX
      Dim MinimoRITMAX
      Dim sortINCMAX
      Dim MassimoINCMAX
      Dim MinimoINCMAX
      Dim sortRIT
      Dim MassimoRIT
      Dim MinimoRIT
      MassimoFreq = freqmassimarilevata 'EstrazioneFin
      MinimoFreq = freqminimarilevata '0
      MassimoRITMAX = ritardomassimostoricorilevato 'EstrazioneFin
      MinimoRITMAX = ritardominimostoricorilevato '0
      MassimoINCMAX = Incmaxmassimorilevato 'EstrazioneFin
      MinimoINCMAX = Incmaxminimorilevato '0
      MassimoRIT = ritardomassimorilevato 'EstrazioneFin
      MinimoRIT = ritardominimorilevato '0
      Dim cmom
      Dim k
      Call OrdinaMatrice(matriceordinabilemultidimensionale,Valorecriteriodiordinamento,Valorediordinamentovoluto)
      For k = 0 To quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice 'righeoccupatenellamatrice
         Scrivi matriceordinabilemultidimensionale(k,0) & " - " & matriceordinabilemultidimensionale(k,1) & " - " & matriceordinabilemultidimensionale(k,2) & " - " & matriceordinabilemultidimensionale(k,3) & " - " & matriceordinabilemultidimensionale(k,4) & " - " & matriceordinabilemultidimensionale(k,5) & " - " & matriceordinabilemultidimensionale(k,6)
      Next
      Scrivi
      Scrivi
      Scrivi "Elaborazione terminata con successo!"
      Scrivi
      Scrivi "range temporale analizzato " & GetInfoEstrazione(EstrazioneIni) & " - " & GetInfoEstrazione(EstrazioneFin)
      Scrivi "n. di estrazioni totali analizzate " &(EstrazioneFin - EstrazioneIni) + 1
      Scrivi "Input numeri scelti da tabella"
      Scrivi "gruppo base numerico analizzato " & StringaNumeri(anumeri)
      Scrivi "classe gruppo numerico sviluppato " & UBound(anumeri)
      Scrivi "numero complessivo di ruote a girare " & UBound(aruote)
      Scrivi "ruote analizzate " & StringaRuote(aruote)
      Scrivi "ruote unite minimo " & ruoteuniteminimo
      Scrivi "ruote unite massimo " & ruoteunitemassimo
      Scrivi "classe di sviluppo " & classe
      Scrivi "sorte di ricerca " & sorte
      Scrivi "parametro di ordinamento scelto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) " & Valorediordinamentovoluto
      Scrivi "criterio di ordinamento impostato crescente (1) decrescente (-1)  " & Valorecriteriodiordinamento
      Scrivi "righe (x mix di ruote) sviluppate " & contarighe
      Scrivi "righe totali di sviluppo generate " & contarighesviluppate
      Scrivi
      Scrivi "cgb " & UBound(anumeri) & " ; " & " cs " & classe & "  ; " & " pr " & UBound(aruote) & " ;  qruag  :  da " & ruoteuniteminimo & " a " & ruoteunitemassimo & " ;  righe " & contarighesviluppate & " ;  tt : " & TempoTrascorso & " sg " & righesviluppate
      Scrivi
      Scrivi "righe occupate nella matrice di dimensione ( " & UBound(matriceordinabilemultidimensionale) & " ) : " & righeoccupatenellamatrice
      Scrivi "numero dei primi risultati visualizzati in output in base all'ordinamento scelto " & quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice
      Scrivi
      Scrivi "report sui valori estremi rilevati"
      Scrivi
      Scrivi "rit max generale " & ritardomassimorilevato
      Scrivi "formazione : " & stringarisultatoxritardomassimorilevato
      Scrivi "n. casi multipli di rit max generale " & contacasimultiplixrit
      Scrivi "rs max generale " & ritardomassimostoricorilevato
      Scrivi "formazione : " & stringarisultatoxritardostoricomassimorilevato
      Scrivi "n. casi multipli di rit sto max generale " & contacasimultiplixrsmaxgenerale
      Scrivi "ra min generale " & ritardominimorilevato
      Scrivi "formazione : " & stringarisultatoxritardominimorilevato
      Scrivi "n. casi multipli di rit min generale " & Int(contacasimultiplixritmin) - 1
      Scrivi "rs min generale " & ritardominimostoricorilevato
      Scrivi "formazione : " & stringarisultatoxritardominimostoricorilevato
      Scrivi "n. casi multipli di rit sto min generale " & contacasimultiplixrsmingenerale
      Scrivi "fq max generale " & freqmassimarilevata
      Scrivi "formazione : " & stringarisultatoxfreqmassimarilevata
      Scrivi "n. casi multipli di fq max generale " & Int(contacasimultiplixfqmax) - 1
      Scrivi "fq min generale " & freqminimarilevata
      Scrivi "formazione : " & stringarisultatoxfreqminimarilevata
      Scrivi "n. casi multipli di fq min generale " & Int(contacasimultiplixfqmin) - 1
      Scrivi "incmax max generale " & Incmaxmassimorilevato
      Scrivi "formazione : " & stringarisultatoxincmaxmassimorilevato
      Scrivi "n. casi multipli di incmax max generale " & Int(contacasimultiplixincmaxmax) - 1
      Scrivi "incmax min generale " & Incmaxminimorilevato
      Scrivi "formazione : " & stringarisultatoxincmaxminimorilevato
      Scrivi "n. casi multipli di incmax min generale " & contacasimultiplixincmaxmin
      Scrivi "diff max generale " & diffmassimarilevata
      Scrivi "formazione : " & stringarisultatoxdiffmassimarilevata
      Scrivi "n. casi multipli di diff  max generale " & contacasimultiplixdiffmax
      Scrivi "diff min generale " & diffminimarilevata
      Scrivi "formazione : " & stringarisultatoxdiffminimarilevata
      Scrivi "n. casi multipli di diff min generale " & contacasimultiplixdiffmin
      Scrivi
      Scrivi "rs max relativi ad ogni gruppo di ruote unite generato " & stringarsmaxdiognigrupporuoteunite
      Scrivi
      Scrivi "Tt : " & TempoTrascorso
   Else
      MsgBox "hai scelto analisi da file"
      MsgBox "scegli file da analizzare"
      Dim filedaelaborare
      filedaelaborare = ScegliFile(".\",".txt","filetxtdasviluppareeanalizzare.txt")
      MsgBox "hai scelto di analizzare il seguente file: " & filedaelaborare
      MsgBox "scegli classe da sviluppare"
      classe = CInt(InputBox("classe",,2))
      filerisultato = ".\gruppipossibilidiruoteunite.txt"
      If FileEsistente(filerisultato) Then
         Call EliminaFile(filerisultato)
      End If
      For numeroruoteunite = ruoteuniteminimo To ruoteunitemassimo
         coltotruoteunite = InitSviluppoIntegrale(aruote,numeroruoteunite)
         If coltotruoteunite > 0 Then
            Do While GetCombSviluppo(acolruoteunite) = True
               StringaRuoteUnite = StringaNumeri(acolruoteunite)
               contarighe = contarighe + 1
               ScriviFile filerisultato,StringaRuoteUnite
               If ScriptInterrotto Then Exit Do
            Loop
         End If
         CloseFileHandle(filerisultato)
         Dim arighefiledaelaborare
         Dim crfde
         Dim vettorestringhenumerifile
         Dim vettoreinterinumerifile
         Call LeggiRigheFileDiTesto(filedaelaborare,arighefiledaelaborare)
         For crfde = 0 To UBound(arighefiledaelaborare)
            'Scrivi "|" & arighefiledaelaborare(crfde) & "|"
            Call SplitByChar(arighefiledaelaborare(crfde),".",vettorestringhenumerifile)
            Dim cevns
            ReDim vettoreinterinumerifile(UBound(vettorestringhenumerifile))
            For cevns = 0 To UBound(vettorestringhenumerifile)
               vettoreinterinumerifile(cevns) = Int(vettorestringhenumerifile(cevns))
               Dim cvi
            Next ' x vettore stringhe numeri   file
            Scrivi
            Call LeggiRigheFileDiTesto(filerisultato,arighefile)
            ReDim arigaruote(numeroruoteunite)
            For crr = 0 To UBound(arighefile)
               'righesviluppate = InitSviluppoIntegrale(vettoreinterinumerifile,classe)
               righesviluppate = csvil.InitSviluppo(vettoreinterinumerifile,classe)
               Call SplitByChar("." & arighefile(crr) & ".",".",vettoreruoteunite)
               ReDim arigaruote(UBound(vettoreruoteunite))
               For cvru = 0 To UBound(vettoreruoteunite)
                  If righesviluppate > 0 Then
                     ' Do While GetCombSviluppo(rigasviluppata) = True
                     Do While cSvil.GetComb(rigasviluppata)
                        contarighesviluppate = contarighesviluppate + 1
                        Call StatisticaFormazioneTurbo(rigasviluppata,vettoreruoteunite,sorte,rit,ritmax,Incmax,freq,Inizio,fine)
                        Messaggio "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " crm " & contatorexmatrice
                        diff = ritmax - rit
                        matriceordinabilemultidimensionale(contatorexmatrice,0) = StringaNumeri(rigasviluppata)
                        matriceordinabilemultidimensionale(contatorexmatrice,1) = StringaNumeri(vettoreruoteunite)
                        matriceordinabilemultidimensionale(contatorexmatrice,2) = NomeSorte(sorte)
                        matriceordinabilemultidimensionale(contatorexmatrice,3) = Int(rit)
                        matriceordinabilemultidimensionale(contatorexmatrice,4) = Int(ritmax)
                        matriceordinabilemultidimensionale(contatorexmatrice,5) = Int(Incmax)
                        matriceordinabilemultidimensionale(contatorexmatrice,6) = Int(freq)
                        contatorexmatrice = contatorexmatrice + 1
                        righeoccupatenellamatrice = righeoccupatenellamatrice + 1
                        If rit > ritardomassimorilevato Then
                           ritardomassimorilevato = rit
                           stringarisultatoxritardomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If ritmax > ritardomassimostoricorilevato Then
                           ritardomassimostoricorilevato = ritmax
                           stringarisultatoxritardostoricomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If ritmax > ritardomassimoxgrupporuoteunite Then
                           ritardomassimoxgrupporuoteunite = ritmax
                           'stringarisultatoxritardostoricomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If rit < ritardominimorilevato Then
                           ritardominimorilevato = rit
                           stringarisultatoxritardominimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If ritmax < ritardominimostoricorilevato Then
                           ritardominimostoricorilevato = ritmax
                           stringarisultatoxritardominimostoricorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If freq > freqmassimarilevata Then
                           freqmassimarilevata = freq
                           stringarisultatoxfreqmassimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If freq < freqminimarilevata Then
                           freqminimarilevata = freq
                           stringarisultatoxfreqminimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If Incmax > Incmaxmassimorilevato Then
                           Incmaxmassimorilevato = Incmax
                           stringarisultatoxincmaxmassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If Incmax < Incmaxminimorilevato Then
                           Incmaxminimorilevato = Incmax
                           stringarisultatoxincmaxminimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If diff > diffmassimarilevata Then
                           diffmassimarilevata = diff
                           stringarisultatoxdiffmassimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If diff < diffminimarilevata Then
                           diffminimarilevata = diff
                           stringarisultatoxdiffminimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If ScriptInterrotto Then Exit Do
                     Loop
                  End If
                  If ritardomassimoxgrupporuoteunite <> 0 And ritardomassimoxgrupporuoteunite <> "0" Then
                     stringarsmaxdiognigrupporuoteunite = stringarsmaxdiognigrupporuoteunite & " | " & StringaNumeri(vettoreruoteunite) & " rsgru " & ritardomassimoxgrupporuoteunite & " . "
                  End If
                  ritardomassimoxgrupporuoteunite = 0
                  If ScriptInterrotto Then Exit For
               Next ' cvru
               If ScriptInterrotto Then Exit For
               Messaggio "thread elaborazionale n. " & contatorexmatrice
            Next
            If ScriptInterrotto Then Exit For
            Call AvanzamentoElab(1,ruoteunitemassimo,crr)
         Next ' x vettore righe file txt da elaborare
         If ScriptInterrotto Then Exit For
      Next 'x numero ruote unite...
      Valorediordinamentovoluto = CInt(InputBox("valore di ordinamento voluto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) ",,3))
      Valorecriteriodiordinamento = CInt(InputBox("valore criterio di ordinamento voluto: crescente (1) decrescente (-1) ",,- 1))
      quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice = CInt(InputBox("quanti risultati vuoi visualizzare rispetto quelli presenti in matrice e pari a " & righeoccupatenellamatrice & " ?",,100))
      Scrivi
      '      Scrivi "visualizzazione del contenuto della matrice non ordinata..."
      '      Scrivi
      '      For contatorexmatrice = 0 To  quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice  'righeoccupatenellamatrice 'UBound(matriceordinabilemultidimensionale)
      '         Messaggio "sto elaborando il record di matrice n. " & contatorexmatrice
      '         Scrivi " n " & matriceordinabilemultidimensionale(contatorexmatrice,0) & " r " & matriceordinabilemultidimensionale(contatorexmatrice,1) & " s " & matriceordinabilemultidimensionale(contatorexmatrice,2) & " rit " & matriceordinabilemultidimensionale(contatorexmatrice,3) & " ritmax " & matriceordinabilemultidimensionale(contatorexmatrice,4) & " incmax " & matriceordinabilemultidimensionale(contatorexmatrice,5) & " freq " & matriceordinabilemultidimensionale(contatorexmatrice,6) & " diff " & diff & " contatore riga matrice " & contatorexmatrice
      '      Next
      'Scrivi
      Scrivi "visualizzazione del contenuto della matrice ordinata..."
      Scrivi
      MassimoFreq = freqmassimarilevata 'EstrazioneFin
      MinimoFreq = freqminimarilevata '0
      MassimoRITMAX = ritardomassimostoricorilevato 'EstrazioneFin
      MinimoRITMAX = ritardominimostoricorilevato '0
      MassimoINCMAX = Incmaxmassimorilevato 'EstrazioneFin
      MinimoINCMAX = Incmaxminimorilevato '0
      MassimoRIT = ritardomassimorilevato 'EstrazioneFin
      MinimoRIT = ritardominimorilevato '0
      Call OrdinaMatrice(matriceordinabilemultidimensionale,Valorecriteriodiordinamento,Valorediordinamentovoluto)
      '  For k = 1 To quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice 'righeoccupatenellamatrice
      '   Scrivi matriceordinabilemultidimensionale(k,0) & " - " & matriceordinabilemultidimensionale(k,1) & " - " & matriceordinabilemultidimensionale(k,2) & " - " & matriceordinabilemultidimensionale(k,3) & " - " & matriceordinabilemultidimensionale(k,4) & " - " & matriceordinabilemultidimensionale(k,5) & " - " & matriceordinabilemultidimensionale(k,6)
      ' Next
      Scrivi
      Scrivi
      Scrivi "Elaborazione terminata con successo!"
      Scrivi
      Scrivi "range temporale analizzato " & GetInfoEstrazione(EstrazioneIni) & " - " & GetInfoEstrazione(EstrazioneFin)
      Scrivi "n. di estrazioni totali analizzate " &(EstrazioneFin - EstrazioneIni) + 1
      Scrivi "Input numeri scelti da file"
      Scrivi "file scelto per l'elaborazione " & filedaelaborare
      Scrivi "numero complessivo di ruote a girare " & UBound(aruote)
      Scrivi "ruote analizzate " & StringaRuote(aruote)
      Scrivi "ruote unite minimo " & ruoteuniteminimo
      Scrivi "ruote unite massimo " & ruoteunitemassimo
      Scrivi "classe di sviluppo " & classe
      Scrivi "sorte di ricerca " & sorte
      Scrivi "parametro di ordinamento scelto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) " & Valorediordinamentovoluto
      Scrivi "criterio di ordinamento impostato crescente (1) decrescente (-1)  " & Valorecriteriodiordinamento
      Scrivi "righe (x mix di ruote) sviluppate " & contarighe
      Scrivi "righe totali di sviluppo generate " & contarighesviluppate
      Scrivi
      Scrivi "righe occupate nella matrice di dimensione ( " & UBound(matriceordinabilemultidimensionale) & " ) : " & righeoccupatenellamatrice
      Scrivi "numero dei primi risultati visualizzati in output in base all'ordinamento scelto " & quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice
      Scrivi
      Scrivi "report sui valori estremi rilevati"
      Scrivi
      Scrivi "rit max generale " & ritardomassimorilevato
      Scrivi "formazione : " & stringarisultatoxritardomassimorilevato
      Scrivi "rs max generale " & ritardomassimostoricorilevato
      Scrivi "formazione : " & stringarisultatoxritardostoricomassimorilevato
      Scrivi "ra min generale " & ritardominimorilevato
      Scrivi "formazione : " & stringarisultatoxritardominimorilevato
      Scrivi "rs min generale " & ritardominimostoricorilevato
      Scrivi "formazione : " & stringarisultatoxritardominimostoricorilevato
      Scrivi "fq max generale " & freqmassimarilevata
      Scrivi "formazione : " & stringarisultatoxfreqmassimarilevata
      Scrivi "fq min generale " & freqminimarilevata
      Scrivi "formazione : " & stringarisultatoxfreqminimarilevata
      Scrivi "incmax max generale " & Incmaxmassimorilevato
      Scrivi "formazione : " & stringarisultatoxincmaxmassimorilevato
      Scrivi "incmax min generale " & Incmaxminimorilevato
      Scrivi "formazione : " & stringarisultatoxincmaxminimorilevato
      Scrivi "diff max generale " & diffmassimarilevata
      Scrivi "formazione : " & stringarisultatoxdiffmassimarilevata
      Scrivi "diff min generale " & diffminimarilevata
      Scrivi "formazione : " & stringarisultatoxdiffminimarilevata
      Scrivi
      Scrivi "rs max relativi ad ogni gruppo di ruote unite generato " & stringarsmaxdiognigrupporuoteunite
      Scrivi
      Scrivi "Tt : " & TempoTrascorso
   End If
End Sub


script 42 [versione D] in questa terza versione lo script mostra anche il numero di eventuali casi multipli riscontrati per ogni tipo di parametro statistico analizzato (non solo per la scelta analisi da tabella ma anche per quella da file txt) [agg. sett 2023].


Codice:
Option Explicit
' Script n. 49 (42 D tom's bakery)  x lotto by tom ; sviluppo e analisi in modo integrale SENZA LIMITE DI CLASSE con rilevamento del numero esatto di righe sviluppate in rapporto al numero
' desiderato di ruote unite a girare..., alla classe di sviluppo scelta e alla classe del gruppo base da sviluppare. A differenza dello script n. 40, quasi del tutto analogo, questo invece di avvalersi
'dell'ordinamento tramite tabella (molto più lento e limitato) si basa sull'uso di matrici dinamiche molto più performanti battendo molto in velocità elaborazionale e di ordinamento il suo
'predecessore; sempre a differenza dell'altro consente l'analisi tramite inserimento dei numeri voluti sia da tabella che da file txt, inoltre rileva per ogni elaborazione anche il valori massimi di ra , rs , fq e incmax  :)
'rilevamento anche del numero di casi multipli eventuali per tutti i parametri statistici analizzati sia per analisi da tabella che da file txt
'classe  motore x sviluppo senza limite di classe
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
            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
      Next
   End Sub
End Class
'fine classe motore senzalimitediclasse
Sub Main
   Dim ruoteuniteminimo
   Dim ruoteunitemassimo
   Dim numeroruoteunite
   Dim filerisultato
   Dim coltotruoteunite
   ReDim aruote(0)
   Dim acolruoteunite
   Dim StringaRuoteUnite
   Dim contarighe
   Dim arighefile
   Dim righesviluppate
   Dim anumeri
   Dim classe
   Dim vettorerighefilemixruote
   Dim rigasviluppata
   Dim contarighesviluppate
   Dim sorte
   Dim rit,ritmax,Incmax,freq,Inizio,fine
   Dim diff
   Dim ritardomassimorilevato
   Dim ritardomassimostoricorilevato
   Dim stringarisultatoxritardomassimorilevato
   Dim stringarisultatoxritardostoricomassimorilevato
   Dim ritardominimorilevato
   Dim ritardominimostoricorilevato
   Dim stringarisultatoxritardominimorilevato
   Dim stringarisultatoxritardominimostoricorilevato
   Dim freqmassimarilevata
   Dim freqminimarilevata
   Dim stringarisultatoxfreqmassimarilevata
   Dim stringarisultatoxfreqminimarilevata
   Dim Incmaxmassimorilevato
   Dim Incmaxminimorilevato
   Dim stringarisultatoxincmaxmassimorilevato
   Dim stringarisultatoxincmaxminimorilevato
   Dim diffmassimarilevata
   Dim diffminimarilevata
   Dim stringarisultatoxdiffmassimarilevata
   Dim stringarisultatoxdiffminimarilevata
   Dim stringarsmaxdiognigrupporuoteunite
   Dim ritardomassimoxgrupporuoteunite
   ritardomassimoxgrupporuoteunite = 0
   Dim contacasimultiplixrit
   contacasimultiplixrit = 0
   Dim contacasimultiplixritmin
   contacasimultiplixritmin = 0 'EstrazioneFin
   Dim contacasimultiplixfqmax
   contacasimultiplixfqmax = 0
   Dim contacasimultiplixfqmin
   contacasimultiplixfqmin = 0 ' EstrazioneFin
   Dim contacasimultiplixincmaxmax
   contacasimultiplixincmaxmax = 0
   '---------------------------------------------------
   Dim contacasimultiplixrsmaxgenerale
   contacasimultiplixrsmaxgenerale = 0
   Dim contacasimultiplixrsmingenerale
   contacasimultiplixrsmingenerale = 0
   Dim contacasimultiplixincmaxmin
   contacasimultiplixincmaxmin = 0
   Dim contacasimultiplixdiffmax
   contacasimultiplixdiffmax = 0
   Dim contacasimultiplixdiffmin
   contacasimultiplixdiffmin = 0
   '---------------------------------------------------
   stringarsmaxdiognigrupporuoteunite = ""
   ritardomassimorilevato = 0
   ritardomassimostoricorilevato = 0
   ritardominimorilevato = EstrazioneFin
   ritardominimostoricorilevato = EstrazioneFin
   freqmassimarilevata = 0
   freqminimarilevata = EstrazioneFin
   Incmaxmassimorilevato = 0
   Incmaxminimorilevato = EstrazioneFin
   diffmassimarilevata = 0
   diffminimarilevata = EstrazioneFin
   Inizio = EstrazioneIni
   fine = EstrazioneFin
   Dim contatorexmatrice
   'Dim matriceordinabilemultidimensionale(500000,6) '(1300000,6) '(2600000,6) ' (500000,6) '10000  ' in c5 by gruppo 72 le formazioni integrali sono oltre 13 mln... ; in c4 solo.. 1.028.000 ca
   Dim matriceordinabilemultidimensionale(100000,6) ' 2000000 (500000,6) '(3200000,6) 'rispetto i 3162510 necessari ad analizzare le rispettive c5 x A by cf54 sarebbero più che sufficienti...
   Dim righeoccupatenellamatrice
   ruoteuniteminimo = CInt(InputBox("ruote unite minimo",,1))
   ruoteunitemassimo = CInt(InputBox("ruote unite massimo",,ruoteuniteminimo))
   MsgBox "scegli sorte"
   sorte = CInt(InputBox("sorte",,1))
   MsgBox "scegli ruote da analizzare"
   Call ScegliRuote(aruote)
   Dim dafileodatabella
   Dim csvil
   Set csvil = New clsSviluppo
   dafileodatabella = InputBox("da file (f) o da tabella (t)",,"t")
   If dafileodatabella = "t" Then
      MsgBox "hai scelto da tabella"
      MsgBox "scegli gruppo base da sviluppare e analizzare"
      Call ScegliNumeri(anumeri)
      MsgBox "scegli classe da sviluppare"
      classe = CInt(InputBox("classe",,sorte))
      filerisultato = ".\gruppipossibilidiruoteunite.txt"
      If FileEsistente(filerisultato) Then
         Call EliminaFile(filerisultato)
      End If
      For numeroruoteunite = ruoteuniteminimo To ruoteunitemassimo
         coltotruoteunite = InitSviluppoIntegrale(aruote,numeroruoteunite)
         If coltotruoteunite > 0 Then
            Do While GetCombSviluppo(acolruoteunite) = True
               StringaRuoteUnite = StringaNumeri(acolruoteunite)
               contarighe = contarighe + 1
               ScriviFile filerisultato,StringaRuoteUnite
               If ScriptInterrotto Then Exit Do
            Loop
         End If
         CloseFileHandle(filerisultato)
         Call LeggiRigheFileDiTesto(filerisultato,arighefile)
         ReDim arigaruote(numeroruoteunite)
         Dim crr
         For crr = 0 To UBound(arighefile)
            'righesviluppate = InitSviluppoIntegrale(anumeri,classe)
            righesviluppate = csvil.InitSviluppo(anumeri,classe)
            Dim vettoreruoteunite
            Call SplitByChar("." & arighefile(crr) & ".",".",vettoreruoteunite)
            Dim cvru
            ReDim arigaruote(UBound(vettoreruoteunite))
            For cvru = 0 To UBound(vettoreruoteunite)
               If righesviluppate > 0 Then
                  ' Do While GetCombSviluppo(rigasviluppata) = True
                  Do While cSvil.GetComb(rigasviluppata)
                     contarighesviluppate = contarighesviluppate + 1
                     Call StatisticaFormazioneTurbo(rigasviluppata,vettoreruoteunite,sorte,rit,ritmax,Incmax,freq,Inizio,fine)
                     'Messaggio "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " crm " & contatorexmatrice
                     'Messaggio "n" & StringaNumeri(rigasviluppata) & "r" & StringaNumeri(vettoreruoteunite) & "s" & NomeSorte(sorte) & "rit" & rit & "rs" & ritmax & "incmax" & Incmax & "frq" & freq & "diff" & diff & "crm" & contatorexmatrice
                     Messaggio "r" & StringaNumeri(vettoreruoteunite) & "s" & NomeSorte(sorte) & "rit" & rit & "rs" & ritmax & "incmax" & Incmax & "frq" & freq & "diff" & diff & "crm" & contatorexmatrice
                     diff = ritmax - rit
                     matriceordinabilemultidimensionale(contatorexmatrice,0) = StringaNumeri(rigasviluppata)
                     matriceordinabilemultidimensionale(contatorexmatrice,1) = StringaNumeri(vettoreruoteunite)
                     matriceordinabilemultidimensionale(contatorexmatrice,2) = NomeSorte(sorte)
                     matriceordinabilemultidimensionale(contatorexmatrice,3) = Int(rit)
                     matriceordinabilemultidimensionale(contatorexmatrice,4) = Int(ritmax)
                     matriceordinabilemultidimensionale(contatorexmatrice,5) = Int(Incmax)
                     matriceordinabilemultidimensionale(contatorexmatrice,6) = Int(freq)
                     contatorexmatrice = contatorexmatrice + 1
                     righeoccupatenellamatrice = righeoccupatenellamatrice + 1
                     If rit = ritardomassimorilevato Then
                        contacasimultiplixrit = contacasimultiplixrit + 1
                     End If
                     If rit > ritardomassimorilevato Then
                        ritardomassimorilevato = rit
                        stringarisultatoxritardomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixrit = 0
                     End If
                     If ritmax = ritardomassimostoricorilevato Then
                        contacasimultiplixrsmaxgenerale = contacasimultiplixrsmaxgenerale + 1
                     End If
                     If ritmax > ritardomassimostoricorilevato Then
                        ritardomassimostoricorilevato = ritmax
                        stringarisultatoxritardostoricomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixrsmaxgenerale = 0
                     End If
                     If ritmax > ritardomassimoxgrupporuoteunite Then
                        ritardomassimoxgrupporuoteunite = ritmax
                        'stringarisultatoxritardostoricomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                     End If
                     If rit < ritardominimorilevato Then
                        ritardominimorilevato = rit
                        stringarisultatoxritardominimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixritmin = 0
                     End If
                     If rit = ritardominimorilevato Then
                        contacasimultiplixritmin = contacasimultiplixritmin + 1
                     End If
                     If ritmax = ritardominimostoricorilevato Then
                        contacasimultiplixrsmingenerale = contacasimultiplixrsmingenerale + 1
                     End If
                     If ritmax < ritardominimostoricorilevato Then
                        ritardominimostoricorilevato = ritmax
                        stringarisultatoxritardominimostoricorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixrsmingenerale = 0
                     End If
                     If freq > freqmassimarilevata Then
                        freqmassimarilevata = freq
                        stringarisultatoxfreqmassimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixfqmax = 0
                     End If
                     If freq = freqmassimarilevata Then
                        contacasimultiplixfqmax = contacasimultiplixfqmax + 1
                     End If
                     If freq < freqminimarilevata Then
                        freqminimarilevata = freq
                        stringarisultatoxfreqminimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixfqmin = 0
                     End If
                     If freq = freqminimarilevata Then
                        contacasimultiplixfqmin = contacasimultiplixfqmin + 1
                     End If
                     If Incmax > Incmaxmassimorilevato Then
                        Incmaxmassimorilevato = Incmax
                        stringarisultatoxincmaxmassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixincmaxmax = 0
                     End If
                     If Incmax = Incmaxmassimorilevato Then
                        contacasimultiplixincmaxmax = contacasimultiplixincmaxmax + 1
                     End If
                     If Incmax = Incmaxminimorilevato Then
                        contacasimultiplixincmaxmin = contacasimultiplixincmaxmin + 1
                     End If
                     If Incmax < Incmaxminimorilevato Then
                        Incmaxminimorilevato = Incmax
                        stringarisultatoxincmaxminimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixincmaxmin = 0
                     End If
                     If diff = diffmassimarilevata Then
                        contacasimultiplixdiffmax = contacasimultiplixdiffmax + 1
                     End If
                     If diff > diffmassimarilevata Then
                        diffmassimarilevata = diff
                        stringarisultatoxdiffmassimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixdiffmax = 0
                     End If
                     If diff = diffminimarilevata Then
                        contacasimultiplixdiffmin = contacasimultiplixdiffmin + 1
                     End If
                     If diff < diffminimarilevata Then
                        diffminimarilevata = diff
                        stringarisultatoxdiffminimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        contacasimultiplixdiffmin = 0
                     End If
                     If ScriptInterrotto Then Exit Do
                  Loop
               End If
               If ritardomassimoxgrupporuoteunite <> 0 And ritardomassimoxgrupporuoteunite <> "0" Then
                  stringarsmaxdiognigrupporuoteunite = stringarsmaxdiognigrupporuoteunite & " | " & StringaNumeri(vettoreruoteunite) & " rsgru " & ritardomassimoxgrupporuoteunite & " . "
               End If
               ritardomassimoxgrupporuoteunite = 0
               If ScriptInterrotto Then Exit For
            Next ' cvru
            If ScriptInterrotto Then Exit For
            Messaggio "thread elaborazionale n. " & contatorexmatrice
         Next
         If ScriptInterrotto Then Exit For
         Call AvanzamentoElab(1,ruoteunitemassimo,crr)
      Next 'x numero ruote unite
      Dim Valorediordinamentovoluto
      Dim Valorecriteriodiordinamento
      Dim quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice
      Valorediordinamentovoluto = CInt(InputBox("valore di ordinamento voluto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) ",,3))
      Valorecriteriodiordinamento = CInt(InputBox("valore criterio di ordinamento voluto: crescente (1) decrescente (-1) ",,- 1))
      'quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice = CInt(InputBox("quanti risultati vuoi visualizzare rispetto quelli presenti in matrice e pari a " & righeoccupatenellamatrice & " ?",,100))
      quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice = InputBox("quanti risultati vuoi visualizzare rispetto quelli presenti in matrice e pari a " & righeoccupatenellamatrice & " ?",,100)
      quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice = Int(quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice)
      Scrivi
      '      Scrivi "visualizzazione del contenuto della matrice non ordinata..."
      '      Scrivi
      '      For contatorexmatrice = 0 To quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice 'righeoccupateinmatrice 'UBound(matriceordinabilemultidimensionale)
      '         Messaggio "sto elaborando il record di matrice n. " & contatorexmatrice
      '         Scrivi " n " & matriceordinabilemultidimensionale(contatorexmatrice,0) & " r " & matriceordinabilemultidimensionale(contatorexmatrice,1) & " s " & matriceordinabilemultidimensionale(contatorexmatrice,2) & " rit " & matriceordinabilemultidimensionale(contatorexmatrice,3) & " ritmax " & matriceordinabilemultidimensionale(contatorexmatrice,4) & " incmax " & matriceordinabilemultidimensionale(contatorexmatrice,5) & " freq " & matriceordinabilemultidimensionale(contatorexmatrice,6) & " diff " & diff & " contatore riga matrice " & contatorexmatrice
      '      Next
      'Scrivi
      Scrivi "visualizzazione del contenuto dell matrice ordinata..."
      Scrivi
      Scrivi "num-ruota-sorte-rit-ritmax-incmax-freq"
      Scrivi
      Dim sortFREQ
      Dim MassimoFreq
      Dim MinimoFreq
      Dim sortRITMAX
      Dim MassimoRITMAX
      Dim MinimoRITMAX
      Dim sortINCMAX
      Dim MassimoINCMAX
      Dim MinimoINCMAX
      Dim sortRIT
      Dim MassimoRIT
      Dim MinimoRIT
      MassimoFreq = freqmassimarilevata 'EstrazioneFin
      MinimoFreq = freqminimarilevata '0
      MassimoRITMAX = ritardomassimostoricorilevato 'EstrazioneFin
      MinimoRITMAX = ritardominimostoricorilevato '0
      MassimoINCMAX = Incmaxmassimorilevato 'EstrazioneFin
      MinimoINCMAX = Incmaxminimorilevato '0
      MassimoRIT = ritardomassimorilevato 'EstrazioneFin
      MinimoRIT = ritardominimorilevato '0
      Dim cmom
      Dim k
      Call OrdinaMatrice(matriceordinabilemultidimensionale,Valorecriteriodiordinamento,Valorediordinamentovoluto)
      For k = 0 To quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice 'righeoccupatenellamatrice
         Scrivi matriceordinabilemultidimensionale(k,0) & " - " & matriceordinabilemultidimensionale(k,1) & " - " & matriceordinabilemultidimensionale(k,2) & " - " & matriceordinabilemultidimensionale(k,3) & " - " & matriceordinabilemultidimensionale(k,4) & " - " & matriceordinabilemultidimensionale(k,5) & " - " & matriceordinabilemultidimensionale(k,6)
      Next
      Scrivi
      Scrivi
      Scrivi "Elaborazione terminata con successo!"
      Scrivi
      Scrivi "range temporale analizzato " & GetInfoEstrazione(EstrazioneIni) & " - " & GetInfoEstrazione(EstrazioneFin)
      Scrivi "n. di estrazioni totali analizzate " &(EstrazioneFin - EstrazioneIni) + 1
      Scrivi "Input numeri scelti da tabella"
      Scrivi "gruppo base numerico analizzato " & StringaNumeri(anumeri)
      Scrivi "classe gruppo numerico sviluppato " & UBound(anumeri)
      Scrivi "numero complessivo di ruote a girare " & UBound(aruote)
      Scrivi "ruote analizzate " & StringaRuote(aruote)
      Scrivi "ruote unite minimo " & ruoteuniteminimo
      Scrivi "ruote unite massimo " & ruoteunitemassimo
      Scrivi "classe di sviluppo " & classe
      Scrivi "sorte di ricerca " & sorte
      Scrivi "parametro di ordinamento scelto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) " & Valorediordinamentovoluto
      Scrivi "criterio di ordinamento impostato crescente (1) decrescente (-1)  " & Valorecriteriodiordinamento
      Scrivi "righe (x mix di ruote) sviluppate " & contarighe
      Scrivi "righe totali di sviluppo generate " & contarighesviluppate
      Scrivi
      Scrivi "cgb " & UBound(anumeri) & " ; " & " cs " & classe & "  ; " & " pr " & UBound(aruote) & " ;  qruag  :  da " & ruoteuniteminimo & " a " & ruoteunitemassimo & " ;  righe " & contarighesviluppate & " ;  tt : " & TempoTrascorso & " sg " & righesviluppate
      Scrivi
      Scrivi "righe occupate nella matrice di dimensione ( " & UBound(matriceordinabilemultidimensionale) & " ) : " & righeoccupatenellamatrice
      Scrivi "numero dei primi risultati visualizzati in output in base all'ordinamento scelto " & quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice
      Scrivi
      Scrivi "report sui valori estremi rilevati"
      Scrivi
      Scrivi "rit max generale " & ritardomassimorilevato
      Scrivi "formazione : " & stringarisultatoxritardomassimorilevato
      Scrivi "n. casi multipli di rit max generale " & contacasimultiplixrit
      Scrivi "rs max generale " & ritardomassimostoricorilevato
      Scrivi "formazione : " & stringarisultatoxritardostoricomassimorilevato
      Scrivi "n. casi multipli di rit sto max generale " & Int(contacasimultiplixrsmaxgenerale) - 1
      Scrivi "ra min generale " & ritardominimorilevato
      Scrivi "formazione : " & stringarisultatoxritardominimorilevato
      Scrivi "n. casi multipli di rit min generale " & Int(contacasimultiplixritmin) - 1
      Scrivi "rs min generale " & ritardominimostoricorilevato
      Scrivi "formazione : " & stringarisultatoxritardominimostoricorilevato
      Scrivi "n. casi multipli di rit sto min generale " & Int(contacasimultiplixrsmingenerale) - 1
      Scrivi "fq max generale " & freqmassimarilevata
      Scrivi "formazione : " & stringarisultatoxfreqmassimarilevata
      Scrivi "n. casi multipli di fq max generale " & Int(contacasimultiplixfqmax) - 1
      Scrivi "fq min generale " & freqminimarilevata
      Scrivi "formazione : " & stringarisultatoxfreqminimarilevata
      Scrivi "n. casi multipli di fq min generale " & Int(contacasimultiplixfqmin) - 1
      Scrivi "incmax max generale " & Incmaxmassimorilevato
      Scrivi "formazione : " & stringarisultatoxincmaxmassimorilevato
      Scrivi "n. casi multipli di incmax max generale " & Int(contacasimultiplixincmaxmax) - 1
      Scrivi "incmax min generale " & Incmaxminimorilevato
      Scrivi "formazione : " & stringarisultatoxincmaxminimorilevato
      Scrivi "n. casi multipli di incmax min generale " & Int(contacasimultiplixincmaxmin) - 1
      Scrivi "diff max generale " & diffmassimarilevata
      Scrivi "formazione : " & stringarisultatoxdiffmassimarilevata
      Scrivi "n. casi multipli di diff  max generale " & Int(contacasimultiplixdiffmax) - 1
      Scrivi "diff min generale " & diffminimarilevata
      Scrivi "formazione : " & stringarisultatoxdiffminimarilevata
      Scrivi "n. casi multipli di diff min generale " & Int(contacasimultiplixdiffmin) - 1
      Scrivi
      Scrivi "rs max relativi ad ogni gruppo di ruote unite generato " & stringarsmaxdiognigrupporuoteunite
      Scrivi
      Scrivi "Tt : " & TempoTrascorso
   Else
      MsgBox "hai scelto analisi da file"
      MsgBox "scegli file da analizzare"
      Dim filedaelaborare
      filedaelaborare = ScegliFile(".\",".txt","filetxtdasviluppareeanalizzare.txt")
      MsgBox "hai scelto di analizzare il seguente file: " & filedaelaborare
      MsgBox "scegli classe da sviluppare"
      classe = CInt(InputBox("classe",,2))
      filerisultato = ".\gruppipossibilidiruoteunite.txt"
      If FileEsistente(filerisultato) Then
         Call EliminaFile(filerisultato)
      End If
      For numeroruoteunite = ruoteuniteminimo To ruoteunitemassimo
         coltotruoteunite = InitSviluppoIntegrale(aruote,numeroruoteunite)
         If coltotruoteunite > 0 Then
            Do While GetCombSviluppo(acolruoteunite) = True
               StringaRuoteUnite = StringaNumeri(acolruoteunite)
               contarighe = contarighe + 1
               ScriviFile filerisultato,StringaRuoteUnite
               If ScriptInterrotto Then Exit Do
            Loop
         End If
         CloseFileHandle(filerisultato)
         Dim arighefiledaelaborare
         Dim crfde
         Dim vettorestringhenumerifile
         Dim vettoreinterinumerifile
         Call LeggiRigheFileDiTesto(filedaelaborare,arighefiledaelaborare)
         For crfde = 0 To UBound(arighefiledaelaborare)
            'Scrivi "|" & arighefiledaelaborare(crfde) & "|"
            Call SplitByChar(arighefiledaelaborare(crfde),".",vettorestringhenumerifile)
            Dim cevns
            ReDim vettoreinterinumerifile(UBound(vettorestringhenumerifile))
            For cevns = 0 To UBound(vettorestringhenumerifile)
               vettoreinterinumerifile(cevns) = Int(vettorestringhenumerifile(cevns))
               Dim cvi
            Next ' x vettore stringhe numeri   file
           ' Scrivi
            Call LeggiRigheFileDiTesto(filerisultato,arighefile)
            ReDim arigaruote(numeroruoteunite)
            For crr = 0 To UBound(arighefile)
               'righesviluppate = InitSviluppoIntegrale(vettoreinterinumerifile,classe)
               righesviluppate = csvil.InitSviluppo(vettoreinterinumerifile,classe)
               Call SplitByChar("." & arighefile(crr) & ".",".",vettoreruoteunite)
               ReDim arigaruote(UBound(vettoreruoteunite))
               For cvru = 0 To UBound(vettoreruoteunite)
                  If righesviluppate > 0 Then
                     ' Do While GetCombSviluppo(rigasviluppata) = True
                     Do While cSvil.GetComb(rigasviluppata)
                        contarighesviluppate = contarighesviluppate + 1
                        Call StatisticaFormazioneTurbo(rigasviluppata,vettoreruoteunite,sorte,rit,ritmax,Incmax,freq,Inizio,fine)
                        Messaggio "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " crm " & contatorexmatrice
                        diff = ritmax - rit
                        matriceordinabilemultidimensionale(contatorexmatrice,0) = StringaNumeri(rigasviluppata)
                        matriceordinabilemultidimensionale(contatorexmatrice,1) = StringaNumeri(vettoreruoteunite)
                        matriceordinabilemultidimensionale(contatorexmatrice,2) = NomeSorte(sorte)
                        matriceordinabilemultidimensionale(contatorexmatrice,3) = Int(rit)
                        matriceordinabilemultidimensionale(contatorexmatrice,4) = Int(ritmax)
                        matriceordinabilemultidimensionale(contatorexmatrice,5) = Int(Incmax)
                        matriceordinabilemultidimensionale(contatorexmatrice,6) = Int(freq)
                        contatorexmatrice = contatorexmatrice + 1
                        righeoccupatenellamatrice = righeoccupatenellamatrice + 1
                        If rit = ritardomassimorilevato Then
                           contacasimultiplixrit = contacasimultiplixrit + 1
                        End If
                        If rit > ritardomassimorilevato Then
                           ritardomassimorilevato = rit
                           stringarisultatoxritardomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                           contacasimultiplixrit = 0
                        End If
                        If ritmax = ritardomassimostoricorilevato Then
                           contacasimultiplixrsmaxgenerale = contacasimultiplixrsmaxgenerale + 1
                        End If
                        If ritmax > ritardomassimostoricorilevato Then
                           ritardomassimostoricorilevato = ritmax
                           stringarisultatoxritardostoricomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                           contacasimultiplixrsmaxgenerale = 0
                        End If
                        If ritmax > ritardomassimoxgrupporuoteunite Then
                           ritardomassimoxgrupporuoteunite = ritmax
                           'stringarisultatoxritardostoricomassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                        End If
                        If rit = ritardominimorilevato Then
                           contacasimultiplixritmin = contacasimultiplixritmin + 1
                        End If
                        If rit < ritardominimorilevato Then
                           ritardominimorilevato = rit
                           stringarisultatoxritardominimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                           contacasimultiplixritmin = 0
                        End If
                        If ritmax = ritardominimostoricorilevato Then
                           contacasimultiplixrsmingenerale = contacasimultiplixrsmingenerale + 1
                        End If
                        If ritmax < ritardominimostoricorilevato Then
                           ritardominimostoricorilevato = ritmax
                           stringarisultatoxritardominimostoricorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                           contacasimultiplixrsmingenerale = 0
                        End If
                        If freq = freqmassimarilevata Then
                           contacasimultiplixfqmax = contacasimultiplixfqmax + 1
                        End If
                        If freq > freqmassimarilevata Then
                           freqmassimarilevata = freq
                           stringarisultatoxfreqmassimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                           contacasimultiplixfqmax = 0
                        End If
                        If freq = freqminimarilevata Then
                           contacasimultiplixfqmin = contacasimultiplixfqmin + 1
                        End If
                        If freq < freqminimarilevata Then
                           freqminimarilevata = freq
                           stringarisultatoxfreqminimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                           contacasimultiplixfqmin = 0
                        End If
                        If Incmax = Incmaxmassimorilevato Then
                           contacasimultiplixincmaxmax = contacasimultiplixincmaxmax + 1
                        End If
                        If Incmax > Incmaxmassimorilevato Then
                           Incmaxmassimorilevato = Incmax
                           stringarisultatoxincmaxmassimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                           contacasimultiplixincmaxmax = 0
                        End If
                        If Incmax = Incmaxminimorilevato Then
                           contacasimultiplixincmaxmin = contacasimultiplixincmaxmin + 1
                        End If
                        If Incmax < Incmaxminimorilevato Then
                           Incmaxminimorilevato = Incmax
                           stringarisultatoxincmaxminimorilevato = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                           contacasimultiplixincmaxmin = 0
                        End If
                        If diff = diffmassimarilevata Then
                           contacasimultiplixdiffmax = contacasimultiplixdiffmax + 1
                        End If
                        If diff > diffmassimarilevata Then
                           diffmassimarilevata = diff
                           stringarisultatoxdiffmassimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                           contacasimultiplixdiffmax = 0
                        End If
                        If diff = diffminimarilevata Then
                           contacasimultiplixdiffmin = contacasimultiplixdiffmin + 1
                        End If
                        If diff < diffminimarilevata Then
                           diffminimarilevata = diff
                           stringarisultatoxdiffminimarilevata = "n " & StringaNumeri(rigasviluppata) & " r " & StringaNumeri(vettoreruoteunite) & " s " & NomeSorte(sorte) & " rit " & rit & " ritmax " & ritmax & " incmax " & Incmax & " freq " & freq & " diff " & diff & " contatore riga matrice " & contatorexmatrice
                           contacasimultiplixdiffmin = 0
                        End If
                        If ScriptInterrotto Then Exit Do
                     Loop
                  End If
                  If ritardomassimoxgrupporuoteunite <> 0 And ritardomassimoxgrupporuoteunite <> "0" Then
                     stringarsmaxdiognigrupporuoteunite = stringarsmaxdiognigrupporuoteunite & " | " & StringaNumeri(vettoreruoteunite) & " rsgru " & ritardomassimoxgrupporuoteunite & " . "
                  End If
                  ritardomassimoxgrupporuoteunite = 0
                  If ScriptInterrotto Then Exit For
               Next ' cvru
               If ScriptInterrotto Then Exit For
               Messaggio "thread elaborazionale n. " & contatorexmatrice
            Next
            If ScriptInterrotto Then Exit For
            Call AvanzamentoElab(1,ruoteunitemassimo,crr)
         Next ' x vettore righe file txt da elaborare
         If ScriptInterrotto Then Exit For
      Next 'x numero ruote unite...
      Valorediordinamentovoluto = CInt(InputBox("valore di ordinamento voluto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) ",,3))
      Valorecriteriodiordinamento = CInt(InputBox("valore criterio di ordinamento voluto: crescente (1) decrescente (-1) ",,- 1))
      quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice = CInt(InputBox("quanti risultati vuoi visualizzare rispetto quelli presenti in matrice e pari a " & righeoccupatenellamatrice & " ?",,100))
      'Scrivi
      '      Scrivi "visualizzazione del contenuto della matrice non ordinata..."
      '      Scrivi
      '      For contatorexmatrice = 0 To  quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice  'righeoccupatenellamatrice 'UBound(matriceordinabilemultidimensionale)
      '         Messaggio "sto elaborando il record di matrice n. " & contatorexmatrice
      '         Scrivi " n " & matriceordinabilemultidimensionale(contatorexmatrice,0) & " r " & matriceordinabilemultidimensionale(contatorexmatrice,1) & " s " & matriceordinabilemultidimensionale(contatorexmatrice,2) & " rit " & matriceordinabilemultidimensionale(contatorexmatrice,3) & " ritmax " & matriceordinabilemultidimensionale(contatorexmatrice,4) & " incmax " & matriceordinabilemultidimensionale(contatorexmatrice,5) & " freq " & matriceordinabilemultidimensionale(contatorexmatrice,6) & " diff " & diff & " contatore riga matrice " & contatorexmatrice
      '      Next
      'Scrivi
      Scrivi "visualizzazione del contenuto della matrice ordinata..."
      Scrivi
      MassimoFreq = freqmassimarilevata 'EstrazioneFin
      MinimoFreq = freqminimarilevata '0
      MassimoRITMAX = ritardomassimostoricorilevato 'EstrazioneFin
      MinimoRITMAX = ritardominimostoricorilevato '0
      MassimoINCMAX = Incmaxmassimorilevato 'EstrazioneFin
      MinimoINCMAX = Incmaxminimorilevato '0
      MassimoRIT = ritardomassimorilevato 'EstrazioneFin
      MinimoRIT = ritardominimorilevato '0
      Call OrdinaMatrice(matriceordinabilemultidimensionale,Valorecriteriodiordinamento,Valorediordinamentovoluto)
      For k = 1 To quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice 'righeoccupatenellamatrice
         Scrivi matriceordinabilemultidimensionale(k,0) & " - " & matriceordinabilemultidimensionale(k,1) & " - " & matriceordinabilemultidimensionale(k,2) & " - " & matriceordinabilemultidimensionale(k,3) & " - " & matriceordinabilemultidimensionale(k,4) & " - " & matriceordinabilemultidimensionale(k,5) & " - " & matriceordinabilemultidimensionale(k,6)
      Next
      Scrivi
      Scrivi
      Scrivi "Elaborazione terminata con successo!"
      Scrivi
      Scrivi "range temporale analizzato " & GetInfoEstrazione(EstrazioneIni) & " - " & GetInfoEstrazione(EstrazioneFin)
      Scrivi "n. di estrazioni totali analizzate " &(EstrazioneFin - EstrazioneIni) + 1
      Scrivi "Input numeri scelti da file"
      Scrivi "file scelto per l'elaborazione " & filedaelaborare
      Scrivi "numero complessivo di ruote a girare " & UBound(aruote)
      Scrivi "ruote analizzate " & StringaRuote(aruote)
      Scrivi "ruote unite minimo " & ruoteuniteminimo
      Scrivi "ruote unite massimo " & ruoteunitemassimo
      Scrivi "classe di sviluppo " & classe
      Scrivi "sorte di ricerca " & sorte
      Scrivi "parametro di ordinamento scelto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) " & Valorediordinamentovoluto
      Scrivi "criterio di ordinamento impostato crescente (1) decrescente (-1)  " & Valorecriteriodiordinamento
      Scrivi "righe (x mix di ruote) sviluppate " & contarighe
      Scrivi "righe totali di sviluppo generate " & contarighesviluppate
      Scrivi
      'Scrivi "righe occupate nella matrice di dimensione ( " & UBound(matriceordinabilemultidimensionale) & " ) : " & righeoccupatenellamatrice
      Scrivi "numero dei primi risultati visualizzati in output in base all'ordinamento scelto " & quantirisultativuoivisualizzarerispettolerigheoccupateinmatrice
      Scrivi
      Scrivi "report sui valori estremi rilevati"
      Scrivi
      Scrivi "rit max generale " & ritardomassimorilevato
      Scrivi "formazione : " & stringarisultatoxritardomassimorilevato
      Scrivi "n. casi multipli di rit max generale " & contacasimultiplixrit
      Scrivi "rs max generale " & ritardomassimostoricorilevato
      Scrivi "formazione : " & stringarisultatoxritardostoricomassimorilevato
      Scrivi "n. casi multipli di rit sto max generale " & Int(contacasimultiplixrsmaxgenerale)' - 1
      Scrivi "ra min generale " & ritardominimorilevato
      Scrivi "formazione : " & stringarisultatoxritardominimorilevato
      Scrivi "n. casi multipli di rit min generale " & Int(contacasimultiplixritmin) '- 1
      Scrivi "rs min generale " & ritardominimostoricorilevato
      Scrivi "formazione : " & stringarisultatoxritardominimostoricorilevato
      Scrivi "n. casi multipli di rit sto min generale " & Int(contacasimultiplixrsmingenerale) '- 1
      Scrivi "fq max generale " & freqmassimarilevata
      Scrivi "formazione : " & stringarisultatoxfreqmassimarilevata
      Scrivi "n. casi multipli di fq max generale " & Int(contacasimultiplixfqmax)' - 1
      Scrivi "fq min generale " & freqminimarilevata
      Scrivi "formazione : " & stringarisultatoxfreqminimarilevata
      Scrivi "n. casi multipli di fq min generale " & Int(contacasimultiplixfqmin) '- 1
      Scrivi "incmax max generale " & Incmaxmassimorilevato
      Scrivi "formazione : " & stringarisultatoxincmaxmassimorilevato
      Scrivi "n. casi multipli di incmax max generale " & Int(contacasimultiplixincmaxmax) '- 1
      Scrivi "incmax min generale " & Incmaxminimorilevato
      Scrivi "formazione : " & stringarisultatoxincmaxminimorilevato
      Scrivi "n. casi multipli di incmax min generale " & Int(contacasimultiplixincmaxmin) '- 1
      Scrivi "diff max generale " & diffmassimarilevata
      Scrivi "formazione : " & stringarisultatoxdiffmassimarilevata
      Scrivi "n. casi multipli di diff  max generale " & Int(contacasimultiplixdiffmax)' - 1
      Scrivi "diff min generale " & diffminimarilevata
      Scrivi "formazione : " & stringarisultatoxdiffminimarilevata
      Scrivi "n. casi multipli di diff min generale " & Int(contacasimultiplixdiffmin) '- 1
      Scrivi
      Scrivi "rs max relativi ad ogni gruppo di ruote unite generato " & stringarsmaxdiognigrupporuoteunite
      Scrivi
      Scrivi "Tt : " & TempoTrascorso
   End If
End Sub






Buone analisi..., good luck... e Buona Pasqua a tutti! 👋👾🤖🥚🍀🧑‍🍳🙂
 
Ultima modifica:
Tom ha scritto (in un altro thread):
Non smorzi nulla anzi me lo amplificheresti.. caro happy 🙂 se non fosse che addirittura ricerco situazioni ancora più teoricamente stabili rispetto a range di estrazioni analizzati più contenuti ovvero quelle con RS <=1 . Il lavorone... consiste nel cercare dopo averle trovate un modo di ridurle a classe giocabile <= 10 mantenendo possibilmente lo stesso arco di attesa del gruppo base originante. 👋🙂

Ciao Tom :) , ti rispondo qui in pasticceria, per evitare di dare fastidio altrove.
Caro Tom, lungi da me l’idea di smorzare il tuo entusiasmo, era solo un modo di dire!
Come dice il detto : “gente allegra il ciel l’aiuta”,(y) sarei pronto a scommettere che se sei fortunato non sarai abbandonato dalla fortuna nemmeno se ti giochi i numeri sulle targhe delle macchine prese a caso.
Gastone, cugino di Paperino, docet.
Da quel che dici mi sembra di capire che prima cerchi formazioni numeriche che hanno un determinato trend in un arco di estrazioni con RS <=1 e poi cerchi di ridurle a classe giocabile <= 10 nei tempi della formazione.
Scusami, passami la battuta, è quello che fanno tutti, ridurre i 90 numeri a quelli giocati in schedina.
E poi?:unsure:😂
Cè chi vince e c’è chi perde, anche avendo le stesse probabilità a parità di numeri e sorte giocati.
La chiamano: ............ fortuna!
Chi sa qual è il segreto della fortuna?
Certo è che la fortuna non è per tutti.
Come dire, molti i chiamati ma pochi gli eletti !

Tom ha scritto:
come ha scritto anche happy..., significa centrare in qualche maniera in modo costante... una delle 1.5484550180347E+23 formazioni componibili in classe 28 by 90. Quindi non lo è affatto

28 numeri scelti a caso per ambo hanno probabiità di sortita di circa il 50% in un numero di prove congruo.
Scegliendo con i tuo sistema che percentuale di successo hai?
Ovviamente è tanto per dire, per scambiare piacevolmente qualche chiacchiera.
Un grande saluto circolare.
:giggle:
 
Ultima modifica:
Tom ha scritto (in un altro thread):
Non smorzi nulla anzi me lo amplificheresti.. caro happy 🙂 se non fosse che addirittura ricerco situazioni ancora più teoricamente stabili rispetto a range di estrazioni analizzati più contenuti ovvero quelle con RS <=1 . Il lavorone... consiste nel cercare dopo averle trovate un modo di ridurle a classe giocabile <= 10 mantenendo possibilmente lo stesso arco di attesa del gruppo base originante. 👋🙂

Ciao Tom :) , ti rispondo qui in pasticceria, per evitare di dare fastidio altrove.
Caro Tom, lungi da me l’idea di smorzare il tuo entusiasmo, era solo un modo di dire!
Come dice il detto : “gente allegra il ciel l’aiuta”,(y) sarei pronto a scommettere che se sei fortunato non sarai abbandonato dalla fortuna nemmeno se ti giochi i numeri sulle targhe delle macchine prese a caso.
Gastone, cugino di Paperino, docet.
Da quel che dici mi sembra di capire che prima cerchi formazioni numeriche che hanno un determinato trend in un arco di estrazioni con RS <=1 e poi cerchi di ridurle a classe giocabile <= 10 nei tempi della formazione.
Scusami, passami la battuta, è quello che fanno tutti, ridurre i 90 numeri a quelli giocati in schedina.
E poi?:unsure:😂
Cè chi vince e c’è chi perde, anche avendo le stesse probabilità a parità di numeri e sorte giocati.
La chiamano: ............ fortuna!
Chi sa qual è il segreto della fortuna?
Certo è che la fortuna non è per tutti.
Come dire, molti i chiamati ma pochi gli eletti !

Tom ha scritto:
come ha scritto anche happy..., significa centrare in qualche maniera in modo costante... una delle 1.5484550180347E+23 formazioni componibili in classe 28 by 90. Quindi non lo è affatto

28 numeri scelti a caso per ambo hanno probabiità di sortita di circa il 50% in un numero di prove congruo.
Scegliendo con i tuo sistema che percentuale di successo hai?
Ovviamente è tanto per dire, per scambiare piacevolmente qualche chiacchiera.
Un grande saluto circolare.
:giggle:

Ciao happy, un big saluto circolare.. anche a te e w Renzo Arbore forever 💪(y) :D Per quanto riguarda la questione fortuna.., Gastoni... e targhe... sono d'accordissimo con te sul fatto che chi è nato sotto una buona stella sia leggermente o molto + avvantaggiato nell'ottenere ciò che desidera.. sia al gioco che in ogni ambito della vita però sono anche convinto che anche la tecnica.. ovunque la si applichi... con costanza fiducia fede e focus possa portare anche a risultati strabilianti. Ecco perchè mi diverto ad applicarla anche al gioco del lotto ormai da una vita... Tornando alla tua domanda... che mi hai fatto riguardo cosa intenda in particolare x gruppo teoricamente + stabile per esito anche a colpo ti risponderò con un'altra domanda invitandoti,se vuoi, ad approfondire il + possibile la cosa... Preferiresti tentare l'A su TT a caso su 90 numeri base e 4005 coppie o su 28 coppie basandoti su una relativa base di soli 8 numeri con un rs di appena 6 estrazioni per A su TT e NZ dalla es 8117 (all venus time) ? Io in questo esempio fittizio...per così dire "extreme" sceglierei ad occhi chiusi... la seconda... ma i gusti... son gusti... 👋 :)
 
Ultima modifica:
buona serata lotto tom75
vorrei avere uno script,
dove si prende all ultima estrazione mensile
il 5 estratto
, su tutte le ruote, e si faccia la sua figura
da mettere in gioco sulla 1--3--posizione
per capire quale ruota e migliore x portare avanti
questa tipologia di gioco
io ho questa su napoli, ma vorrei
anche le altre ruote , grazie se vorrai aiutarmi
ti posto gli ultimi 2 anni di napoli
e vorrei un tuo giudizio sul metodo, e se ne vale la pena,


30/01/21
napoli​
84
giocare-- figura​
>​
3
>​
esce​
75
>​
3 colpo​
1 posizione
27/02/21
napoli​
50
giocare-- figura​
>​
5
>​
esce​
50
>​
2 colpo​
3 posizione
30/03/21
napoli​
27
giocare-- figura​
>​
9
>​
esce​
27
>​
1 colpo​
3 posizione
29/04/21
napoli​
18
giocare-- figura​
>​
9
>​
esce​
45
>​
4 colpo​
1 posizione
29/05/21
napoli​
65
giocare-- figura​
>​
2
>​
esce​
38
>​
3 colpo​
1 posizione
29/06/21
napoli​
76
giocare-- figura​
>​
4
>​
esce​
22
>​
4 colpo​
3 posizione
31/07/21
napoli​
17
giocare-- figura​
>​
8
>​
esce​
71
>​
1 colpo​
3 posizione
31/08/21
napoli​
77
giocare-- figura​
>​
5
>​
esce​
50
>​
1 colpo​
1 posizione
30/09/21
napoli​
74
giocare-- figura​
>​
2
>​
esce​
20
>​
2 colpo​
1 posizione
30/10/21
napoli​
36
giocare-- figura​
>​
9
>​
esce​
36
>​
2 colpo​
1 posizione
30/11/21
napoli​
1
giocare-- figura​
>​
1
>​
esce​
28
>​
3 colpo​
1 posizione
30/12/21
napoli​
32
giocare-- figura​
>​
5
>​
esce​
23
>​
1 colpo​
3 posizione
29/01/22
napoli​
87
giocare-- figura​
>​
6
>​
esce​
15
>​
4 colpo​
3 posizione
26/02/22
napoli​
14
giocare-- figura​
>​
5
>​
esce​
5
>​
1 colpo​
1 posizione
31/03/22
napoli​
28
giocare-- figura​
>​
1
>​
esce​
64
>​
1 colpo​
3 posizione
30/04/22
napoli​
66
giocare-- figura​
>​
3
>​
esce​
75
>​
3 colpo​
1 posizione
31/05/22
napoli​
61
giocare-- figura​
>​
7
>​
esce​
79
>​
2 colpo​
1 posizione
30/06/22
napoli​
26
giocare-- figura​
>​
8
>​
esce​
89
>​
7 colpo​
3 posizione
30/07/22
napoli​
76
giocare-- figura​
>​
4
>​
esce​
58
>​
1 colpo​
1 posizione
30/08/22
napoli​
67
giocare-- figura​
>​
4
>​
esce​
49
>​
11 colpo​
3 posizione
29/09/22
napoli​
80
giocare-- figura​
>​
8
>​
esce​
62
>​
3 colpo​
3 posizione
29/10/22
napoli​
66
giocare-- figura​
>​
3
>​
esce​
3
>​
5 colpo​
3 posizione
29/11/22
napoli​
71
giocare-- figura​
>​
8
>​
esce​
8
>​
8 colpo​
1 posizione
31/12/22
napoli​
58
giocare-- figura​
>​
4
>​
esce​
67
>​
1 colpo​
3 posizione
31/01/23
napoli​
43
giocare-- figura​
>​
7
>​
esce​
16
>​
3 colpo​
1 posizione
28/02/23
napoli​
89
giocare-- figura​
>​
8
>​
esce​
8
>​
4 colpo​
1 posizione
30/03/23
napoli​
42
giocare-- figura​
>​
6
>​
esce​
>​
in gioco
 
buona serata lotto tom75
vorrei avere uno script,
dove si prende all ultima estrazione mensile
il 5 estratto
, su tutte le ruote, e si faccia la sua figura
da mettere in gioco sulla 1--3--posizione
per capire quale ruota e migliore x portare avanti
questa tipologia di gioco
io ho questa su napoli, ma vorrei
anche le altre ruote , grazie se vorrai aiutarmi
ti posto gli ultimi 2 anni di napoli
e vorrei un tuo giudizio sul metodo, e se ne vale la pena,


30/01/21
napoli​
84
giocare-- figura​
>​
3
>​
esce​
75
>​
3 colpo​
1 posizione
27/02/21
napoli​
50
giocare-- figura​
>​
5
>​
esce​
50
>​
2 colpo​
3 posizione
30/03/21
napoli​
27
giocare-- figura​
>​
9
>​
esce​
27
>​
1 colpo​
3 posizione
29/04/21
napoli​
18
giocare-- figura​
>​
9
>​
esce​
45
>​
4 colpo​
1 posizione
29/05/21
napoli​
65
giocare-- figura​
>​
2
>​
esce​
38
>​
3 colpo​
1 posizione
29/06/21
napoli​
76
giocare-- figura​
>​
4
>​
esce​
22
>​
4 colpo​
3 posizione
31/07/21
napoli​
17
giocare-- figura​
>​
8
>​
esce​
71
>​
1 colpo​
3 posizione
31/08/21
napoli​
77
giocare-- figura​
>​
5
>​
esce​
50
>​
1 colpo​
1 posizione
30/09/21
napoli​
74
giocare-- figura​
>​
2
>​
esce​
20
>​
2 colpo​
1 posizione
30/10/21
napoli​
36
giocare-- figura​
>​
9
>​
esce​
36
>​
2 colpo​
1 posizione
30/11/21
napoli​
1
giocare-- figura​
>​
1
>​
esce​
28
>​
3 colpo​
1 posizione
30/12/21
napoli​
32
giocare-- figura​
>​
5
>​
esce​
23
>​
1 colpo​
3 posizione
29/01/22
napoli​
87
giocare-- figura​
>​
6
>​
esce​
15
>​
4 colpo​
3 posizione
26/02/22
napoli​
14
giocare-- figura​
>​
5
>​
esce​
5
>​
1 colpo​
1 posizione
31/03/22
napoli​
28
giocare-- figura​
>​
1
>​
esce​
64
>​
1 colpo​
3 posizione
30/04/22
napoli​
66
giocare-- figura​
>​
3
>​
esce​
75
>​
3 colpo​
1 posizione
31/05/22
napoli​
61
giocare-- figura​
>​
7
>​
esce​
79
>​
2 colpo​
1 posizione
30/06/22
napoli​
26
giocare-- figura​
>​
8
>​
esce​
89
>​
7 colpo​
3 posizione
30/07/22
napoli​
76
giocare-- figura​
>​
4
>​
esce​
58
>​
1 colpo​
1 posizione
30/08/22
napoli​
67
giocare-- figura​
>​
4
>​
esce​
49
>​
11 colpo​
3 posizione
29/09/22
napoli​
80
giocare-- figura​
>​
8
>​
esce​
62
>​
3 colpo​
3 posizione
29/10/22
napoli​
66
giocare-- figura​
>​
3
>​
esce​
3
>​
5 colpo​
3 posizione
29/11/22
napoli​
71
giocare-- figura​
>​
8
>​
esce​
8
>​
8 colpo​
1 posizione
31/12/22
napoli​
58
giocare-- figura​
>​
4
>​
esce​
67
>​
1 colpo​
3 posizione
31/01/23
napoli​
43
giocare-- figura​
>​
7
>​
esce​
16
>​
3 colpo​
1 posizione
28/02/23
napoli​
89
giocare-- figura​
>​
8
>​
esce​
8
>​
4 colpo​
1 posizione
30/03/23
napoli​
42
giocare-- figura​
>​
6
>​
esce​
>​
in gioco

Ciao salva 57 ti ringrazio per aver richiesto anche un mio parere, ma per la realizzazione di uno script simile non posso aiutarti. Spero per te che te lo possano fare altri molto + bravi tipo mike58 tanto per fare un esempio... Per quanto riguarda la metodologia così di primo acchito non è che mi stuzzica poi così tanto se non altro per i 9 elementi da porre in gioco per sperare in massimo 11 colpi di acciuffarne almeno uno in posizione.. Anche per questo motivo presumo che non mi arriverebbe energia cerebrale necessaria per potertelo realizzare.
 
Ti ringrazio lo stesso Tom
Lo so che 9numeri son tanti
Ma scremando qualcosa
Si può fare delle buone vincite
Anche perché i colpi di gioco non sono molte
Ti posso aggiungere che a volte
Sono usciti in seconda posizione,
ma io avendo di preferenza scelto 1. 3 posizione
Quello che volevo sapere ioe se c'è qualche ruota migliore
Di questa di Napoli
 
Buon pomeriggio. Tempo fa avevo recuperato uno script qui nel forum per l'elaborazione di un cruciverba ma con Spaziometria 1.6.41 mi da errore in NumeroCasuale. Ma credo che ce ne sono anche altri comandi che evidentemente non funzionano con Spaziometria.
Mi potreste dare una soluzione ?
grazie infinite

Codice:
Option Explicit
 

Dim aNumUsati
Dim aColonne
Dim aNumScelti

Sub Main
   Dim nLato,nScelti
   Const nMinLato = 2
   Const nMaxLato = 12
   ReDim aRuote(1)
   ReDim aPoste(2)
   Dim Sorte,Colpi
   Dim idEstr
   Dim RuotaDiRil
 
   RuotaDiRil = BA_
   aPoste(2) = 1
   aRuote(1) = RuotaDiRil
   Sorte = 2
   Colpi = 1
   nLato = 5
 
 
   nLato = Int(InputBox("Inserire la quantita di numeri per il lato del cruciverba","Lato Cruciverba",nLato))
   If nLato < nMinLato Or nLato > nMaxLato Then
      MsgBox "Il lato dve essere compreso tra " & nMinLato & " e " & nMaxLato
      Exit Sub
   End If
 
 
   ReDim aDiagonali(nLato,nLato)
   Call CalcolaDiagonali(aDiagonali,nLato)
 
   For idEstr = EstrazioneIni To EstrazioneFin Step Colpi
      Call Messaggio("Estrazione " & idEstr)
      ReDim aNumScelti(0)
      Call AlimentaNumScelti(aNumScelti,idEstr,RuotaDiRil,nLato)
    
      Call GiocaCruciverba(aNumScelti,nLato,aDiagonali,aRuote,aPoste,Colpi,Sorte,idEstr)
    
      If ScriptInterrotto Then Exit For
    
   Next
 
   Call ScriviResoconto
 
End Sub
Sub AlimentaNumScelti(aNumScelti,idEstr,RuotaDiRil,nLato)

   Dim k,e,n,t
   Dim nNumDaTrov
 
   ReDim aB(90)
   t = 0
   nNumDaTrov = nLato * nLato
    
   For k = idEstr To 1 Step - 1
      For e = 1 To 5
         n = Vert(Estratto(k,RuotaDiRil,e))
         If aB(n) = False Then
            aB(n) = True
            t = t + 1
            If t >= nNumDaTrov Then Exit For
         End If
       
      Next
      If t >= nNumDaTrov Then Exit For
   Next
 
   If t >= nNumDaTrov Then
      ReDim aNumScelti(t)
      t = 0
      For k = 1 To 90
         If aB(k) Then
            t = t + 1
            aNumScelti(t) = k
         End If
      Next
 
   End If
 
End Sub
Sub GiocaCruciverba(aNumScelti,nLato,aDiagonali,aRuote,aPoste,Colpi,Sorte,idEstr)
 
   Dim r,c,k
   Dim n
   Dim s
   Dim nTentativi
   Dim bTrovato
   Dim nScelti
   Dim bUnaPresenzaSola
 
   Const nTentativiMax = 1000
   bUnaPresenzaSola = False
 
 
   nScelti = UBound(aNumScelti)
   If nScelti >= nLato * nLato Then
      bUnaPresenzaSola = True
   End If
   Call DoEventsEx
 
   aNumUsati = ArrayNumeriToBool(aNumScelti)
 
   Do While bTrovato = False
      ReDim aNumeri(nLato,nLato)
      For r = 1 To nLato
         For c = 1 To nLato
            n = ScegliNumero(r,c,aNumeri,nLato,aDiagonali,bUnaPresenzaSola)
            If n = 0 Then Exit For
            aNumeri(r,c) = n
         Next
         If n = 0 Then Exit For
      Next
      If colonneDuplicate(aNumeri,nLato,aDiagonali) = False Then
         bTrovato = True
      Else
         nTentativi = nTentativi + 1
         If nTentativi > nTentativiMax Then Exit Do
      End If
      If ScriptInterrotto Then Exit Do
      Call Messaggio("Cruciverba Generati " & nTentativi)
      DoEventsEx
   Loop
   For r = 1 To nLato
      ReDim aV(nLato)
      For c = 1 To nLato
         aV(c) = Format2(Int(aNumeri(r,c)))
      Next
      If r = 1 Then
         Call InitTabella(aV,,,6)
      Else
         Call AddRigaTabella(aV,,,6)
      End If
   Next
   If nTentativi > nTentativiMax Or colonneDuplicate(aNumeri,nLato,aDiagonali) Then
      Call Scrivi("ATTENZIONE CRUCIVERBA NON VALIDO",True,,,vbRed)
 
   Else
      Call CreaTabella
    
   End If
 
   For k = 1 To UBound(aColonne)
      ReDim aN(0)
      Call SplitByChar("0." & aColonne(k),".",aN)
      Call ImpostaGiocata(k,aN,aRuote,aPoste,Colpi,Sorte)
   Next
   Call Gioca(idEstr)



 
End Sub


Sub CalcolaDiagonali(aDiagonali,nLato)
   Dim r,c
   For r = 1 To nLato
      c = c + 1
      aDiagonali(r,c) = True
   Next
   c = nLato + 1
   For r = 1 To nLato
      c = c - 1
      If aDiagonali(r,c) Then
         aDiagonali(r,c) = 1
      Else
         aDiagonali(r,c) = True
      End If
   Next
End Sub
Function ScegliNumero(Riga,Colonna,aNumeri,nLato,aDiagonali,bUnaVoltaSola)
   Dim n
   Dim nPassaggi
   Do
      n = aNumScelti(NumeroCasuale(1,UBound(aNumScelti)))
      nPassaggi = nPassaggi + 1
      If nPassaggi > 1000 Then
         n = 0
         Exit Do
      End If
      If ScriptInterrotto Then
         n = 0
         Exit Do
      End If
      Call DoEventsEx
   Loop While NumeroNonValido(n,Riga,Colonna,aNumeri,nLato,aDiagonali,bUnaVoltaSola)
   ScegliNumero = n
End Function
Function NumeroNonValido(Numero,Riga,Colonna,aNumeri,nLato,aDiagonali,bUnaVoltaSola)
   Dim k,r,c
   If Numero = 0 Then
      NumeroNonValido = True
      Exit Function
   End If
   If bUnaVoltaSola Then
      For r = 1 To nLato
         For c = 1 To nLato
            If aNumeri(r,c) = Numero Then
               NumeroNonValido = True
               Exit Function
            End If
         Next
      Next
   End If
   If aNumUsati(Numero) = False Then
      NumeroNonValido = True
      Exit Function
   End If
   For k = 1 To nLato
      If aNumeri(Riga,k) = Numero Then
         NumeroNonValido = True
         Exit Function
      End If
   Next
   For k = 1 To nLato
      If aNumeri(k,Colonna) = Numero Then
         NumeroNonValido = True
         Exit Function
      End If
   Next
   If aDiagonali(Riga,Colonna) Then
      'If Riga = Colonna Or ((Riga = nLato/2)And (Colonna = nLato/2)) Then
      If Riga = Colonna Then
         c = Colonna + 1
         For r = Riga To 1 Step - 1
            c = c - 1
            If aNumeri(r,c) = Numero Then
               NumeroNonValido = True
               Exit Function
            End If
         Next
         c = Colonna - 1
         For r = Riga + 1 To nLato
            c = c + 1
            If aNumeri(r,c) = Numero Then
               NumeroNonValido = True
               Exit Function
            End If
         Next
      End If
      If Riga <> Colonna Or aDiagonali(Riga,Colonna) = 1 Then
         c = Colonna - 1
         For r = Riga To 1 Step - 1
            c = c + 1
            If aNumeri(r,c) = Numero Then
               NumeroNonValido = True
               Exit Function
            End If
         Next
         c = Colonna + 1
         For r = Riga + 1 To nLato
            c = c - 1
            If aNumeri(r,c) = Numero Then
               NumeroNonValido = True
               Exit Function
            End If
         Next
      End If
   End If
End Function
Function colonneDuplicate(aNumeri,nLato,aDiagonali)
   Dim nColonneTot
   Dim r,c,i
   Dim k,kk
   nColonneTot = nLato * 2 + 2
   ReDim aColonne(nColonneTot)
   For r = 1 To nLato
      ReDim aN(nLato)
      For c = 1 To nLato
         aN(c) = aNumeri(r,c)
      Next
      i = i + 1
      Call OrdinaMatrice(aN,1,1)
      aColonne(i) = StringaNumeri(aN,,True)
   Next
   For c = 1 To nLato
      ReDim aN(nLato)
      For r = 1 To nLato
         aN(r) = aNumeri(r,c)
      Next
      i = i + 1
      Call OrdinaMatrice(aN,1,1)
      aColonne(i) = StringaNumeri(aN,,True)
   Next
   ReDim aN(nLato)
   c = 0
   For r = 1 To nLato
      c = c + 1
      aN(r) = aNumeri(r,c)
   Next
   i = i + 1
   Call OrdinaMatrice(aN,1,1)
   aColonne(i) = StringaNumeri(aN,,True)
   ReDim aN(nLato)
   c = nLato + 1
   For r = 1 To nLato
      c = c - 1
      aN(r) = aNumeri(r,c)
   Next
   i = i + 1
   Call OrdinaMatrice(aN,1,1)
   aColonne(i) = StringaNumeri(aN,,True)
   For k = 1 To nColonneTot - 1
      For kk = k + 1 To nColonneTot
         If aColonne(k) = aColonne(kk) Then
            colonneDuplicate = True
            Exit Function
         End If
      Next
   Next
   For k = 1 To nColonneTot
      If Len(aColonne(k)) < nLato *2 +(nLato - 1) Then
         colonneDuplicate = True
         Exit Function
      End If
   Next
End Function
Sub SalvaFileColonne
 
   Dim sFile
   Dim k
 
   sFile = GetDirectoryTemp & "Cruciverba.csv"
   If EliminaFile(sFile) Then
      For k = 1 To UBound(aColonne)
         Call ScriviFile(sFile,Replace(aColonne(k),".",";"),,False)
      Next
 
   End If

   Call Scrivi("Le colonne da giocare sono state salvate nel file : " & sFile)
End Sub





[/ code]
Buona Pasqua e Pasquetta a Tutti

Ciao Tigre62

lo script corretto lo trovi all'indirizzo sottostante, al post#4, postato da Sorujoe

 
Riesumo questo mio thread per appuntarmi e condividere questo particolare schema memorandum di sviluppo per analisi multiruota con relativi valori aggiustamento del limite cint di 10.000 per elaborazioni su matrice dinamica ben superiori a questo numero di righe analizzate.

Riporterò, per ogni classe di gruppo base (cgb) testata, la sintesi parametrica dell'output del relativo benchmark test


con cgb 15 si generano in modo integrale

x classe 1 : 15 formazioni
x classe 2 : 105 formazioni
x classe 3 : 455 formazioni
x classe 4 : 1365 formazioni
x classe 5 : 3003 formazioni <<
x classe 6 : 5005 formazioni
x classe 7 : 6435 formazioni
x classe 8 : 6435 formazioni
x classe 9 : 5005 formazioni
x classe 10 : 3003 formazioni
x classe 11 : 1365 formazioni
x classe 12 : 455 formazioni
x classe 13 : 105 formazioni
x classe 14 : 15 formazioni
x classe 15 : 1 formazioni

x quanto riguarda i mix di ruote possibili...

con 11 elementi (ruote) si generano in modo integrale

x classe 1 : 11 formazioni <
x classe 2 : 55 formazioni <<
x classe 3 : 165 formazioni <<<
x classe 4 : 330 formazioni <<<<
x classe 5 : 462 formazioni <<<<<
x classe 6 : 462 formazioni <<<<<
x classe 7 : 330 formazioni
x classe 8 : 165 formazioni
x classe 9 : 55 formazioni
x classe 10 : 11 formazioni
x classe 11 : 1 formazioni


per fare ad esempio l'analisi su 5 ruote a girare in classe 5 by cgb 15 -> 3003*462 = 1.387.386 threads...

1.387.386 / 10.000 (limite di cint) = 138,7386 arrotondato -> 139 <- valore moltiplicativo necessario per generare tutti i threads necessari senza errore di spazio matrice mancante...

altri schemi di analisi con relativi threads elaborazionali necessari... x rispettivo numero di ruote unite a girare:
con vmn mi riferisco al valore moltiplicativo necessario da utilizzare con il massimo valore cint (10.000) per raggiungere la dimensione della relativa matrice di sviluppo senza errore di spazio di matrice insufficiente.

by cgb c15

in classe di sviluppo 5

1 ruota -> 3003 x 11 = 33.033 th / 10.000 = 4 vmn arrotondato Tt : 00:01:30

2 ruote -> 3003 x 55 = 165.165 th / 10.000 = 17 vmn arrotondato Tt : 00:05:38

3 ruote -> 3003 x 165 = 495.495 threads / 10.000 = 50 vmn arrotondato. Tt : 00:12:13

4 ruote -> 3003 x 330 = 990.990 th / 10.000 = 100 vmn arrotondato Tt : 00:27:15 x adesso il teoricamente best...

5 ruote -> 3003 x 462 = 1.387.386 th / 10.0000 = 139 vmn arrotondato

6 ruote -> 3003 x 462 = 1.387.386 th / 10.0000 = 139 vmn arrotondato

7 ruote -> 3003 x 330 = 990.990 th / 10.000 = 100 vmn arrotondato

8 ruote -> 3003 x 165 = 495.495 threads / 10.000 = 50 vmn arrotondato.

9 ruote -> 3003 x 55 = 165.165 th / 10.000 = 17 vmn arrotondato

10 ruote -> 3003 x 11 = 33.033 th / 10.000 = 4 vmn arrotondato

11 ruote -> 3003 x 1 = 3003 th = vmn 1

Tutta questa pappardella tecnica.., che vedrò di aggiornare in base ad eventuali nuovi benchmark test in tal senso, oltre che al sottoscritto potrebbe essere utile a chiunque si voglia avventurare nella programmazione e analisi multi ruota... analizzando le 5 posizioni unite in modo standard. I tempi indicati dopo la dicitura Tt: sono relativi al mio scarso celeron di mini pc nipogi Intel(R) Celeron(R) J4125 CPU @ 2.00GHz 2.00 GHz e 16 gb di ram quindi potrebbero essere molto più bassi per macchine molto + performanti della mia.
 
Ultima modifica:
Per lotto_tom75
Buon pomeriggio
Ho scaricato lo script 49 (42 d)
Ti disturbo per chiederti alcuni suggerimenti.
Se seii disponibile ti faccio un copia incolla dei dati che inserisco
in modo di poter essere piu chiaro nella richiesta di aiuto che ti chiedo.
In attesa di una tua gradita risposta ti saluto
Serpicoi
 
Per lotto_tom75
Buon pomeriggio
Ho scaricato lo script 49 (42 d)
Ti disturbo per chiederti alcuni suggerimenti.
Se seii disponibile ti faccio un copia incolla dei dati che inserisco
in modo di poter essere piu chiaro nella richiesta di aiuto che ti chiedo.
In attesa di una tua gradita risposta ti saluto
Serpicoi

ciao serpico spara pure...
 
visualizzazione del contenuto della matrice non ordinata...

n 1.2 r .1.5. s Ambo rit 40 ritmax 462 incmax 0 freq 10 diff 438 contatore riga matrice 0
n 1.29 r .1.5. s Ambo rit 138 ritmax 420 incmax 0 freq 11 diff 438 contatore riga matrice 1
n 1.46 r .1.5. s Ambo rit 126 ritmax 537 incmax 0 freq 13 diff 438 contatore riga matrice 2
n 1.47 r .1.5. s Ambo rit 77 ritmax 421 incmax 0 freq 15 diff 438 contatore riga matrice 3
n 1.63 r .1.5. s Ambo rit 183 ritmax 585 incmax 0 freq 8 diff 438 contatore riga matrice 4
n 2.29 r .1.5. s Ambo rit 138 ritmax 581 incmax 0 freq 11 diff 438 contatore riga matrice 5
n 2.46 r .1.5. s Ambo rit 454 ritmax 531 incmax 0 freq 6 diff 438 contatore riga matrice 6
n 2.47 r .1.5. s Ambo rit 421 ritmax 843 incmax 0 freq 8 diff 438 contatore riga matrice 7
n 2.63 r .1.5. s Ambo rit 8 ritmax 1161 incmax 0 freq 5 diff 438 contatore riga matrice 8
n 29.46 r .1.5. s Ambo rit 13 ritmax 385 incmax 0 freq 14 diff 438 contatore riga matrice 9
n 29.47 r .1.5. s Ambo rit 105 ritmax 725 incmax 0 freq 7 diff 438 contatore riga matrice 10
n 29.63 r .1.5. s Ambo rit 89 ritmax 521 incmax 0 freq 13 diff 438 contatore riga matrice 11
n 46.47 r .1.5. s Ambo rit 145 ritmax 614 incmax 0 freq 11 diff 438 contatore riga matrice 12
n 46.63 r .1.5. s Ambo rit 63 ritmax 873 incmax 0 freq 9 diff 438 contatore riga matrice 13
n 47.63 r .1.5. s Ambo rit 118 ritmax 556 incmax 0 freq 13 diff 438 contatore riga matrice 14
n r s rit ritmax incmax freq diff 438 contatore riga matrice 15
n r s rit ritmax incmax freq diff 438 contatore riga matrice 16
n r s rit ritmax incmax freq diff 438 contatore riga matrice 17
n r s rit ritmax incmax freq diff 438 contatore riga matrice 18
n r s rit ritmax incmax freq diff 438 contatore riga matrice 19
n r s rit ritmax incmax freq diff 438 contatore riga matrice 20

visualizzazione del contenuto dell matrice ordinata...

num-ruota-sorte-rit-ritmax-incmax-freq

1.2 - .1.5. - Ambo - 40 - 462 - 0 - 10
1.47 - .1.5. - Ambo - 77 - 421 - 0 - 15
29.46 - .1.5. - Ambo - 13 - 385 - 0 - 14
29.63 - .1.5. - Ambo - 89 - 521 - 0 - 13
47.63 - .1.5. - Ambo - 118 - 556 - 0 - 13
1.46 - .1.5. - Ambo - 126 - 537 - 0 - 13
46.47 - .1.5. - Ambo - 145 - 614 - 0 - 11
2.29 - .1.5. - Ambo - 138 - 581 - 0 - 11
1.29 - .1.5. - Ambo - 138 - 420 - 0 - 11
46.63 - .1.5. - Ambo - 63 - 873 - 0 - 9
2.47 - .1.5. - Ambo - 421 - 843 - 0 - 8
1.63 - .1.5. - Ambo - 183 - 585 - 0 - 8
29.47 - .1.5. - Ambo - 105 - 725 - 0 - 7
2.46 - .1.5. - Ambo - 454 - 531 - 0 - 6
2.63 - .1.5. - Ambo - 8 - 1161 - 0 - 5
- - - - - -
- - - - - -
- - - - - -
- - - - - -
- - - - - -
- - - - - -


Elaborazione terminata con successo!

range temporale analizzato [08007] [ 1 ] 02.01.2009 - [10336] [156] 16.11.2023
n. di estrazioni totali analizzate 2330
Input numeri scelti da tabella
gruppo base numerico analizzato 1.2.29.46.47.63
classe gruppo numerico sviluppato 6
numero complessivo di ruote a girare 2
ruote analizzate BA.MI
ruote unite minimo 2
ruote unite massimo 2
classe di sviluppo 2
sorte di ricerca 2
parametro di ordinamento scelto num(0); ruote(1); rit(3) ; ritmax(4) ; incmax(5) ; freq(6) 6
criterio di ordinamento impostato crescente (1) decrescente (-1) -1
righe (x mix di ruote) sviluppate 1
righe totali di sviluppo generate 15

cgb 6 ; cs 2 ; pr 2 ; qruag : da 2 a 2 ; righe 15 ; tt : 00:00:45 sg 15

righe occupate nella matrice di dimensione ( 100000 ) : 15
numero dei primi risultati visualizzati in output in base all'ordinamento scelto 20

report sui valori estremi rilevati

rit max generale 454
formazione : n 2.46 r .1.5. s Ambo rit 454 ritmax 531 incmax 0 freq 6 diff 77 contatore riga matrice 7
n. casi multipli di rit max generale 0
rs max generale 1161
formazione : n 47.63 r .1.5. s Ambo rit 118 ritmax 556 incmax 0 freq 13 diff 438 contatore riga matrice 15
n. casi multipli di rit sto max generale -1
ra min generale 8
formazione : n 2.63 r .1.5. s Ambo rit 8 ritmax 1161 incmax 0 freq 5 diff 1153 contatore riga matrice 9
n. casi multipli di rit min generale 0
rs min generale 385
formazione : n 29.46 r .1.5. s Ambo rit 13 ritmax 385 incmax 0 freq 14 diff 372 contatore riga matrice 10
n. casi multipli di rit sto min generale -1
fq max generale 15
formazione : n 1.47 r .1.5. s Ambo rit 77 ritmax 421 incmax 0 freq 15 diff 344 contatore riga matrice 4
n. casi multipli di fq max generale 0
fq min generale 5
formazione : n 2.63 r .1.5. s Ambo rit 8 ritmax 1161 incmax 0 freq 5 diff 1153 contatore riga matrice 9
n. casi multipli di fq min generale 0
incmax max generale 0
formazione :
n. casi multipli di incmax max generale 14
incmax min generale 0
formazione : n 1.2 r .1.5. s Ambo rit 40 ritmax 462 incmax 0 freq 10 diff 422 contatore riga matrice 1
n. casi multipli di incmax min generale 13
diff max generale 1153
formazione : n 2.63 r .1.5. s Ambo rit 8 ritmax 1161 incmax 0 freq 5 diff 1153 contatore riga matrice 9
n. casi multipli di diff max generale -1
diff min generale 77
formazione : n 2.46 r .1.5. s Ambo rit 454 ritmax 531 incmax 0 freq 6 diff 77 contatore riga matrice 7
n. casi multipli di diff min generale -1

rs max relativi ad ogni gruppo di ruote unite generato

Tt : 00:00:45
 
Sto effettuando delle ricerche per delle sestine che di volta in volta e in diverse due ruote
vado rilevanto,
ho trovato il tuo OTTIMO Script che mi permette di fare una approfondita ricerca
solo che io so guidare a mala pena una cinquecento e con il tuo script mi trovo sopra
una Ferrari quindi necessito di suggerimenti e consigli.
se seguo gli ambi piu frequenti nella videata ne trovo il primo che non è frequente e poi tutti gli altri a seguire.
Poi vedo che ci sono altri ambi con INCR MAX seguo quelli? per sperare in un ambo?
nella ultima videata ci sono ripetuti gli stessi ambi a volte per due tre indicazioni
e allora mi chiedo scommetto quelli?
Per cortesia mi potresti aiutare a capire come e se ti va cosa fare?
Spero di essere stato chiaro eventualmente,se ce ne fosse di bisogno,sono qui
 

Ultima estrazione Lotto

  • Estrazione del lotto
    sabato 23 novembre 2024
    Bari
    33
    80
    86
    52
    25
    Cagliari
    67
    57
    59
    05
    80
    Firenze
    31
    32
    58
    88
    77
    Genova
    40
    39
    23
    36
    81
    Milano
    28
    58
    45
    25
    38
    Napoli
    20
    82
    23
    44
    57
    Palermo
    76
    56
    88
    62
    31
    Roma
    12
    81
    59
    74
    72
    Torino
    46
    53
    72
    45
    23
    Venezia
    04
    12
    42
    64
    20
    Nazionale
    63
    44
    78
    10
    55
    Estrazione Simbolotto
    Torino
    43
    42
    12
    39
    22
Indietro
Alto