Novità

Legend - NUOVA MISSIONE

  • Creatore Discussione Creatore Discussione LuigiB
  • Data di inizio Data di inizio
Ciao ragazzi che i numeri siano ordinati oppure no non ha nessuna importanza ai fini dell algoritmo per la creazionecdei virtuali.
 
Bravo Legend , vedo che metti a frutto le cose che hai gia appreso .. molto bene ! la tua funzione è anche meglio di quella che avevo fatto io , nel senso che il controllo sulle doppie non lo facevo in quanto mi sono affidato al fatto che in classe 5 o sup eriore la possibilita di doppione è uguale a quella di fare una cinquina secca ..comunque bene il controllo che hai fatto ci sta ,
solo che il codice non è ancora completo perche anche se non te lo avevo detto (ma te lo dico ora )qualla funzione che alimenta il vettore con le chiavi non deve fare solo quello ,, avevamo detto che una delle necessita da implementare era quella di poter continuare ad aggiornare archivi gia creati, cosa che non sarebbe possibile se ogni volta ricreiamo le chiavi ..ti sarà certamente ciaro che ad oogni nuova estrazione dell'archivio reale noi dobbiamo mettere la corrispettiva negli archivi virtuali , e per farlo senza correre il rischio di sparare numeri a caso è necessario conoscere le chiavi usate la volta precedente per la generazione degli archivi, dato che erano prodotte in modo casuale la cosa sarebbe impossibile ricalcolandole .. come si risolve questo problema ? Ovviamente salvando le chiavi in un file , già ma il nostro script puo creare un numero indefinito di archivi virtuali , con classi e chiavi diverse o che partono da estrazioni diverse , che ne so io potrei dire fai 50 archivi virtuali che partono dalla 3950 e costruiscili con chiavi di classe 7 (a proposito aumenta la dimensione massima per la classe portala a 20 è ininfluente ma fia cosi lo stesso) , potrei contemporanemete voler produrre altri archivi con altri valori.
Quindi apurato che le chiavi le dobbiamo scrivere in un file ci rendiamo subito conto che il nome del file deve essere parlante e univoco in modo da poter gestire varie tipologie di archivi.

Quindi come va implementata ancora la nostrafunzione ?

per prima cosa deve costruire un nome di file "parlante" , (questo file lo potrai salvare nello stesso path degli archivi) vedere se il file esiste. Se il file esiste leggere le chiavi dal file , se non esiste
creare le chiavi coe hai fatto e salvarle nel file.

tutto chiaro ?
 
Ciao Luigi ;)
appena letto
stavo scrivendo un altro script;)
dopo cena provo a scrivere il nuovo codice....
mi sto divertendo
 
a proposito del controllo che fai sui doppi puoi farlo con meno codice e senza la gestione dell'errore usando la funzione AddItemColl presente dalla versione 1.5.70 , inoltre se non ce l'hai devi comunque mettere l'ltima versioen disponibile perche senno quello che vogliamo fare alla fine non funziona in quanto dipende da una nuova istruzione implementata che poi vedremo ,,
 
ciao Luigi ho l'ultima versione 1.5.71
ho cercato di utilizzare additemCol
spero di aver fatto bene , altrimenti indicami come utilizzarla.
nell help manca come utilizzare sceglirange con i vari archivi
Domandone
Noi gli archivi li dobbiamo creare una volta come quelli del plug in o possiamo crearli tante volte e rifare la statistica al volo ogni volta?
Quello che non sto riuscendo a fare e ogni volta che creo la directory i sistemi si accodano non si sovrascrivono
forse utilizzo male elimina file?
ecco il code
Codice:
Option Explicit
Sub Main
    Dim idClasse,idArc,i
    idClasse = GetClasse
    idArc = Int(InputBox("Quanti Archivi Vuoi Creare?","Numero Archivi",25))
    ReDim aKey(idArc)
    Call CreaArch(aKey,idClasse)
    For i = 1 To UBound(aKey)
        Scrivi Format2(i) & ") " & aKey(i)
    Next
End Sub
Sub CreaArch(aKey,idClasse)
    Dim Numeri
    Dim nTrov
    Dim i,sFile
    ReDim aNum(idClasse)
    Set Numeri = GetNewCollection
    nTrov = 0
    Do While nTrov < UBound(aKey)
        Call GetColonnaCasuale(idClasse,aNum)
        If AddItemColl(Numeri,"h",StringaNumeri(aNum,,True))Then
            nTrov = nTrov + 1
            aKey(nTrov) = StringaNumeri(aNum,,True)
        End If
    Loop
    ' ogni volta che la lancio non riesco ad eliminare le vecchie chiavi si accodano
    '  le chiavi le ottengo splittando il nome del file tra le parentesi
    Call EliminaFile(sFile)
    For i = 1 To UBound(aKey)
        sFile = CreaDirectory(GetDirectoryAppData & "ARCH_Virt_Enigma\Chiave_" & i & "(" & aKey(i) & ")")
    Next
End Sub
Function GetClasse
    Dim aClasse(15)
    Dim i
    For i = 0 To UBound(aClasse)
        aClasse(i) = i + 5
    Next
    GetClasse = ScegliOpzioneMenu(aClasse,0,"SelezionaClasseChiavi") + 5
End Function
l'array l'ho scritto nel titolo è sbagliato ?
in teoria li dentro dovremmo inserire l'archivio.
Ciao e notte a domani;)
 
Ultima modifica:
Ciao Legend...purtroppo non va bene...ti avevo detto che la prima cosa da fare era costruire il nome del file dove scriveremo le chiavi successivamente verificare se il file esiste oppure no. Se esiste lo apri e leggi da li le chiavi se non esiste crei le chiavi e crei il file. Non c e bisogno di elimonare niente ..anzi dimmi un po come creeresti tu il nome per il file dove scriveremo le chiavi ..cosi come lo hai fatto non va bene...ciao
 
Ciao luigi Ho fatto passo passo ma non riesco sto aprendo tante di quelle cartelle e le cancello
Sperando di non rovinare spaziometria.
Mu spiace ma qui ho bisogno di aiuto:(
 
ok , questo è il codice dello script con tutte le implementazioni fatte fin'ora , è un po' diverso dal tuo la logica è la stessa , volendo puoi portare avanti il tuo confrontandolo con quello messo da me .

ciao


Codice:
Option Explicit


Sub Main
    Dim aKey ' array delle chiavi per creare gli archivi virtuali
    Dim nQArchivi ' quantita degli archivi da creare
    Dim nEstrIni ' estrazione dalla quale iniziare a creare le corrispondenti virtuali
    Dim nClasseChiave ' classe per la chiave degli archivi
    Dim sFileChiavi ' file che memorizza le chiavi per gli n archivi virtuali
    Dim aEstAR ' matrice estrazioni archivio reale (Tot,Ruota,Pos)
    Dim sDirArcVirt ' directory dove vengono creati gli archivi virtuali
    
    nQArchivi = ScegliQuantitaArchivi
    nClasseChiave = ScegliClasse
    nEstrIni = ScegliInizio
    sDirArcVirt = GetDirectoryAppData & "ArcVirtEnigma\"
    
    If VerificaCoerenza(nQArchivi,nClasseChiave,nEstrIni) Then
        ' creo la directry dove salvo gli archivi
        If CreaDirectory(sDirArcVirt) Then
            ' legge le estrazioni dell'archivio reale e le mette in memoria
            If AlimentaMatriceEst(aEstAR) Then
                ' inizializza le chiavi per la creazione dell'archivio virtuale
                Call InitChiavi(aKey,nQArchivi,nClasseChiave,sDirArcVirt,nEstrIni)
            
                
            End If
        End If
    End If
End Sub
Function VerificaCoerenza(nQArchivi,nClasseChiave,nEstrIni)
    Dim sMsg
    If nQArchivi <= 0 Then sMsg = "Specificare la quantita di archivi da creare"
    If nClasseChiave <= 4 Then sMsg = "Specificare la classe per le chiavi di generazione"
    If nEstrIni <= 0 Then sMsg = "Specificare l'estrazione di partenza per la generazione degli archivi"
    
    If sMsg <> "" Then
        MsgBox sMsg,vbCritical
    Else
        VerificaCoerenza = True
    End If
End Function
Function ScegliInizio()
    ReDim aV(EstrazioniArchivio)
    Dim k
    For k = 1 To UBound(aV)
        aV(k) = GetInfoEstrazione(k)
    Next
    ScegliInizio = ScegliOpzioneMenu(aV,1,"Inizio archivio virtuale")
End Function
Function ScegliClasse
    ReDim aV(16)
    Dim k
    For k = 5 To 20
        aV(k - 4) = k
    Next
    ScegliClasse =(ScegliOpzioneMenu(aV,1,"Classe chiavi di generazione")) + 4
End Function
Function ScegliQuantitaArchivi
    ScegliQuantitaArchivi= Int(InputBox("Quanti archivi virtuali creare ?","Quantita archivi virtuali","25"))
End Function
Function AlimentaMatriceEst(aEst)
    ' alimenta la matrice con tutte le estrazioni dell'archivio reale
    Dim k,r,e,nTot
    nTot = EstrazioniArchivio
    ReDim aEst(nTot,11,5)
    For k = 1 To nTot
        ReDim aNumEst(0)
        Call GetEstrazioneCompleta(k,aNumEst)
        aEst(k,0,0) = DataEstrazione(k,,,"/") & "-" & IndiceAnnuale(k)
        For r = 1 To 11
            For e = 1 To 5
                aEst(k,r,e) = aNumEst(r,e)
            Next
        Next
    Next
    AlimentaMatriceEst = nTot > 0
End Function
Function GetFileCfgArchivio(sDirArc,nIdEstrIni,nClasse,nQArc)
    GetFileCfgArchivio = sDirArc & "CFG_" & nIdEstrIni & "_" & nClasse & "_" & nQArc & ".dat"
End Function


Sub InitChiavi(aKey,nQ,nLenChiave,sDirArc,nIdEstrIni)
    ' inizializza le chiavi per creeare gli archivi virtuali
    ' le chiavi vengono prima cercate nel file delle chiavi
    ' se questo non esiste le chiavi vengono create daccapo
    ' e verra scritto il file in modo datrovarle la prossima volta
    Dim k,coll,sTmpCol
    Dim sFileChiavi
    sFileChiavi = GetFileCfgArchivio(sDirArc,nIdEstrIni,nLenChiave,nQ)
    ReDim aKey(nQ)
    If FileEsistente(sFileChiavi) Then
        ReDim aRighe(0)
        Call LeggiRigheFileDiTesto(sFileChiavi,aRighe)
        For k = 0 To UBound(aRighe)
            aKey(k + 1) = aRighe(k)
        Next
    Else
        Set coll = GetNewCollection
        For k = 1 To nQ
            ReDim aCol(0)
            Call GetColonnaCasuale(nLenChiave,aCol)
            sTmpCol = StringaNumeri(aCol)
            Do While AddItemColl(coll,sTmpCol,"k" & sTmpCol) = False
                Call GetColonnaCasuale(nLenChiave,aCol)
                sTmpCol = StringaNumeri(aCol)
            Loop
            aKey(k) = sTmpCol
        Next
        Set coll = Nothing
        For k = 1 To UBound(aKey)
            Call ScriviFile(sFileChiavi,aKey(k),False)
        Next
        Call CloseAllFileHandle
    End If
End Sub
 
ciao luigi, mi sono allineato al tuo script
onestamente non ne sarei venuto neanche le conoscevo le funzioni che hai utlizzato
ciao a dopo per i nuovi compiti
buona cena a tutti;)
 
ok , le successive implemetazioni consentiranno di creare effettivamente gli archivi , ti riporto la sub main con la chiamata ad una nuova funzione da scrivere , cosi vedi i parametri disponibili e ti regoli per implemetarla

Codice:
Sub Main
    Dim aKey ' array delle chiavi per creare gli archivi virtuali
    Dim nQArchivi ' quantita degli archivi da creare
    Dim nEstrIni ' estrazione dalla quale iniziare a creare le corrispondenti virtuali
    Dim nClasseChiave ' classe per la chiave degli archivi
    Dim sFileChiavi ' file che memorizza le chiavi per gli n archivi virtuali
    Dim aEstAR ' matrice estrazioni archivio reale (Tot,Ruota,Pos)
    Dim sDirArcVirt ' directory dove vengono creati gli archivi virtuali
    Dim nQDaProc ' quantita di combinazioni da processare di quelle tornate dl metodo
    nQDaProc = 3 ' le prime tre combinazioni tornate dal metodo
    nQArchivi = GetQuantitaArchivi
    nClasseChiave = ScegliClasse
    nEstrIni = ScegliInizio
    sDirArcVirt = GetDirectoryAppData & "ArcVirtEnigma\"
    
    If VerificaCoerenza(nQArchivi,nClasseChiave,nEstrIni) Then
        ' creo la directry dove salvo gli archivi
        If CreaDirectory(sDirArcVirt) Then
            ' legge le estrazioni dell'archivio reale e le mette in memoria
            If AlimentaMatriceEst(aEstAR) Then
                ' inizializza le chiavi per la creazione dell'archivio virtuale
                Call InitChiavi(aKey,nQArchivi,nClasseChiave,sDirArcVirt,nEstrIni)
            
               [COLOR=#FF0000] Call CreaArchiviVirtuali(aKey,nQArchivi[/COLOR] [COLOR=#FF0000],nEstrIni,aEstAR,EstrazioniArchivio,sDirArcVirt)[/COLOR]
                
            End If
        End If
    End If
End Sub


dovresti implemetare la suddetta routine , analizziamo cosa deve fare e superiamo i problemi uno alla volta

1) deve creare tanti archivi quanti sono gli elementi dell'array aKey ovvero del valore passato in nQArchivi

quindi bisogna innanzi tutto fare un ciclo
all'interno del ciclo bisogna costruire prima di tutto un nome di file univoco per salvare l'archivio
un po' come abbiamo fatto con il fle che memorizzava le chiavi , solo che questa volta nel nome parlante va aggiunto anche il numero dell'archivio oltre a tutte le altre cose presenti nell'altro nome file,
Quindi vedi un po come fare , per ora vorrei vedere un ciclo for e all'interno la costruzione di un path valido per il file .. non fare niente di piu
 
le funzioni di spaziometria non c'entrano niente , la stessa idea si puo implementare in altri linguaggi.
se io creo un semplice archivio casuale e poi su questo archivio vedo che un esratto a ruota ridtarda che ne so 400 estrazioni e lo voglio giocare come faccio a sapere che numero devo giocare sul gioco del lotto ? Ebben Severo ha legato i numeri dell'archivio reale a quelli dell'archivio virtuale , cosi faro pure io ... forse non ti sono tanto chiari i 3 punti che avevo enunciato all'inizio,
Ripeto comunque che si tratta di "stonzate grosse come una casa" quindi la polemica è fuori luogo gia solo per questo .. lo scopo è fare fare un altro esercizio a legend che ci tiene tanto ad imparare a farli.
 
ciao luigi ci provo;)
Grazie per gli esercizi ,cmq sono sicuro che non sono l unico ad imparare stai seminando in un campo grandissimo,e vedrai moltissimi risultati;)
a dopo
 
le chiavi possono essere prodotte random , impostate a discrezione dell'utente o perfino essere inserite grazie allo sviluppo di un sistema sia di combinazioni che di permutazioni in definitiva non hanno alcuna importanza , quello che ha importanza è che l'algoritmo produca sempre valori di versi a parità dello stesso valore in chiaro e che cio possa essere reversibile proprio come gli algoritmi di criptazione.
Per creare gli archivi faremo la stessa cosa della funzione che cripta i dati quindi otterrremo dei nuovi archivi mascherando i numeri dell'archivio reale con i numeri presi dalle chiavi , proprio come se lo stessimo crittografando , l'archivio virtuale risultera tale che ad esempio dove nell'archivo reale compare il numero uno in quello virtuale potrebbe comparire sempre un numero diverso (cosi per gli altri numeri) che poi è possibile riottenere con la formula inversa ovvero decrittando il numero mascherato , quindi se trovo un numero virtuale in grave ritardo o evidenziato da un qualsivoglia metodo per sapere quale numero giocare al lotto si adopera la formula inversa , niente di speciale e concettualmente simile al metodo di Severo.
Con il codice che avevi postato tu mi sembra proprio che si veniva a creare un archivio casuale senza nessun legame ai numeri reali .. forse quel tipo di archivi è utile per studiare e comparare le statistiche ma non per fare previsioni sull'archivio reale , intendiamoci niente serve per fare ste famose previsioni ..possiamo far finta che serva se ragioniamo sotto un contesto logico delimitato (anche se non vero) da paletti e in questo perimetro come ti dicevo è necessario legare i numeri veri a quelli virtuali senno la previsione non si puo fare
Sempre rimanendo nell'ottica che questi sistemi possano funzionare si introdurra poi il dscorso sulle convergenze .. ripeto ancora una volta che questo è un esercizio per legend se qualcuno poi lo considerasse utile tanto meglio .. non è un nuovo e rivoluzionario metodo ne per vincere ne per creare archivi virtuali .. è un metodo come un altro.
 
ah se cosi ok , io ho visto il codice che hai postato e mi è sembrato che creasse un archivio casuale in piu con l'inconveniente di dover verificare i doppi.
Con quest'alro metodo che stiamo proponendo in questo script il problema dei doppi ad esempio non sussiste , comunque il valore di questo thread non è nel metodo con cui creimao i virtuali , un metodo vale l'altro se rispetta le regole preposte il valore è nello script inteso come implemetazione di codice , è anche una dimostrazone di cio che si puo fare con spaziometria , quando avremo finito di creare gli archivi virtuali implementeremo la possibilita di scegliere a runtime un qualsivoglia altro script e testarlo su tutti gli archivi.
 
ciao luigi
costruito solo la path ,ma se la scrivo nel ciclo for non lo lancia tante volte?
questa parte è dura for me
a dopo spero che la tua pazienza sia sempre tanta;)
Codice:
terrible:(
 
Ultima modifica:
ok legend la logica c'è .. domani si vede il resto poi ti rifai comunque alla funzione fatta da me.
Non devi dare un estensione csv perche noi scriveremo un file nel formato della base dati di spaziometria ..dai .dat.. comunque poi vedrai il mio codice e di spieghero le cose nuove da fare.

per rispondere a mirapep anche con questo algoritmo si possono creare perfino miliardi di archivi .. se pensi che solo utilizzando le chiavi di classe 5 se ne possono produrre 92 milioni ,, senza contare che se facciamo le permutazioni il numero diventa esponenziale questo a livello teorico ovviamente .. manca la capacità di calcolo ..poi considera che lo scopo eè analizzare un altro script quindi quando produrremo una cinquantina o un centinaio di archivi sarà gia abbastanza .. il vbscript è interpretato e non brilla per velocità , manco il vb6 va bene si dovrebebro usare altri linguaggi o sfruttando la presenza di multicore con il threading oppure con linguaggi il cui compilatore produca codice piu efficiente,
.
 

Ultima estrazione Lotto

  • Estrazione del lotto
    venerdì 24 gennaio 2025
    Bari
    67
    35
    46
    60
    43
    Cagliari
    09
    24
    58
    03
    62
    Firenze
    52
    68
    17
    40
    80
    Genova
    58
    85
    12
    49
    52
    Milano
    87
    04
    59
    54
    52
    Napoli
    32
    90
    61
    22
    23
    Palermo
    65
    14
    17
    75
    60
    Roma
    61
    68
    64
    09
    19
    Torino
    57
    19
    08
    01
    78
    Venezia
    90
    16
    66
    18
    50
    Nazionale
    57
    56
    33
    25
    38
    Estrazione Simbolotto
    Bari
    19
    23
    25
    34
    20
Indietro
Alto