Novità

Per dirla alla "Austin Powers" sarebbe...

Ciao la sub va inserita nella class.
Poi nella sub main va inserita dopo l if.
Dopo la sequenza scrivi
Call ClsL. GetGrafico
Ciao spero sia chiaro
Se qualcuno a modo di verificare magari dice che ne pensa?
 
ciao Legend , allra il concetto lo hai interpretato bene , ci sono alcune cose ma riguardano il fatto specifico dei grafici ..visto che non li hai mai fatti la sub corretta la metto io.
Da questo momento in poi si usa lo script 5 per le modifiche,
la nostra classe è praticamente finita , manca solo una cosa il calcolo dei valori statistici che tu avevi gia fatto.
Predisponi delle variabili globali alla classe per memorizzare i valori statistici , e scrivi una sub che esegua la statistica .. ma ALT ! Non lanciarla da nessuna parte .. quella la lancera il chiamante alla bisogna come del resto pure il metodo che disegna il grafico.
Oltre alle variabili per memorizzare i dati statistici devi scrivere altrettante proprieta. Attenzione in questo caso servono proprio le proprieta non le function.

Per esempio dichiari la variabile mRitardo ci dovra essere la proprietà in sola lettura
Property get Ritardo
ritardo =mRitardo
End property

e cosi via per le altre , fatto questo abbiamo finito con la classe epasssiamo allo script
5


Codice:
[COLOR=#0000CD][B]Option Explicit

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
                    'cui si è registrato l'incremento del ritmax conosciuto
    Private aRitardiAllIncremento ' contiene il valore del ritardo all'idestrazione in cu si è verificato l'incremento
    
    ' inizializza le proprietà dell'oggetto
    Sub Init(sLunghetta,sChrSep,RangeInizio,RangeFine,vetRuote,SorteInGioco)
    
        ' acquisisco i parametri per l'analisi
        mInizio = RangeInizio
        mFine = RangeFine
        aRuote = vetRuote
        mSorte = SorteInGioco
        ' alimento il vettore con i numeri della lunghetta
        Call AlimentaVettoreLunghetta(sLunghetta,sChrSep)
        ' calcolo l'elenco dei ritardi
        Call ElencoRitardiTurbo(aNumeri,aRuote,mSorte,mInizio,mFine,aElencoRit,aIdEstrElencoRit)
        ' alimento il vettore che contien l'elenco degli incrementi rit max
        Call AlimentaVettoreIncrRitMax
    End Sub
    Private Sub AlimentaVettoreLunghetta(sLunghetta,sChrSep)
        
        ' antepongo un carattere separatore per fare in modo che
        ' aNumeri si valorizzi dall'indice 1 (senno si sarebeb valorizzato dall'indice 0)
        Call SplitByChar((sChrSep & sLunghetta),sChrSep,aNumeri)
        ' valorizzo la classe della lunghetta
        mClasse = UBound(aNumeri)
    End Sub
    Private Sub AlimentaVettoreIncrRitMax
        Dim nRitMax,nIncr,nId,k
        
        nId = 0
        
        ' inizializzo il vettore a 0 elementi
        ReDim aElencoIncrRitMax(0)
        ReDim aIdEstrIncrRitMax(0)
        ReDim aRitardiAllIncremento (0)

        ' ciclo sul vettore dei ritardi
        For k = 1 To UBound(aElencoRit)
            ' se il ritardo corrente supera il ritmax attuale..
            If aElencoRit(k) > nRitMax Then
                If nRitMax > 0 Then
                    ' se il ritmax attuale è >0 (ivvero ne esiste uno)
                    ' calcolo di quanto si è incrementato
                    nIncr = aElencoRit(k) - nRitMax
                    ' incremento il contatore dei valori trovati
                    nId = nId + 1
                    ' ridimensiono il vettore mantenendo i valori precedenti ma
                    ' aggiungendone uno
                    ReDim Preserve aElencoIncrRitMax(nId)
                    ' memorizzo il valore
                    aElencoIncrRitMax(nId) = nIncr
                    
                    ' ridimensiono il vettore mantnendo i valori precedenti ma
                    ' aggiungendone uno
                    ReDim Preserve aIdEstrIncrRitMax(nId)
                    ' memorizzo l'id dell'estrazione dove si è avuto l'incremento
                    aIdEstrIncrRitMax(nId) = aIdEstrElencoRit(k)
                    
                    ' ridimensiono il vettore mantnendo i valori precedenti ma
                    ' aggiungendone uno
                    ReDim Preserve aRitardiAllIncremento (nId)
                    ' memorizzo il valore del ritardo all'id dell'estrazione dove si è avuto l'incremento
                    aRitardiAllIncremento (nId) = aElencoRit(k)
                    

                    
                End If
                
                nRitMax = aElencoRit(k)
                
            End If
        Next
    End Sub
    
    Function IsCondizioneRispettata
        ' verifica che l'incremento dell'ultimo ritmax sia uguale al massimo incr rit max conosciuto.
        Dim nUpper
        
        nUpper = UBound(aElencoIncrRitMax)
        If  aIdEstrIncrRitMax(nUpper) = mFine Then
        
            IsCondizioneRispettata =(aElencoIncrRitMax(nUpper) >= MassimoV(aElencoIncrRitMax,1,nUpper - 1))
        Else
            IsCondizioneRispettata = False
        End If
        
    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("Formaziione " & StringaNumeri(aNumeri),nValoreMinX,nValoreMaxX,0,nValoreMaxY,nStepX,nStepY)
    
        nUpperVetIncrRit = UBound(aElencoIncrRitMax)
        ' linea dell'incremento rit max
        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")

        ' linea dell'  rit max
        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")

    

        ' scrive grafico nell'output
        Call InserisciGrafico

    End Sub
End Class
Sub Main
    
    Dim clsL,n,r
    
    Set clsL = New clsLunghetta
    
    ReDim aRuote(1)
    
    
    For r = 1 To 10
        aRuote(1) = r
        For n = 1 To 90
            Call clsL.Init(n,".",5000,8000,aRuote,1)
            If clsL.IsCondizioneRispettata Then
                Call clsL.DisegnaGraficoIncrRitMax
            End If
        Next
    Next    
    Set clsL = Nothing
    
    
End Sub[/B][/COLOR]
 
Ultima modifica di un moderatore:
Ciao luigi grazie .ricopio lo script studio la sub e poi
Passo All ultimo Step.
Dichiarò le variabili passo alle property scrivo la sub e non la lancio.
Ok
A dopo:)
Grazie mille :)
 
per rendere maggiormente versatile la nostra classe possiamo modificare cosi la funzione.
In questo modo non solo potremo passare una lunghetta in formato stringa ma anche direttamente un array.
la richiesta era di leggere delle stringhe ma se invece volessimo passare i numeri tramite uno sviluppo ordinato o casuale dovevamo trasformare prima il vettore in stringa , invece cosi è indifferente..

Codice:
  Private Sub AlimentaVettoreLunghetta(sLunghetta,sChrSep)
        
        Dim k
        
        If IsArray (sLunghetta) Then
            ' se la lunghetta è gia un array lo copio nel vettore locale dei numeri
            ReDim aNumeri (UBound(sLunghetta))
            For k = 1 To UBound(sLunghetta)
                aNumeri(k) = sLunghetta(k)
            Next
        
        Else
            ' antepongo un carattere separatore per fare in modo che
            ' aNumeri si valorizzi dall'indice 1 (senno si sarebeb valorizzato dall'indice 0)
            Call SplitByChar((sChrSep & sLunghetta),sChrSep,aNumeri)
        End If
        
        ' valorizzo la classe della lunghetta
        mClasse = UBound(aNumeri)
    End Sub
 
Ultima modifica di un moderatore:
ok , anche se non hai ancora implementato le modifiche gia so che le avresti fatte bene visto che le avevi gia fatte.

La nostra classe è finita , come vedi abbiamo incapsulato del codice in un oggetto , questo oggetto è in grado di trattare qualsiasi lunghetta, anche di classe diverse ed è totalmente parametrico.

Noi lo usiamo attaverso i metodi pubblici e le proprietà che abbiamo scritto, quindi usiamo delle interfacce e dentro la classe fa il suo sporco lavoro noi non ce ne dobbiamo preoccupare piu.

Il fatto di aver creato una classe ci consente di creare nuove istanze dello stesso oggetto.
Questo si fa con la parola chiave New , trattandosi di un oggetto si deve usare il set prima del nome della variabile.

dim clsL
set ClsL = New clsLunghetta

ogni volta che eseguiamo questa istruzione creiamo un nuovo e distinto oggetto con
tutte le proprietà e metodi che avevamo previsto.

il fatto di aver creato un oggetto ci consente di inserirlo in una collection.

la collection è un contenitore che contiene oggetti

per aggiungere un nuovo oggetto al contenitore si usa il metodo Add

dopo aver inserito un certo numero di oggetti nella collection la collection puo
essere ordinata per uno dei valori delle proprietà esposte dagli oggetti contenuti.
noi infatti la ordinimao per IncrRitMAx

come potrai notare il flusso dell'algoritmo prevede di leggere tutte le righe da un file di testo , individuare automaticamente il carattere separatore , testare se la condizione + valida.
Solo se la condizione è valida si richiama il metodo che calcola i valori statistici poi l'oggetto è inserito nella collection.

noterai che l'istruzione New compare ad ogi iterazione della lettura delle lunghette
questo perche prima di eseguire init non sappiamo se la lunghetta sia valida o no
e se non facciamo new ad ogni iterazione in realta ci staremmo riferendo all'oggetto precedente il primo creato.

benissimo questo è lo script completo che assolve alla richiesta iniziale di LottoTom , ho preferito farlo io , questa volta la lezione cosnsiste nel commetare le righe del codice scritto da me

SCRIPT FINALE

Codice:
[COLOR=#0000CD][B]Option Explicit
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
    ' cui si è registrato l'incremento del ritmax conosciuto
    Private aRitardiAllIncremento ' contiene il valore del ritardo all'idestrazione in cui
    ' si è verificato l'incremento
    Private mRitardo,mRitardoMax,mIncrRitMax,mFrequenza ' valori statistici
    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
    ' inizializza le proprietà dell'oggetto
    Sub Init(sLunghetta,sChrSep,RangeInizio,RangeFine,vetRuote,SorteInGioco)
        ' acquisisco i parametri per l'analisi
        mInizio = RangeInizio
        mFine = RangeFine
        aRuote = vetRuote
        mSorte = SorteInGioco
        ' alimento il vettore con i numeri della lunghetta
        Call AlimentaVettoreLunghetta(sLunghetta,sChrSep)
        ' calcolo l'elenco dei ritardi
        Call ElencoRitardiTurbo(aNumeri,aRuote,mSorte,mInizio,mFine,aElencoRit,aIdEstrElencoRit)
        ' alimento il vettore che contien l'elenco degli incrementi rit max
        Call AlimentaVettoreIncrRitMax
    End Sub
    ' esegue il calcolo dei valori statistici della lunghetta
    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
            ' se la lunghetta è gia un array lo copio nel vettore locale dei numeri
            ReDim aNumeri(UBound(sLunghetta))
            For k = 1 To UBound(sLunghetta)
                aNumeri(k) = sLunghetta(k)
            Next
        Else
            ' antepongo un carattere separatore per fare in modo che
            ' aNumeri si valorizzi dall'indice 1 (senno si sarebeb valorizzato dall'indice 0)
            Call SplitByChar((sChrSep & sLunghetta),sChrSep,aNumeri)
        End If
        ' valorizzo la classe della lunghetta
        mClasse = UBound(aNumeri)
    End Sub
    Private Sub AlimentaVettoreIncrRitMax
        Dim nRitMax,nIncr,nId,k
        nId = 0
        ' inizializzo il vettore a 0 elementi
        ReDim aElencoIncrRitMax(0)
        ReDim aIdEstrIncrRitMax(0)
        ReDim aRitardiAllIncremento(0)
        ' ciclo sul vettore dei ritardi
        For k = 1 To UBound(aElencoRit)
            ' se il ritardo corrente supera il ritmax attuale..
            If aElencoRit(k) > nRitMax Then
                If nRitMax > 0 Then
                    ' se il ritmax attuale è >0 (ivvero ne esiste uno)
                    ' calcolo di quanto si è incrementato
                    nIncr = aElencoRit(k) - nRitMax
                    ' incremento il contatore dei valori trovati
                    nId = nId + 1
                    ' ridimensiono il vettore mantenendo i valori precedenti ma
                    ' aggiungendone uno
                    ReDim Preserve aElencoIncrRitMax(nId)
                    ' memorizzo il valore
                    aElencoIncrRitMax(nId) = nIncr
                    ' ridimensiono il vettore mantnendo i valori precedenti ma
                    ' aggiungendone uno
                    ReDim Preserve aIdEstrIncrRitMax(nId)
                    ' memorizzo l'id dell'estrazione dove si è avuto l'incremento
                    aIdEstrIncrRitMax(nId) = aIdEstrElencoRit(k)
                    ' ridimensiono il vettore mantnendo i valori precedenti ma
                    ' aggiungendone uno
                    ReDim Preserve aRitardiAllIncremento(nId)
                    ' memorizzo il valore del ritardo all'id dell'estrazione dove si è avuto l'incremento
                    aRitardiAllIncremento(nId) = aElencoRit(k)
                End If
                nRitMax = aElencoRit(k)
            End If
        Next
    End Sub
    Function IsCondizioneRispettata
        ' verifica che l'incremento dell'ultimo ritmax sia uguale al massimo incr rit max conosciuto.
        Dim nUpper
        nUpper = UBound(aElencoIncrRitMax)
        If aIdEstrIncrRitMax(nUpper) = mFine Then
            IsCondizioneRispettata =(aElencoIncrRitMax(nUpper) >= MassimoV(aElencoIncrRitMax,1,nUpper - 1))
        Else
            IsCondizioneRispettata = False
        End If
    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("Formaziione " & StringaNumeri(aNumeri),nValoreMinX,nValoreMaxX,0,nValoreMaxY,nStepX,nStepY)
        nUpperVetIncrRit = UBound(aElencoIncrRitMax)
        ' linea dell'incremento rit max
        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")
        ' linea dell'  rit max
        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")
        ' scrive grafico nell'output
        Call InserisciGrafico
    End Sub
End Class

Sub Main
    Dim Inizio,Fine,aRuote,Sorte
    Inizio = EstrazioneIni
    Fine = EstrazioneFin
    Sorte = ScegliEsito
    Call ScegliRuote(aRuote,Nothing)
    
    If (Fine > Inizio ) And UBound(aRuote) > 0 And Sorte > 0 Then
    
        Call AnalisiLunghetteFromFileTxt(Inizio,Fine,aRuote,Sorte)
    End If
End Sub

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
Sub AnalisiLunghetteFromFileTxt(Inizio,Fine,aRuote,Sorte)
    Dim sFile,aLunghette,nTotLunghette
    Dim k,sChrSep
    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 = 1 To nTotLunghette
                Set clsL = New clsLunghetta
                Call clsL.Init(aLunghette(k),sChrSep,Inizio,Fine,aRuote,Sorte)
                If clsL.IsCondizioneRispettata Then
                    Call clsL.EseguiStatistica
                    collLunghette.Add clsL
                End If
                If k Mod 50 = 0 Then
                    Call Messaggio("Righe esaminate " & k)
                    Call AvanzamentoElab(1,nTotLunghette,k)
                    If ScriptInterrotto Then Exit For
                End If
            Next
            
            Scrivi "Range analisi       : " & GetInfoEstrazione(Inizio) & " - " & GetInfoEstrazione(Fine)
            Scrivi "Lunghette esaminate : " & nTotLunghette & " Valide : " & collLunghette.count
            Scrivi "Sorte               : " & NomeSorte(Sorte)
            Scrivi "Ruote               : " & StringaRuote(aRuote)
            Scrivi
            Scrivi "Lunghette ordinate per incremento ritardo max",True,,vbYellow
            Call Scrivi
            
            If collLunghette.count > 0 Then
                    
                Call OrdinaItemCollection(collLunghette,"IncrRitMax",,,- 1)
                For Each clsL In collLunghette
                    Call Scrivi("Ritardo   : " & clsL.Ritardo)
                    Call Scrivi("RitMax    : " & clsL.RitardoMax)
                    Call Scrivi("Freq      : " & clsL.Frequenza)
                    Call Scrivi("IncrRitMx : " & clsL.IncrRitMax)
                    Call clsL.DisegnaGraficoIncrRitMax
                Next
            Else
                Scrivi "Nessuna lunghetta rispetta le condizioni"
                Scrivi "Lunghette esaminate " & nTotLunghette
            End If
        End If
    End If
End Sub[/B][/COLOR]
 
Ultima modifica di un moderatore:
Ciao:)Ciao luigi grazie per la fiducia e per tutto.
Adesso studio tutto bene.
Per il commento con il cell mi è impossibile da fare
Non mi capisco lo schermo è troppo piccolo.
Ma se qualcuno non capisse mi presto volentieri a spiegare la o le Line di codice.
Anche io avevo scritto la funzione del carattere separatore :) non bella come la tua però l intuito c era.
Adesso vediamo che esempi ci fa tom:)
Buona domenica :)
Quando fai così ; magari per te non è il massimo
Ma mi stimola un sacco fare le funzioni seguendo le tue inficazioni:)
Thanks; )
 
con questo script abbiamo toccato un sacco di argomenti , sono certo che tu abbia capito ora se metabolizzi i concetti e li riapplichi potrai fare tutti gli script che ti chiedono.
Per commentare va bene pure a memoria intendevo dire che l'importante è che tu capisca tutto il codice.
Visto che lo scrip si presta sulla falsa riga della sub che leggge le lunghette dal file di testo aggiungi una sub che le lunghette le genera casualmente oppure in base ad uno sviluppo.
Ricordati che sLunghetta puo pure ricevere un vettore non solo una stringa .. è molto versatile , sfruttala.
 
Ultima modifica di un moderatore:
Ciao Lo sto ricopiando , che script :)
Ovviamente ci sono cose che dovrò fare più volte
Come per i primi script, per farli mie
Caspita e già passato un anno che ci si conosce.
Grazie:)
A domani:)
 
ehhe .. quando ho iniziato a scrivere spaziometria ero giovane :-) il tempo passa ...Legend ma non ti conviene usare il cellulare coem hot spot ?
 
Lo devo ancora provare ragazzi... :D ma ribadisco... NON SIETE UMANI!!! (nel senso più buono del termine ovviamente ;) ) GRAZIE E COMPLIMENTI MITICI PROGRAMMATORI!!! Se vi interessa l'argomento per cui avete realizzato quasi magicamente... tutto questo... sarò ben lieto di postarvi esempi di condizioni teoricamente ottimali nonchè spiegazioni relative di approfondimento o in questo thread o in uno appositamente dedicato. Pur sapendo che il grandissimo LuigiB non gioca mai o quasi spero davvero di potervi dare qualche buona dritta per potervi far centrare qualcosina ogni tanto...;) tipo questo ad esempio... :p
ambosututteacolpo-ok.jpg



E rendervi in tal modo in parte il favore che mi avete così gentilmente e straordinariamente abilmente concesso! GRAZIE ANCORA e alle prossime condivisioni lotto ludiche programmatiche tecniche mitici amici! :cool: :) ps: La bravura di i legend sfiora l'inimmaginabile.. se si pensa solo che ha realizzato il tutto da cellulare!!! :eek: :eek: :eek: . Per quanto riguarda l'eccezionale opera direttiva e di riassunto del RE dei PROGRAMMATORI che dire? Semplicemente.. LuigiB lo ricordo... è il Dynamo che rende possibile a livello di programmazione l'IMPOSSIBILE... ;) :) :cool:
 
Ultima modifica:
LuigiB;n1937122 ha scritto:
ehhe .. quando ho iniziato a scrivere spaziometria ero giovane :-) il tempo passa ...Legend ma non ti conviene usare il cellulare coem hot spot ?

Forse volevi dire che eri un ragazzino:)
Hot spot e tethering?
Mi avevano detto che se ho virus sul pc mi infetta il cell altrimenti lo faccio. Sono quasi 2 mesi che aggiorno spaziometria a mano per non parlare degli aggiornamenti chr non sto più facendo.
Arriveranno tempi miglior.
Per tom
grazie tom ma non gioco neanche io.
Prima mi piaceva usare calc le formule qualche macro.
Poi con spaziometria dei grandj maestri che dire
Complimenti per la vincita e la previsione :)
Buona domenica :)
 
Ultima modifica:
ahah ma va . che virus ... a parte che son sistemi operativi diversi ... se continui cosi ti faranno diventare Honoris Causa frate certosino .. sai quelli che ricopiavano a mano tutti i testi ...
 
per Tom io giocherei pure solo che il lotto non va bene perche a meno di vincite cospicue e inaspettate beccando qualcosetta ogni tanto alla fine sei sempre in perdita ...
 
Ciao a tutti , Buona domenica:)
Quando la logica va a braccetto con la saggezza :)
Sottoscrivo, però la sfida anche solo teorica è affascinante.
Ciao:)
Alla prossima sfida :)
 
Buona Domenica a tutti , oltre a rinnovare i miei complimenti , devo purtroppo affermare che , fin'ora mi è stato imposssibile , ottenere un output con risultati utili , da vs script , tutte le eventuali combinazioni che inserisco risultano "Nessuna lunghetta rispetta le condizioni esaminate 8".

Può Lotto_tom o Legend o chi altri ci ha provato , evidenziare con un esempio, anche non attuale l'utizizzo dello script?

Penso che inserire la possibilità di scelta dei numeri da analizzare attraverso una scelta su una tabellina , come in altri vs script , possa facilitarne l'utilizzzo.

Complimenti speciali x Luigi , un generoso buon MAESTRO. Ciao
 
Ciao Vincenzo il filtro voluto da tom è un filtro mietitore.
Va oltre il raggiungimento del ritardo storico , ma a quello del suo incremento.
Pertanto le combinazioni sono poche e la verifica da prediligere e su tutte.
Hai presente quando si mette in evidenza una formazione prossima al suo ritardo , ecco questa e prossima al suo incremento max.
Non ho ancora ricopiato tutto lo script.
Inserisci i numeri che ho messo nel post per tom
Ricerca x ambo su tutte.
Quelle formazioni dovrebbero essere evidenziate altrimenti avevo sbagliato qualcosa io:)
Fammi sapere:)
Buona domenica.
 
In che pagina sono questi numeri , non li trovo ?

Per il filtro , si conosco , la sovrabbondanza di dati con cui lavora Lotto_tom , è un buon metodo partire dalle lunghette .
Comunque , penso che il filtro possa essere modificato in maniera meno restrittiva , cioè la segnalazione dovrebbe avvenire ogni volta che una formazione ha il suo max INcr in corso , non solo in riferimento al ritardo attuale , magari in quel momento anche al suo max storico, ma conteggiando il numero di volte che questo è avvenuto , e verificare che L'incremento in esame sia il maggiore o anche prossimo al max storico degli incrementi avvenuti .

Dove copio/trovo, un elenco di coppie e terzine integrali in formato .txt?
 
Ultima modifica:
PER MIKE , agli inizi di questa discussione , avevi riportato un output con dei dati , che risultano per il mio uso di grande aiuto , puoi allegare lo script x favore?
 
Ciao , in questa versione delllo script ho ggiunto la scelta di esaminare le colonne da un file txt oppure da uno sviluppo casuale.
In questo secondo caso uno lancia lo script dice quante colonne vuole trovare e aspetta che lo script abbia finito oppure lo blocca prima quando vede che nonostante l'attesa qualche colonna è gia stata trovata ma non ancora tutte quelle che si volevano..

Codice:
Option Explicit
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
    ' cui si è registrato l'incremento del ritmax conosciuto
    Private aRitardiAllIncremento ' contiene il valore del ritardo all'idestrazione in cui
    ' si è verificato l'incremento
    Private mRitardo,mRitardoMax,mIncrRitMax,mFrequenza ' valori statistici
    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
    ' inizializza le proprietà dell'oggetto
    Sub Init(sLunghetta,sChrSep,RangeInizio,RangeFine,vetRuote,SorteInGioco)
        ' acquisisco i parametri per l'analisi
        mInizio = RangeInizio
        mFine = RangeFine
        aRuote = vetRuote
        mSorte = SorteInGioco
        ' alimento il vettore con i numeri della lunghetta
        Call AlimentaVettoreLunghetta(sLunghetta,sChrSep)
        ' calcolo l'elenco dei ritardi
        Call ElencoRitardiTurbo(aNumeri,aRuote,mSorte,mInizio,mFine,aElencoRit,aIdEstrElencoRit)
        ' alimento il vettore che contien l'elenco degli incrementi rit max
        Call AlimentaVettoreIncrRitMax
    End Sub
    ' esegue il calcolo dei valori statistici della lunghetta
    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
            ' se la lunghetta è gia un array lo copio nel vettore locale dei numeri
            ReDim aNumeri(UBound(sLunghetta))
            For k = 1 To UBound(sLunghetta)
                aNumeri(k) = sLunghetta(k)
            Next
        Else
            ' antepongo un carattere separatore per fare in modo che
            ' aNumeri si valorizzi dall'indice 1 (senno si sarebeb valorizzato dall'indice 0)
            Call SplitByChar((sChrSep & sLunghetta),sChrSep,aNumeri)
        End If
        ' valorizzo la classe della lunghetta
        mClasse = UBound(aNumeri)
    End Sub
    Private Sub AlimentaVettoreIncrRitMax
        Dim nRitMax,nIncr,nId,k
        nId = 0
        ' inizializzo il vettore a 0 elementi
        ReDim aElencoIncrRitMax(0)
        ReDim aIdEstrIncrRitMax(0)
        ReDim aRitardiAllIncremento(0)
        ' ciclo sul vettore dei ritardi
        For k = 1 To UBound(aElencoRit)
            ' se il ritardo corrente supera il ritmax attuale..
            If aElencoRit(k) > nRitMax Then
                If nRitMax > 0 Then
                    ' se il ritmax attuale è >0 (ivvero ne esiste uno)
                    ' calcolo di quanto si è incrementato
                    nIncr = aElencoRit(k) - nRitMax
                    ' incremento il contatore dei valori trovati
                    nId = nId + 1
                    ' ridimensiono il vettore mantenendo i valori precedenti ma
                    ' aggiungendone uno
                    ReDim Preserve aElencoIncrRitMax(nId)
                    ' memorizzo il valore
                    aElencoIncrRitMax(nId) = nIncr
                    ' ridimensiono il vettore mantnendo i valori precedenti ma
                    ' aggiungendone uno
                    ReDim Preserve aIdEstrIncrRitMax(nId)
                    ' memorizzo l'id dell'estrazione dove si è avuto l'incremento
                    aIdEstrIncrRitMax(nId) = aIdEstrElencoRit(k)
                    ' ridimensiono il vettore mantnendo i valori precedenti ma
                    ' aggiungendone uno
                    ReDim Preserve aRitardiAllIncremento(nId)
                    ' memorizzo il valore del ritardo all'id dell'estrazione dove si è avuto l'incremento
                    aRitardiAllIncremento(nId) = aElencoRit(k)
                End If
                nRitMax = aElencoRit(k)
            End If
        Next
    End Sub
    Function IsCondizioneRispettata
        ' verifica che l'incremento dell'ultimo ritmax sia uguale al massimo incr rit max conosciuto.
        Dim nUpper
        nUpper = UBound(aElencoIncrRitMax)
        If aIdEstrIncrRitMax(nUpper) = mFine Then
            IsCondizioneRispettata =(aElencoIncrRitMax(nUpper) >= MassimoV(aElencoIncrRitMax,1,nUpper - 1))
        Else
            IsCondizioneRispettata = False
        End If
    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("Formaziione " & StringaNumeri(aNumeri),nValoreMinX,nValoreMaxX,0,nValoreMaxY,nStepX,nStepY)
        nUpperVetIncrRit = UBound(aElencoIncrRitMax)
        ' linea dell'incremento rit max
        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")
        ' linea dell'  rit max
        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")
        ' scrive grafico nell'output
        Call InserisciGrafico
    End Sub
End Class
Sub Main
    Dim Inizio,Fine,aRuote,Sorte
    Inizio = EstrazioneIni
    Fine = EstrazioneFin
    Sorte = ScegliEsito
    Call ScegliRuote(aRuote,Nothing)
    If(Fine > Inizio) And UBound(aRuote) > 0 And Sorte > 0 Then
        Select Case ScegliTipoSviluppo
        Case 1
            Call AnalisiLunghetteFromFileTxt(Inizio,Fine,aRuote,Sorte)
        Case 2
            Call AnalisiLunghetteFromNumeriCasuali(Inizio,Fine,aRuote,Sorte)
        End Select
    End If
End Sub
Function ScegliTipoSviluppo
    ReDim aVoci(2)
    aVoci(1) = "Da file txt con lunghette"
    aVoci(2) = "Da sviluppo casuale"
    ScegliTipoSviluppo = ScegliOpzioneMenu(aVoci,1)
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
Sub AnalisiLunghetteFromFileTxt(Inizio,Fine,aRuote,Sorte)
    Dim sFile,aLunghette,nTotLunghette
    Dim k,sChrSep
    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 = 1 To nTotLunghette
                Set clsL = New clsLunghetta
                Call clsL.Init(aLunghette(k),sChrSep,Inizio,Fine,aRuote,Sorte)
                If clsL.IsCondizioneRispettata Then
                    Call clsL.EseguiStatistica
                    collLunghette.Add clsL
                End If
                If k Mod 50 = 0 Then
                    Call Messaggio("Righe esaminate " & k)
                    Call AvanzamentoElab(1,nTotLunghette,k)
                    If ScriptInterrotto Then Exit For
                End If
            Next
            Scrivi "Range analisi       : " & GetInfoEstrazione(Inizio) & " - " & GetInfoEstrazione(Fine)
            Scrivi "Lunghette esaminate : " & nTotLunghette & " Valide : " & collLunghette.count
            Scrivi "Sorte               : " & NomeSorte(Sorte)
            Scrivi "Ruote               : " & StringaRuote(aRuote)
            Scrivi
            Scrivi "Lunghette ordinate per incremento ritardo max",True,,vbYellow
            Call Scrivi
            If collLunghette.count > 0 Then
                Call OrdinaItemCollection(collLunghette,"IncrRitMax",,,- 1)
                For Each clsL In collLunghette
                    Call Scrivi("Lunghetta : " & clsL.LunghettaString )
                    Call Scrivi("Ritardo   : " & clsL.Ritardo)
                    Call Scrivi("RitMax    : " & clsL.RitardoMax)
                    Call Scrivi("Freq      : " & clsL.Frequenza)
                    Call Scrivi("IncrRitMx : " & clsL.IncrRitMax)
                    Call clsL.DisegnaGraficoIncrRitMax
                Next
            Else
                Scrivi "Nessuna lunghetta rispetta le condizioni"
                Scrivi "Lunghette esaminate " & nTotLunghette
            End If
        End If
    End If
End Sub
Sub AnalisiLunghetteFromNumeriCasuali(Inizio,Fine,aRuote,Sorte)
    Dim sFile,aLunghette,nTotLunghette,nClasse
    Dim nTrov,nProdotte
    Dim clsL,collLunghette
    Set collLunghette = GetNewCollection
    nTotLunghette = Int(InputBox("Quante lunghette devono essere trovate ?",,10))
    nClasse = Int(InputBox("Quanti numeri nella lunghetta",,Sorte))
    If nTotLunghette > 0 And nClasse >= Sorte And nClasse <= 10 Then
        nTrov = 0
        nProdotte = 0
        Do While nTrov < nTotLunghette
            Set clsL = New clsLunghetta
            ReDim aNum(nClasse)
            Call GetColonnaCasuale(nClasse,aNum)
            nProdotte = nProdotte + 1
            Call clsL.Init(aNum,"",Inizio,Fine,aRuote,Sorte)
            If clsL.IsCondizioneRispettata Then
                Call clsL.EseguiStatistica
                collLunghette.Add clsL
                nTrov = nTrov + 1
            End If
            If nProdotte Mod 50 = 0 Then
                Call Messaggio("combinazioni esaminate " & nProdotte & " valide " & nTrov)
                Call DoEventsEx
                If ScriptInterrotto Then Exit Do
            End If
        Loop
        Scrivi "Range analisi       : " & GetInfoEstrazione(Inizio) & " - " & GetInfoEstrazione(Fine)
        Scrivi "Lunghette esaminate : " & nTotLunghette & " Valide : " & collLunghette.count
        Scrivi "Sorte               : " & NomeSorte(Sorte)
        Scrivi "Ruote               : " & StringaRuote(aRuote)
        Scrivi
        Scrivi "Lunghette ordinate per incremento ritardo max",True,,vbYellow
        Call Scrivi
        If collLunghette.count > 0 Then
            Call OrdinaItemCollection(collLunghette,"IncrRitMax",,,- 1)
            For Each clsL In collLunghette
                Call Scrivi("Lunghetta : " & clsL.LunghettaString )
                Call Scrivi("Ritardo   : " & clsL.Ritardo)
                Call Scrivi("RitMax    : " & clsL.RitardoMax)
                Call Scrivi("Freq      : " & clsL.Frequenza)
                Call Scrivi("IncrRitMx : " & clsL.IncrRitMax)
                Call clsL.DisegnaGraficoIncrRitMax
            Next
        Else
            Scrivi "Nessuna lunghetta rispetta le condizioni"
            Scrivi "Lunghette esaminate " & nTotLunghette
        End If
    End If
End Sub
 

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