Option Explicit
Sub Main
' script main by lottotom75
Dim Ini
Dim estrazioneprogressivaprincipale
Dim quantestrazioniverificare
Ini = EstrazioneIni
quantestrazioniverificare = CInt(InputBox("quante estrazioni verificare?",,3))
Dim Inizioverifica
Inizioverifica = EstrazioneFin - quantestrazioniverificare
Dim fineverifica
fineverifica = EstrazioneFin
Scrivi
Scrivi "Range temporale analizzato e verificato: dal " & GetInfoEstrazione(Inizioverifica) & " al " & GetInfoEstrazione(fineverifica)
Scrivi "Numero complessivo delle ultime estrazione esaminate: " & fineverifica - Inizioverifica
Scrivi "Estrazione di partenza per tutte le analisi effettuate " & GetInfoEstrazione(Ini)
Scrivi
For estrazioneprogressivaprincipale = Inizioverifica To fineverifica
Call Step0
Scrivi
Scrivi "<font color=red size=3>estrazione esaminata " & GetInfoEstrazione(estrazioneprogressivaprincipale) & "</font>"
Scrivi
Call Step1(estrazioneprogressivaprincipale)
Dim filestep3
filestep3 = "step3.txt"
Dim filestep3pathfull
filestep3pathfull = ".\step3.txt"
Dim k
Dim nr
If FileEsistente(filestep3pathfull) Then
Call Messaggio("Lettura file di testo da file step3")
ReDim aRighe(0)
Call LeggiRigheFileDiTesto(filestep3pathfull,aRighe)
For k = 0 To UBound(aRighe)
If aRighe(k) <> "" Then
Call Replace(StringaNumeri(aRighe(k)),".","",1)
Call SplitByChar(aRighe(k),".",nr)
Dim vettorenumeristep1pulitodaipunti
Dim stringapulita
Dim Stringadapulire
Stringadapulire = StringaNumeri(nr)
Dim lenght
lenght = Len(Stringadapulire)
Dim captured_string
captured_string = Mid(Stringadapulire,2,lenght)'left(stringapulita)
Dim lenght2
lenght2 = Len(captured_string)
Dim captured_string2
captured_string2 = Mid(captured_string,1,lenght2 - 1)
Call SplitByChar(captured_string2,".",vettorenumeristep1pulitodaipunti)
End If
Next
'End If
End If
Next ' x range temporale di verifica
End Sub
' script 0 by lottotom75
Function Step0
Dim fileStep1
Dim fileStep2
Dim fileStep3
Dim fileStep4
Dim fileStep5
fileStep1 = ".\step1.txt"
fileStep2 = ".\step2.txt"
fileStep3 = ".\step3.txt"
fileStep4 = ".\step4.txt"
fileStep5 = ".\step5.txt"
If FileEsistente(fileStep1) Then
Call EliminaFile(fileStep1)
End If
If FileEsistente(fileStep2) Then
Call EliminaFile(fileStep2)
End If
If FileEsistente(fileStep3) Then
Call EliminaFile(fileStep3)
End If
If FileEsistente(fileStep4) Then
Call EliminaFile(fileStep4)
End If
If FileEsistente(fileStep5) Then
Call EliminaFile(fileStep5)
End If
End Function
' script 1 by lottotom75
Function Step1(estrazioneprogressivaprincipale)
Dim IdEstr,ncs
Dim E,qClp,nColpo,Esi
qClp = colpidiverifica '18
ReDim aClp(qClp)
For E = 1 To colpidiverifica ' 18
aClp(E) = 0
Next
ncs = 0
E = 0
Dim nSorte,aRuote,Ini,fin,sMsg,nMoltip,nTrov,nNumSel
Dim nCicloTeo,nRitMax,nRitMin,nClasseLunghetta,nRuoteSel,nLunghetteDaTrov,i2,ccColonna,ClasseFin
Dim TimeStart
Dim k,CollComb,cColonna
Dim aN
Dim TipoAlgo
Dim RetRit,RetRitMax,RetIncrRitMax,RetFrq
Dim nSuperficialita
Dim vettorexverifica
Dim sortediverifica,colpidiverifica,esitoverifica,estratti,idestrazioneuscita
Dim Entroilcolpo
Dim casipos
Dim casineg
Dim casiatt
Dim contaestrazioni
Dim colpomassimo
Dim colpirimanentirispettocolpomassimo
Dim colpirimanentirispettocolpidiverifica
Dim numerocasiconcolpirimanentirispettocolpomassimonegativi
Dim colpirimanentiminimi
Dim Formazioneconcolpirimanentiminimi
Dim ruotaconformazioneconcolpirimamentiminimi
Dim colpidiverificainiziali
Dim Valorenegativomassimodicolpirimanentirispettocolpomassimo
Valorenegativomassimodicolpirimanentirispettocolpomassimo = 0
Dim Formazioneconvaloremassimonegativodicolpirestantirispettocolpomassimo
Dim raminvoluto
Dim ramaxvoluto
Dim colpomaxrelativo
Dim colpomaxrelativoaicrtnegativi
Dim filereportxcollimanzeenonsolo
filereportxcollimanzeenonsolo = ".\step1.txt"
Call Scrivi
Call Scrivi("Elaborazione eseguita con archivio lotto aggiornato al: " & giorno(EstrazioneFin) & "-" & Mese(EstrazioneFin) & "-" & Anno(EstrazioneFin))
Call Scrivi
nTrov = 0
aN = Array(0,2,4,5,6,7,10,11,13,15,16,17,18,19,20,21,22,23,25,26,27,28,29,31,32,33,35,36,37,38,39,40,42,43,44,45,46,47,49,50,51,52,53,54,55,56,57,58,60,61,62,64,65,66,69,70,72,73,74,75,77,78,80,81,82,85,86,87,89,90)
nRuoteSel = 1 : ReDim aRuote(1)
Dim ru
nSorte = SelEsito' ScegliEsito 'scegliere 1
nClasseLunghetta = CInt(InputBox("Scegli classe lunghetta di partenza",,UBound(aN) - 3)) 'UBound(aN) - 2)) ' classe di partenza effettiva spesso mlto diversa dalla classe della formazione base di partenza...
ClasseFin = CInt(InputBox("Scegli classe lunghetta finale",,nClasseLunghetta - 3))' nClasseLunghetta - 2)) 'nClasseLunghetta - 2))
sortediverifica = CInt(InputBox("sorte di verifica",,2))
Dim numeroestrazionidaverificare
numeroestrazionidaverificare = CInt(InputBox("numero estrazioni da verificare",,100))' 0100))
colpidiverifica = CInt(InputBox("colpi di verifica",,1)) 'numeroestrazionidaverificare - 2))' numeroestrazionidaverificare - 2))
Dim colpirimanentiminimiottimali
colpirimanentiminimiottimali = CInt(InputBox("colpi rimanenti minimi ottimali",,3))
raminvoluto = CInt(InputBox("ritardo minimo",,0))
ramaxvoluto = CInt(InputBox("ritardo massimo",,estrazioneprogressivaprincipale))'EstrazioneFin))
Dim iterazionivolute
Dim iterazioneprogressiva
iterazionivolute = CInt(InputBox("iterazioni volute",,1)) ' 10))
colpidiverificainiziali = colpidiverifica
TipoAlgo = 0
nSuperficialita = 0
fin = estrazioneprogressivaprincipale 'EstrazioneFin
colpirimanentiminimi = fin
Dim estrazioneprogressiva
Dim Inizioverifica
Inizioverifica = fin - numeroestrazionidaverificare
For ru = 12 To 12
aRuote(1) = ru
For iterazioneprogressiva = 1 To iterazionivolute
For estrazioneprogressiva = Inizioverifica To fin '+1
contaestrazioni = contaestrazioni + 1
nLunghetteDaTrov = 1 ' Int(InputBox("Lunghette da trovare","Quantità lunghette",10))
ReDim Preserve aRuote(nRuoteSel)
nCicloTeo = CicloTeorico(nClasseLunghetta,nSorte,UBound(aRuote))
nMoltip = 8
If Ini <= 0 Then Ini = 1
TimeStart = Timer
Call GetLunghettePiuRitardate(aN,aRuote,nClasseLunghetta,nSorte,CollComb,EstrazioneIni,estrazioneprogressiva,nRitMin,nRitMax,nLunghetteDaTrov,TipoAlgo,nSuperficialita)
Call OrdinaItemCollection(CollComb,"Ritardo",,,- 1)
For i2 = nClasseLunghetta To ClasseFin Step - 1
For Each cColonna In CollComb
Call GetLunghettePiuRitardate(cColonna.aNum,aRuote,i2,nSorte,CollComb,EstrazioneIni,estrazioneprogressiva,nRitMin,nRitMax,nLunghetteDaTrov,TipoAlgo,nSuperficialita)
For Each ccColonna In CollComb
Call StatisticaFormazioneTurbo(ccColonna.aNum,aRuote,nSorte,RetRit,RetRitMax,RetIncrRitMax,RetFrq,EstrazioneIni,estrazioneprogressiva)
If i2 = ClasseFin And RetRit >= raminvoluto And RetRitMax <= ramaxvoluto Then 'raminvoluto Then
Call SplitByChar("." & ccColonna.GetStringaNum & ".",".",vettorexverifica)
Call VerificaEsitoTurbo(vettorexverifica,aRuote,estrazioneprogressiva + 1,sortediverifica,colpidiverifica,,esitoverifica,Entroilcolpo,estratti,idestrazioneuscita)
If esitoverifica <> "" Then
Scrivi esitoverifica & " " & estratti & " Colpo=" & Entroilcolpo
Else
Scrivi
End If
If esitoverifica <> "" Then
casipos = casipos + 1
If Entroilcolpo > colpomassimo Then
colpomassimo = Entroilcolpo
End If
Else
colpirimanentirispettocolpidiverifica = colpidiverifica -(fin - estrazioneprogressiva)
colpirimanentirispettocolpomassimo = colpomassimo -(fin - estrazioneprogressiva)
If colpirimanentirispettocolpomassimo < 0 And colpirimanentirispettocolpomassimo <= colpirimanentirispettocolpomassimo Then
Valorenegativomassimodicolpirimanentirispettocolpomassimo = colpirimanentirispettocolpomassimo
Formazioneconvaloremassimonegativodicolpirestantirispettocolpomassimo = StringaNumeri(vettorexverifica)
colpomaxrelativoaicrtnegativi = colpomassimo
numeroestrazionidaverificare = numeroestrazionidaverificare + 10
colpirimanentirispettocolpidiverifica = EstrazioneFin
colpirimanentirispettocolpomassimo = EstrazioneFin
casiatt = 0
casipos = 0
casineg = 0
colpomassimo = 0
colpirimanentiminimi = EstrazioneFin
Formazioneconcolpirimanentiminimi = ""
colpomaxrelativo = 0
Dim PAUSE
For PAUSE = 1 To 1
Call Messaggio(SiglaRuota(ru) & " n. " & contaestrazioni & " di " & numeroestrazionidaverificare & " tot " & " c+ " & casipos & " c- " & casineg & " casia " & casiatt & " clpmax " & colpomassimo & " crtmin " & colpirimanentiminimi & " sdr " & nSorte & " sdv " & sortediverifica & " it " & iterazioneprogressiva)
Next
End If
If colpirimanentirispettocolpidiverifica < 0 Then
casineg = casineg + 1
colpidiverifica = colpidiverifica + 1
Else
casiatt = casiatt + 1
If casineg = 0 Then
filereportxcollimanzeenonsolo = ".\step1.txt"
Call ScriviFile(filereportxcollimanzeenonsolo,StringaNumeri(vettorexverifica))
Call CloseFileHandle(filereportxcollimanzeenonsolo)
End If
If colpirimanentirispettocolpidiverifica < colpirimanentiminimi And colpirimanentirispettocolpidiverifica > 0 Then
colpirimanentiminimi = colpirimanentirispettocolpidiverifica
Formazioneconcolpirimanentiminimi = StringaNumeri(vettorexverifica)
colpomaxrelativo = colpomassimo
If colpirimanentirispettocolpidiverifica <= colpirimanentiminimiottimali Then
End If
For PAUSE = 1 To 1
Call Messaggio("es. " & estrazioneprogressiva & " n. " & contaestrazioni & " di " & numeroestrazionidaverificare & " tot " & " c+ " & casipos & " c- " & casineg & " casia " & casiatt & " clpmax " & colpomassimo & " crtmin " & colpirimanentiminimi & " sdr " & nSorte & " sdv " & sortediverifica & " it " & iterazioneprogressiva)
Next
ruotaconformazioneconcolpirimamentiminimi = NomeRuota(ru)
End If
If colpirimanentirispettocolpomassimo < colpirimanentiminimi And colpirimanentirispettocolpomassimo > 0 Then
colpirimanentiminimi = colpirimanentirispettocolpomassimo
Formazioneconcolpirimanentiminimi = StringaNumeri(vettorexverifica)
ruotaconformazioneconcolpirimamentiminimi = NomeRuota(ru)
colpomaxrelativo = colpomassimo
If colpirimanentirispettocolpidiverifica <= colpirimanentiminimiottimali Then
End If
For PAUSE = 1 To 1
Call Messaggio(SiglaRuota(ru) & " n. " & contaestrazioni & " di " & numeroestrazionidaverificare & " tot " & " c+ " & casipos & " c- " & casineg & " casia " & casiatt & " clpmax " & colpomassimo & " crtmin " & colpirimanentiminimi & " sdr " & nSorte & " sdv " & sortediverifica & " it " & iterazioneprogressiva)
Next
End If
If colpirimanentirispettocolpomassimo < 0 Then
numerocasiconcolpirimanentirispettocolpomassimonegativi = numerocasiconcolpirimanentirispettocolpomassimonegativi + 1
End If
End If
End If
End If ' x i2=classefin
Next
Next
Next
For PAUSE = 1 To 1000
Call Messaggio(SiglaRuota(ru) & " n. " & contaestrazioni & " di " & numeroestrazionidaverificare & " tot " & " c+ " & casipos & " c- " & casineg & " casia " & casiatt & " clpmax " & colpomassimo & " crtmin " & colpirimanentiminimi & " sdr " & nSorte & " sdv " & sortediverifica & " it " & iterazioneprogressiva)
Next
If ScriptInterrotto Then Exit For
Next ' x estrazioneprogressiva
contaestrazioni = 0
If ScriptInterrotto Then Exit For
Next ' x iterazione progressiva
If ScriptInterrotto Then Exit For
Next ' x ru
Scrivi
Scrivi "elaborazione con archivio lotto aggiornato al " & GetInfoEstrazione(EstrazioneFin)
Scrivi "range temporale di verifica da " & GetInfoEstrazione(Inizioverifica) & " a " & GetInfoEstrazione(fin) & " n. tot estrazioni " & numeroestrazionidaverificare
Scrivi "range temporale di analisi statistica da " & GetInfoEstrazione(Ini) & " a " & GetInfoEstrazione(fin)
Scrivi "gruppo numerico di base " & StringaNumeri(aN) & " di classe " & UBound(aN)
Scrivi "iterazioni impostate " & iterazionivolute
Scrivi "iterazione raggiunta " & iterazioneprogressiva
Scrivi "ruota analizzata " & StringaNumeri(aRuote)
Scrivi "classe iniziale " & nClasseLunghetta
Scrivi "classe finale " & ClasseFin
Scrivi "sorte di ricerca " & nSorte
Scrivi "sorte di verifica " & sortediverifica
Scrivi "valore di ritardo minimo " & raminvoluto
Scrivi "valore di ritardo massimo " & ramaxvoluto
Scrivi "colpi di verifica iniziali " & colpidiverificainiziali
Scrivi "colpi di verifica raggiunti " & colpidiverifica
Scrivi "colpi rimanenti minimi ottimali " & colpirimanentiminimiottimali
Scrivi "c+ " & casipos
Scrivi "c- " & casineg
Scrivi "ca " & casiatt
Scrivi "colpo massimo " & colpomassimo
Scrivi "colpi rimanenti minimi " & colpirimanentiminimi
Scrivi "colpo massimo relativo " & colpomaxrelativo
Scrivi "formazione con colpi rimanenti minimi " & Formazioneconcolpirimanentiminimi
Scrivi "ruota con formazione con colpi rimanenti minimi " & ruotaconformazioneconcolpirimamentiminimi
Scrivi "numero casi con colpi rimanenti rispetto colpo massimo negativi " & numerocasiconcolpirimanentirispettocolpomassimonegativi
Scrivi "valore negativo massimo di colpi relativi al colpo massimo " & Valorenegativomassimodicolpirimanentirispettocolpomassimo
Scrivi "formazione con valore massimo negativo di colpi relativi al colpo massimo " & Formazioneconvaloremassimonegativodicolpirestantirispettocolpomassimo
Scrivi "colpo massimo relativo ai colpi massimi negativi " & colpomaxrelativoaicrtnegativi
Scrivi
Scrivi "tempo di elaborazione " & TempoTrascorso
Scrivi
Scrivi "Report dettagliato del numero di colpi"
Scrivi
Dim filestep1
filestep1 = ".\step1.txt"
End Function
Function ScegliClassseLunghetta
Dim aVoci(30)
Dim k,i
For k = 2 To(2 - 1) + UBound(aVoci)
i = i + 1
aVoci(i) = k
Next
k = ScegliOpzioneMenu(aVoci,5,"Classe lunghetta")
ScegliClassseLunghetta = Int(aVoci(k))
End Function
Function SelRuote(aRuote)
Dim t,k,bTutte
bTutte = False
t = ScegliRuote(aRuote)
For k = 1 To t
If aRuote(k) = TT_ Then
bTutte = True
Exit For
End If
Next
If bTutte Then
ReDim aRuote(10)
For k = 1 To 10
aRuote(k) = k
Next
SelRuote = 10
Else
SelRuote = t
End If
End Function
Function FormattaSecondi(s)
Dim hh
Dim Mm
Dim Ss
Dim TimeStr
hh = s \ 3600
Mm =(s Mod 3600) \ 60
Ss = s -((hh * 3600) +(Mm * 60))
TimeStr = Format2(hh) & ":" & Format2(Mm) & ":" & Format2(Ss)
FormattaSecondi = TimeStr
End Function
Function SelEsito
Dim ret
Dim aVoci
aVoci = Array("","Estratto","Ambo","Terno","Quaterna","Cinquina")
ret = ScegliOpzioneMenu(aVoci,2," Analisi per Sorte di : ")
SelEsito = ret
End Function
Function SelRuota
Dim ret
Dim aVoci
aVoci = Array("","BARI","CAGLIARI","FIRENZE","GENOVA","MILANO","NAPOLI","PALERMO","ROMA","TORINO","VENEZIA","TUTTE","NAZIONALE")
ret = ScegliOpzioneMenu(aVoci,3," Analizza Ruota di : ")
SelRuota = ret
End Function
Function quanticolpi(E,qClp,aClp,vettorexverifica,aRuote,estrazioneprogressiva,sortediverifica,colpidiverifica,esitoverifica,entroilcolpo,estratti,idestrazioneuscita)
Call VerificaEsitoTurbo(vettorexverifica,aRuote,estrazioneprogressiva + 1,sortediverifica,colpidiverifica,,esitoverifica,entroilcolpo,estratti,idestrazioneuscita)
If esitoverifica <> "" Then
Scrivi esitoverifica & " " & estratti & " Colpo=" & entroilcolpo
aClp(entroilcolpo) = aClp(entroilcolpo) + 1
Else
Scrivi
End If
End Function