Option Explicit
Sub Main
'descrizione script + lunga
'iron bot di tipo progressivo per il rilevamento di classi con soddisfatto qualsiasi determinato filtro voluto (es. condizione abs)
'nessuna certezza per l'esito della formazione in output eventualmente rilevata solo poca probabilità
'configurato di base con gruppo nlt abs 80 x CsuTTdal 1871
'listato e ricerca by lotto_tom75
Dim k
Dim Classe
Dim aCol
ReDim aNum(90)
Dim i,i2
Dim nSorte,Fine,RetRit1,QuantitaNumeriScelti,aRuoteSel,RuoteSelezionate,RetRitMax,RetIncrRitMax,RetFreq,Inizio
Dim ColTot,aRetcol
Dim valoreInizioelaborazione,valorefineelaborazione
Dim ruota
Dim ff
Dim numerocolonne
Dim multiplocolonne
Dim numerocolonnerandomtotale
Dim ramassimotop
Dim ramassimostandard
Dim raminimostandard
Dim Incmaxdeciso
Dim puntidipartenzadasottrarre
Dim puntiriduzioneadognipassaggio
Dim grupponumericobaseiniziale
Dim diffdecisa
Dim quantestrazionidallafine
Dim filexanalisicollimanze
Dim Iniziorange
Dim counter
Dim casiesaminati
Dim casipositivi
Dim casinegativi
Dim casiattivi
Dim estrazionidaanalizzare
Dim quanteiterazioni
Dim contaiterazioni
Dim filenumericoiniziale
'Dim filenumericoiniziale
Dim aRuoteTmp
Dim sfile
Dim sFiles
Dim aLunghette
Dim sFiletxt
Dim contatore
Dim c,alunghetta
Dim partida
Dim Classefinale
Dim idestrazione
Dim sortediverifica
Dim esito
Dim entrocolpi
Dim alcolponumero
Dim estratti
Dim estrazionediuscita
Dim vettorediverifica
'gruppo Doc 80 abs x C su TT
grupponumericobaseiniziale = Array(0,01,02,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,57,58,59,61,62,63,65,66,67,68,69,70,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90)
filexanalisicollimanze = ".\filexanalisicollimanze.txt"
Iniziorange = EstrazioneIni ' qui si puo' cambiare ogni volta il parametro relativo
Fine = EstrazioneFin ' qui si puo' cambiare ogni volta il parametro relativo
quantestrazionidallafine = Fine - Iniziorange
counter = 0
casiesaminati = 0
casipositivi = 0
casinegativi = 0
casiattivi = 0
estrazionidaanalizzare = EstrazioneFin '0 ' 315 '220 '290 '360
quanteiterazioni = CInt(InputBox("Quante iterazioni vuoi effettuare per questa analisi?",,1)) ' 100))
Inizio = CInt(InputBox("Da quale estrazione vuoi partire per l'analisi?",,Iniziorange))
Fine = CInt(InputBox("Quale estrazione vuoi impostare come ultima di studio?",,Fine))
Classe = CInt(InputBox("QUALE GRUPPO NUMERICO ASSOLUTO O SEMI ASSOLUTO DI SVILUPPO",,UBound(grupponumericobaseiniziale) - 1)) '78)) 'provo a velocizzare ricerca facendola partire da una classe molto + ridotta rispetto la 73ina...
Classefinale = CInt(InputBox("QUALE CLASSE FINALE DI SVILUPPO",,5))
puntidipartenzadasottrarre = CInt(InputBox("DA QUANTI PUNTI PARTIRE IN MENO RISPETTO LA CLASSE DEL GRUPPO NUMERICO SCELTO",,1))
puntiriduzioneadognipassaggio = CInt(InputBox("QUANTI PUNTI RIDUZIONALI SOTTRARRE AD OGNI PASSAGGIO",,1))
nSorte = CInt(InputBox("QUALE SORTE DI RICERCA","sorte di ricerca",2))
ff = CInt(InputBox("QUANTE ESTRAZIONI DALLA FINE",,estrazionidaanalizzare)) 'quantestrazionidallafine + 1))
numerocolonne = CInt(InputBox("QUANTE COLONNE RANDOM ANALIZZARE (max 10000)",,100))
multiplocolonne = CInt(InputBox("FATTORE DI MOLTIPLICAZIONE COLONNE RANDOM (max 10000)",,1))
'diffdecisa = CInt(InputBox("Desideri una DIFF particolare <=? Se si indicala adesso",,0))
ramassimotop = CInt(InputBox("RITARDO MASSIMO TOP",,9000))
raminimostandard = CInt(InputBox("RITARDO MINIMO STANDARD",,0))
ramassimostandard = CInt(InputBox("RITARDO MASSIMO STANDARD",,ramassimotop))
Incmaxdeciso = CInt(InputBox("INCMAX DA CUI PARTIRE",,0))
Inizio = EstrazioneFin - ff
'cancello e ricreo il file x analisi collimanze
If FileEsistente(filexanalisicollimanze) Then
Call EliminaFile(filexanalisicollimanze)
End If
filexanalisicollimanze = ".\filexanalisicollimanze.txt"
' fine inizializzazione file collimanze
For contaiterazioni = 1 To quanteiterazioni
Dim sfilereportdinamico,Classedinamicaprogressiva
sfilereportdinamico = ".\risultanzadinamica.txt"
filenumericoiniziale = ".\risultanzadinamica.txt"
'cancello e ricreo il file numerico iniziale
If FileEsistente(filenumericoiniziale) Then
Call EliminaFile(filenumericoiniziale)
End If
filenumericoiniziale = ".\risultanzadinamica.txt"
Dim n
sfileclassedinamica = ".\classedinamica" & n & ".txt"
'
For n = 1 To 90
'
If FileEsistente(".\classedinamica" & n & ".txt") Then
Call EliminaFile(".\classedinamica" & n & ".txt")
End If
If ScriptInterrotto Then Exit For
Next
Call ScriviFile(filenumericoiniziale,StringaNumeri(grupponumericobaseiniziale))
Call CloseFileHandle(filenumericoiniziale)
numerocolonnerandomtotale = numerocolonne * multiplocolonne
valoreInizioelaborazione = 1
valorefineelaborazione = numerocolonnerandomtotale '...
ReDim aRuote(11) ' si considerano due ruote unite
aRuote(1) = BA_
aRuote(2) = CA_
aRuote(3) = FI_
aRuote(4) = GE_
aRuote(5) = MI_
aRuote(6) = NA_
aRuote(7) = PA_
aRuote(8) = RO_
aRuote(9) = TO_
aRuote(10) = VE_
aRuote(11) = NZ_
'aRuote(1) = NZ_
'aRuote(1) = aRuote
Call Messaggio("Lettura file di testo")
ReDim aRighe(0)
sFiletxt = ".\risultanzadinamica.txt"
LeggiRigheFileDiTesto sFiletxt,aRighe
For k = 0 To UBound(aRighe)
If aRighe(k) <> "" Then
ReDim aSelNum(0)
'Call SplitByChar("," & aRighe(k),",",aSelNum)
Call SplitByChar("." & aRighe(k),".",aNum)
End If
Next
sFiletxt = ".\risultanzadinamica.txt"
partida = Classe - puntidipartenzadasottrarre
'Classefinale = 36
Scrivi "Analizzatore lunghette desiderate di gruppo numerico desiderato",1,1,1,5,3
Scrivi "per sorte desiderata in quantità di colonne Random desiderate (max 100 mln)",1,1,1,5,3
Scrivi
Scrivi
'Scrivi "Analizzatore lunghette desiderate di gruppo numerico desiderato per sorte desiderata in quantità di colonne random desiderate (max 100 mln)"
Scrivi "By Lotto_tom75 - Numeri Lotto Team",1,1,1,4,2
Scrivi
Call Scrivi("Sviluppo Combinazioni del gruppo numerico assoluto o semi assoluto di classe " & Classe & " a partire dalla Classe ridotta " & partida)
Call Scrivi(" per la sorte di... " & NomeSorte(nSorte),1,1,2,4,4) ' size 5
Scrivi
Scrivi "Totale colonne elaborate: " & numerocolonnerandomtotale,0,0,1,4,5
Scrivi
'Scrivi ColoreTesto("0")
Scrivi "Totale estrazioni elaborate: " & ff,0,0,1,4,5
Scrivi
Scrivi
Scrivi "Estrazione inizio... " & DataEstrazione(Inizio) & " Estrazione fine... " & DataEstrazione(EstrazioneFin) '& " estrazione intermedia di analisi " & idestrazione
Scrivi
'Scrivi "Ruota Analizzata... " & NomeRuota(ruota),0,0,0,4,5
'Dim r
'Scrivi "Ruota/e Analizzata/e... " & SiglaRuota(aRuoteSel),0,0,0,4,5
For k = 1 To RuoteSelezionate
Call Scrivi("Scelta ruota " & NomeRuota(aRuote(k)) & " - " & SiglaRuota(aRuote(k)))
Next
Scrivi
Scrivi
Scrivi "RA massimo impostato con scrittura su file e alert... RA= " & ramassimotop
Scrivi
Scrivi "RA medio impostato con scrittura su file e output... RA= " & ramassimostandard
Scrivi
Scrivi "Incmax da cui partire... Incmax= " & Incmaxdeciso
Scrivi
Call Scrivi
Call Scrivi("Elaborazione con archivio lotto aggiornato al : " & giorno(EstrazioneFin) & "-" & Mese(EstrazioneFin) & "-" & Anno(EstrazioneFin))
Call Scrivi
For idestrazione = Inizio To Fine
For i2 = partida To Classefinale Step - puntiriduzioneadognipassaggio
'dopo la lettura del file txt devo svuotare anche il relativo vettore anum per caricarlo con i nuovi valori...
ReDim aNum(0)
Call Messaggio("Lettura file di testo")
ReDim aRighe(0)
'Call LeggiRigheFileDiTesto(sFile,aRighe)
sFiletxt = ".\risultanzadinamica.txt"
LeggiRigheFileDiTesto sFiletxt,aRighe
For k = 0 To UBound(aRighe)
If aRighe(k) <> "" Then
ReDim aSelNum(0)
'Call SplitByChar("," & aRighe(k),",",aSelNum)
Call SplitByChar("." & aRighe(k),".",aNum)
End If
Next
'fine svuotamente vettore aNum
For i = valoreInizioelaborazione To valorefineelaborazione
'For k = 1 To RuoteSelezionate
Dim NomeRuotaNome
If RuoteSelezionate > 1 Then
NomeRuotaNome = "ruote decise unite"
Else
NomeRuotaNome = SiglaRuota(aRuote(1)) '& SiglaRuota(aRuote(2))
End If
Call Messaggio("c" & i2 & " nr " & StringaNumeri(aRuote) & " s" & nSorte & " v " & counter & " " & Iniziorange & "-" & idestrazione & " rm " & raminimostandard & " es " & Fine - Inizio & " it " & contaiterazioni & " crt " & crt & " csi " & casiesaminati & " cs+ " & casipositivi & " cs- " & casinegativi & " csa " & casiattivi)
Call GetColonnaCasuale(i2,aRetcol,aNum)
Call StatisticaFormazioneTurbo(aRetcol,aRuote,nSorte,RetRit1,RetRitMax,RetIncrRitMax,RetFreq,Iniziorange,idestrazione)
Call AvanzamentoElab(1,valorefineelaborazione,i)
'Call Messaggio(" Colonna " & i)
Dim Diff
Diff = RetRitMax - RetRit1
'FILTRO ABASUL
If RetRit1 > 0 And RetRitMax > 0 Then
Dim datoabasul
datoabasul =(RetRit1/RetRitMax) * 100
End If
'fine filtro abasul
'If(RetRit1 >= raminimostandard And RetRit1 <= ramassimotop And RetRitMax <= ramassimotop And datoabasul >= 45 And datoabasul <= 75) Then 'Diff <= diffdecisa) Then 'And RetIncrRitMax = Incmaxdeciso
'If(RetRit1 >= raminimostandard And RetRit1 <= ramassimotop And RetRitMax <= ramassimotop And Diff = 0 And RetIncrRitMax = 0) Then 'Diff <= diffdecisa) Then 'And RetIncrRitMax = Incmaxdeciso
If(RetRit1 >= raminimostandard And RetRit1 <= ramassimotop And RetRitMax <= ramassimotop And Diff = 0 And RetIncrRitMax = 0) Then 'Diff <= diffdecisa) Then 'And RetIncrRitMax = Incmaxdeciso
'Scrivi
'Call Scrivi("PROVA OUTPUT SECONDO FILTRO ABASUL con sole formazioni con ra distante dal rispettivo rs x A in terzina tra il 45% e 75%")
'Call Scrivi("<font color=green>OK la formazione ha passato il filtro abasul per A in 3ina con valore di filtro: </font>" & datoabasul)
Call Scrivi("Ruota n. " & StringaNumeri(aRuote) & " Colonna: " & i & " " & StringaNumeri(aRetcol,,True) & " RA " & RetRit1 & " RS " & RetRitMax & " INCMAX " & RetIncrRitMax & " FQ " & RetFreq & " Diff " & Diff & " classe " & i2 & " sorte " & nSorte & " riga " & counter)
'
counter = counter + 1
Dim reportlunghettadoc
'
'Dim sfilereportdinamico,Classedinamicaprogressiva
sfilereportdinamico = ".\risultanzadinamica.txt"
Dim sfileclassedinamica
sfileclassedinamica = ".\classedinamica" '& i2 & ".txt"
reportlunghettadoc = StringaNumeri(aRetcol,,True)
'Classedinamicaprogressiva = reportlunghettadoc
'scrivi file
If FileEsistente(sfilereportdinamico) Then
Call EliminaFile(sfilereportdinamico)
End If
sfilereportdinamico = ".\risultanzadinamica.txt"
If FileEsistente(sfileclassedinamica) Then
Call EliminaFile(sfileclassedinamica)
End If
sfileclassedinamica = ".\classedinamica" & i2 & ".txt"
Call ScriviFile(sfilereportdinamico,reportlunghettadoc,False,True)
'Call ScriviFile(sfileclassedinamica,reportlunghettadoc,False,True)
Call CloseFileHandle(sfilereportdinamico)
Call CloseFileHandle(sfileclassedinamica)
'se la classe corrisponde all'ultima della ricerca scrivi la lunghetta dinamica relativa nel file x analisi collimanze...
'Dim filexanalisicollimanze
'filexanalisicollimanze = ".\filexanalisicollimanze.txt"
If i2 = Classefinale Or i2 = Classefinale + 1 Or i2 = Classefinale + 2 Or i2 = Classefinale + 3 Or i2 = Classefinale + 4 Or i2 = Classefinale + 5 Then
Call ScriviFile(filexanalisicollimanze,reportlunghettadoc,False,True)
Call CloseFileHandle(filexanalisicollimanze)
sortediverifica = 2
entrocolpi = 296 '270
Dim crt ' colpi restanti teorici
crt = entrocolpi -(EstrazioneFin - idestrazione)
Dim numerodicrtmaxvoluti
numerodicrtmaxvoluti = estrazionidaanalizzare - entrocolpi
Call SplitByChar(reportlunghettadoc,".",vettorediverifica)
Call VerificaEsito(vettorediverifica,aRuote,idestrazione + 1,sortediverifica,entrocolpi,,esito,alcolponumero,estratti,estrazionediuscita)
If esito <> "" Then
'Scrivi "<font color=green><strong>OK</strong></font>"
'Scrivi "Estratti " & estratti & " all'estrazione numero " & estrazionediuscita & " e al colpo numero " & alcolponumero & " sul numero totale di " & entrocolpi & " colpi"
''Call PlayWav("C:\silenzio.wav",1,"ok")
casipositivi = casipositivi + 1
Else
Call Scrivi("Ruota n. " & StringaNumeri(aRuote) & " Colonna: " & i & " " & StringaNumeri(aRetcol,,True) & " RA " & RetRit1 & " RS " & RetRitMax & " INCMAX " & RetIncrRitMax & " FQ " & RetFreq & " Diff " & Diff & " classe " & i2 & " sorte " & nSorte & " riga " & counter)
Scrivi "<font color=red><strong>NO non si è avuto alcun sfaldamento per adesso...</strong></font>"
'Call PlayWav("C:\silenzio.wav",1,"no") ' sulla ruota di " & NomeRuota(aRuote(1)))
If crt > 0 Then
casiattivi = casiattivi + 1
Else
casinegativi = casinegativi + 1
End If
'Dim crt ' colpi restanti teorici
'crt = entrocolpi - (EstrazioneFin - idestrazione)
Scrivi
Call Scrivi("<font color=green><strong>Colpi restanti teorici (CRT) : " & crt & "</strong></font>")
Scrivi
Call Scrivi("Tempo trascorso: " & TempoTrascorso)
Exit For
End If
End If
'reportlunghettadoc = "Ruota: " & SiglaRuota(aRuote(1)) & " Colonna: " & i & " " & StringaNumeri(aRetcol,,True) & " RA " & RetRit1 & " RS " & RetRitMax & " INCMAX " & RetIncrRitMax & " FQ " & RetFreq & " Diff " & Diff & " classe " & i2 & " sorte " & nSorte & " riga " & counter
Call Messaggio("T R O V A T A! alla riga " & i)
Exit For
End If
If ScriptInterrotto Then Exit For
Next ' x il numero di ricerche volute x ogni sotto classe esaminata
'counter=0
If ScriptInterrotto Then Exit For
'dopo la lettura del file txt devo svuotare anche il relativo vettore anum per caricarlo con i nuovi valori...
'ReDim aNum(0)
'fine svuotamente vettore aNum
If ScriptInterrotto Then Exit For
Next ' x i2
'dopo ogni estrazione esaminata è necessario eliminare e ricreare il file risultanzadinamica e ripopolarlo con la
'lunghetta absolute o gruppo numerico desiderati....
sfilereportdinamico = ".\risultanzadinamica.txt"
If FileEsistente(sfilereportdinamico) Then
Call EliminaFile(sfilereportdinamico)
End If
sfilereportdinamico = ".\risultanzadinamica.txt"
'gruppo Doc 80 abs x C su TT
grupponumericobaseiniziale = Array(0,01,02,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,57,58,59,61,62,63,65,66,67,68,69,70,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90)
Call ScriviFile(sfilereportdinamico,StringaNumeri(grupponumericobaseiniziale))
Call CloseFileHandle(sfilereportdinamico)
'fine rigenerazione fil txt risultanzadinamica di base
casiesaminati = casiesaminati + 1
If ScriptInterrotto Or crt >= numerodicrtmaxvoluti Then Exit For
Next ' x idestrazione
If ScriptInterrotto Or crt < 0 Then Exit For : Scrivi "<font color=red>necessario aumento dei colpi di ricerca o la rivisitazione della stessa</font>"
Next ' x iterazioni
End Sub
'---------------------------------------------------------------------------------------------------------------------------------------------------
Function ScegliFiletxt(sDir)
sDir = "./"
Dim i
ReDim aV(0)
Call ElencoFileInDirectory(sDir,aV,".txt")
i = ScegliOpzioneMenu(aV,,"Scegli il file txt desiderato")
'For i = 1 To UBound (aV)
'ScegliFiletxt = sDir & aV(i) & ".txt"
ScegliFiletxt = ".\risultanzadinamica.txt"
Call Scrivi("file" & i)
'Next
End Function
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