Option Explicit
Sub Main
' controllare dati di input e di output
' se si dovessero rilevare bugs segnalarli
' lo script è lungo l'errore puo essere dietro l'angolo
' l'algoritmo principe di rilevazione degli estratti è scritto da Joe
' script by I legend
' Lo script è a carattere statistico Cabalistico , ci rivela dei dati del passato ma nessuna certezza per il futuro.
' Lo script Rivela dei casi a seconda delle nostre ricerche di input e restituisce gli estratti presenti
' nelle estrazioni successive
'
' la tabella di default restituisce solo i valori con minor casi negativi, e che non siano già sortite nell'ultimo caso
' questo criterio di filtro si puo eliminare cancellando l'apice dalla riga
' If CInt(PrCi(X)) >= casoTro - nNegativi And Rit >= ColpiGiocati Then Call AddRigaTabella(aRis)
' togliere l' apice alla riga
' Call AddRigaTabella(aRis)
'
' Ripeto lo script Restituisce statistiche del passato pertanto non certezze, quelle non esistono
' l'unica certezza matematica è che il gioco ,(come tutti i giochi) favorisce il banco.
Dim PEU,UEU,iF_E1,iP_E1,iR_E1,sE1,sF_E1
Dim iF_E2,iP_E2,iR_E2,sE2,sF_E2
Dim iF_E3,iP_E3,iR_E3,sE3,sF_E3
Dim Ind_EspRic,Str_EspRic,risultatoespressione
Dim casoTro
Dim eE1,eE2,eE3 ' estrattosemplice
Dim cF_E1,cF_E2,cF_E3 ' CalcoloFunzioneEstratto
Dim risultatoEspressioneSto
Dim EstrR,idEstr,Ini,Fin
Dim aTitolo,K,z,y
Dim nColpi,nNegativi,RuG
Dim IniGioco,FinGioco,KK,C,PG,E,X
Dim ColpiGiocati,ColpiRestanti,R
ReDim PrCi(90),TmP(90)
If ImpostaParametri(PEU,UEU,iF_E1,iP_E1,iR_E1,sE1,sF_E1,iF_E2,iP_E2,iR_E2,sE2,sF_E2,iF_E3,iP_E3,iR_E3,sE3,sF_E3,Ind_EspRic,Str_EspRic,nColpi,nNegativi,RuG) = False Then
MsgBox "I Parametri inseriti non sono corretti",vbCritical
Exit Sub
End If
EstrR = UEU
eE1 = Estratto(EstrR,iR_E1,iP_E1)
eE2 = Estratto(EstrR,iR_E2,iP_E2)
eE3 = Estratto(EstrR,iR_E3,iP_E3)
cF_E1 = CalcFunPar(iF_E1,eE1) ' questa funzione restituisce il valore finale dell'estratto
cF_E2 = CalcFunPar(iF_E2,eE2) ' questa funzione restituisce il valore finale dell'estratto
cF_E3 = CalcFunPar(iF_E3,eE3) ' questa funzione restituisce il valore finale dell'estratto
risultatoespressione = EseguiCalcolo(Ind_EspRic,cF_E1,cF_E2,cF_E3)
If risultatoespressione = 0 Then
MsgBox "la formula scelta Restituisce zero"
Exit Sub
End If
MsgBox DataEstrazione(EstrR) & " ; " & Str_EspRic & " ; " & cF_E1 & " , " & cF_E2 & " , " & cF_E3 & _
" RangeRisultato= " & risultatoespressione
Ini = PEU
Fin = UEU
aTitolo = Array("","Estratto","CasiPos.")
InitTabella aTitolo,RGB(240,240,240),,3,vbBlack
ColpiGiocati = EstrazioneFin - EstrR
Scrivi " Data Cond. -- Estratti presenti nei casi : "
Scrivi
For idEstr = Ini To Fin
Messaggio "Sto Contando un Attimo Grazie :)" & casoTro
AvanzamentoElab Ini,Fin,idEstr
eE1 = Estratto(idEstr,iR_E1,iP_E1)
eE2 = Estratto(idEstr,iR_E2,iP_E2)
eE3 = Estratto(idEstr,iR_E3,iP_E3)
cF_E1 = CalcFunPar(iF_E1,eE1) ' questa funzione restituisce il valore finale dell'estratto
cF_E2 = CalcFunPar(iF_E2,eE2) ' questa funzione restituisce il valore finale dell'estratto
cF_E3 = CalcFunPar(iF_E3,eE3) ' questa funzione restituisce il valore finale dell'estratto
risultatoEspressioneSto = EseguiCalcolo(Ind_EspRic,cF_E1,cF_E2,cF_E3)
If risultatoEspressioneSto = risultatoespressione Then
casoTro = casoTro + 1 : Scrivi String(140,"=") & FormatSpace(casoTro,5,1),True
Scrivi "[" & idEstr & "] " & DataEstrazione(idEstr) & Space(3),True,False
IniGioco = idEstr + 1
FinGioco = idEstr + nColpi
If IniGioco <= EstrazioneFin Then 'Controllo validità iniziale del cicl'
If FinGioco > EstrazioneFin Then FinGioco = EstrazioneFin 'Controllo/limitazione lunghezza del ciclo.
Scrivi "[" & IniGioco & "]><[" & FinGioco & "] " & "[ " & SiglaRuota(RuG) & " ]"
KK = 0
ReDim TmP(90)
For C = IniGioco To FinGioco
KK = KK + 1
Scrivi FormatSpace(KK,7) & DataEstrazione(C) & Space(3),False,False
For PG = 1 To 5
E = Estratto(C,RuG,PG)
TmP(E) = True
Scrivi Format2(E) & Space(1),0,0
Next
Scrivi ""
Next
Else
Exit For
End If
Scrivi DataEstrazione(idEstr) & " ",1,False
Scrivi Format2(casoTro) & ") ",1,False
For X = 1 To 90
If TmP(X) = True Then PrCi(X) = PrCi(X) + 1 : Scrivi Format2(X) & " ",True,False
Next
Scrivi
End If
Next
For X = 1 To 90
ReDim aRis(2)
Call alimentaArray(aRis,X,CInt(PrCi(X)))
If CInt(PrCi(X)) >= casoTro - nNegativi Then Call AddRigaTabella(aRis)' mettere apice se non si vuole filtrare la colonna
'Call AddRigaTabella(aRis) ' togliere l'apice se non si vuole filtrare la colonna
Call SetColoreCella(1,RGB(237,252,237))
Call SetColoreCella(2,RGB(241,255,217))
Next
Call LanciaIntestazione(PEU,EstrR,Str_EspRic,cF_E1,cF_E2,cF_E3,risultatoespressione,casoTro,RuG,nColpi,nNegativi)
Call CreaTabellaOrdinabile
End Sub
Function ImpostaParametri(PEU,UEU,iF_E1,iP_E1,iR_E1,sE1,sF_E1,iF_E2,iP_E2,iR_E2,sE2,sF_E2,iF_E3,iP_E3,iR_E3,sE3,sF_E3,Ind_EspRic,Str_EspRic,nColpi,nNegativi,RuG)
Dim bRet
MsgBox "Sel Estrazione di ricerca,e, 3 EstrattiBase ",,"Metodo x calcolo Estratto semplice "
PEU = PrimaEstrazioneUtile(3914)
If PEU > 0 Then
UEU = UltimaEstrazioneUtile(3914)
If UEU > 0 Then
iF_E1 = IndFunPar
If iF_E1 > 0 Then
iP_E1 = ScegliPosizione
If iP_E1 > 0 Then
iR_E1 = ScegliRuota
If iR_E1 > 0 Then
sE1 = SiglaRuota(iR_E1) & iP_E1
sF_E1 = ScriviParametroCab(iF_E1,sE1)
iF_E2 = IndFunPar
If iF_E2 > 0 Then
iP_E2 = ScegliPosizione
If iP_E2 > 0 Then
iR_E2 = ScegliRuota
If iR_E2 > 0 Then
sE2 = SiglaRuota(iR_E2) & iP_E2
sF_E2 = ScriviParametroCab(iF_E2,sE2)
iF_E3 = IndFunPar
If iF_E3 > 0 Then
iP_E3 = ScegliPosizione
If iP_E3 > 0 Then
iR_E3 = ScegliRuota
If iR_E3 > 0 Then
sE3 = SiglaRuota(iR_E3) & iP_E3
sF_E3 = ScriviParametroCab(iF_E3,sE3)
Ind_EspRic = EspressioneDiRicerca(sF_E1,sF_E2,sF_E3)
Str_EspRic = scriviEspressioneDiRicerca(sF_E1,sF_E2,sF_E3,Ind_EspRic)
If Ind_EspRic > 0 Then
nColpi = QuantiColpi
If nColpi > 0 Then
nNegativi = QuantiNegativi
If nNegativi > 0 Then
MsgBox "Seleziona Ruota Di Ricerca ",,"Ruota Di Ricerca :" & SiglaRuota(iR_E1) & "-" & SiglaRuota(iR_E2) & "-" & SiglaRuota(iR_E3)
RuG = ScegliRuota
If RuG > 0 Then
bRet = True
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
ImpostaParametri = bRet
End Function
Sub alimentaArray(aRis,k,Pre)
aRis(1) = k
aRis(2) = Pre
End Sub
Sub LanciaIntestazione(PEU,EstrR,Str_EspRic,cF_E1,cF_E2,cF_E3,risultatoEspressione,CasoTro,RuG,nColpi,nNegativi)
Dim ColpiGiocati,ColpiRestanti
ColpiGiocati = EstrazioneFin - EstrR
ColpiRestanti = nColpi - ColpiGiocati
Scrivi
Scrivi "Condizioni di Ricerca : ",1,,RGB(254,230,131)
Scrivi
Scrivi "Data Inizio Ricerca : " & DataEstrazione(PEU),1
Scrivi "Data Fine Archivio : " & DataEstrazione(EstrazioneFin),1
Scrivi "Ultima Condizione Rilevata : " & DataEstrazione(EstrR),1
Scrivi "Stringa Espr. di Ricerca : " & Str_EspRic,1
Scrivi "Valore Estratti : " & "E1{" & Format2(cF_E1) & "} ; E2{" & Format2(cF_E2) & "} ; E3{" & Format2(cF_E3) & "}",1
Scrivi "Valore Espr. di Ricerca : " & Format2(risultatoEspressione),1
Scrivi "Casi Totali Esaminati : " & Format2(CasoTro),1
Scrivi "Ruota Di Verifica : " & SiglaRuota(RuG),1
Scrivi "Colpi Di Verifica : " & Format2(nColpi),1
Scrivi "Colpi Restanti Verifica : " & Format2(ColpiRestanti),1
Scrivi "Max Casi Negativi Previsti : " & Format2(nNegativi),1
Scrivi "________________________________________________________________________________ "
Scrivi
Scrivi
End Sub
Function ScegliPosizione
Dim aPos,Ris
aPos = Array("","1","2","3","4","5")
Ris = ScegliOpzioneMenu(aPos,1,"ScegliPosizione")
ScegliPosizione = Ris
End Function
Function IndFunPar
Dim Ris
Dim aParametro
aParametro = Array("","F90","Ddec","D45","Dif90","Sim91","Vert","Dec","Cad","Fig","C.Fig")
Ris = ScegliOpzioneMenu(aParametro,1,"SelezionaParametroEstratto")
IndFunPar = Ris
End Function
Function CalcFunPar(Ind_FunEstr,e_E1) 'indiceFunzioneParametroEstratto
Dim Ris
Dim aParametro(10)
aParametro(0) = 0
aParametro(1) = Fuori90(e_E1)
aParametro(2) = DiametraleD(e_E1)
aParametro(3) = Diametrale(e_E1)
aParametro(4) = ComplAdX(e_E1)
aParametro(5) = ComplAdX(e_E1,91)
aParametro(6) = Vert(e_E1)
aParametro(7) = Decina(e_E1)
aParametro(8) = Cadenza(e_E1)
aParametro(9) = Figura(e_E1)
aParametro(10) = ControFigura(e_E1)
Ris = aParametro(Ind_FunEstr)
CalcFunPar = Ris
End Function
Function ScriviParametroCab(Ind_Parametro,sE_1)
Dim Ris
Dim aParametro
aParametro = Array("","F90","Ddec","D45","Dif90","Sim91","Vert","Dec","Cad","Fig","C.Fig")
Ris = aParametro(Ind_Parametro) & "(" & sE_1 & ")"
ScriviParametroCab = Ris
End Function
Function EseguiCalcolo(Ind_StringaDiRic,ValFin_1,ValFin_2,ValFin_3)
Dim ris
Dim aOperazioni(18)
aOperazioni(0) = 0
aOperazioni(1) = Fuori90(ValFin_1 + ValFin_2 + ValFin_3)
aOperazioni(2) = Distanza(Fuori90(ValFin_1 + ValFin_2),ValFin_3)
aOperazioni(3) = Fuori90(ValFin_1 + Distanza(ValFin_2,ValFin_3))
aOperazioni(4) = Fuori90((ValFin_1 + ValFin_2)*ValFin_3)
aOperazioni(5) = Fuori90(ValFin_1 +(ValFin_2*ValFin_3))
aOperazioni(6) = Fuori90(Distanza(ValFin_1,ValFin_2) + ValFin_3)
aOperazioni(7) = Distanza(ValFin_1,Fuori90(ValFin_2 + ValFin_3))
aOperazioni(8) = Distanza(Distanza(ValFin_1,ValFin_2),ValFin_3)
aOperazioni(9) = Distanza(ValFin_1,Distanza(ValFin_2,ValFin_3))
aOperazioni(10) = Fuori90(Distanza(ValFin_1,ValFin_2)*ValFin_3)
aOperazioni(11) = Distanza(ValFin_1,Fuori90(ValFin_2*ValFin_3))
aOperazioni(12) = Fuori90((ValFin_1 * ValFin_2) + ValFin_3)
aOperazioni(13) = Fuori90(ValFin_1 *(ValFin_2 + ValFin_3))
aOperazioni(14) = Distanza(Fuori90(ValFin_1 * ValFin_2),ValFin_3)
aOperazioni(15) = Fuori90(ValFin_1 *Distanza(ValFin_2,ValFin_3))
aOperazioni(16) = Fuori90(ValFin_1 * ValFin_2 * ValFin_3)
aOperazioni(17) = Fuori90(Piramide(ValFin_1 & ValFin_2 & ValFin_3,,2))
aOperazioni(18) = Fuori90(ValFin_1 & ValFin_2 & ValFin_3)
ris = aOperazioni(Ind_StringaDiRic)
EseguiCalcolo = ris
End Function
Function EspressioneDiRicerca(sBase1,sBase2,sBase3)
Dim aOperatore,Ris
aOperatore = Array("",_
"(" & sBase1 & " + " & sBase2 & " + " & sBase3 & ")",_
"(" & sBase1 & " + " & sBase2 & ")- " & sBase3 & "",_
"" & sBase1 & " +(" & sBase2 & " - " & sBase3 & ")",_
"(" & sBase1 & " + " & sBase2 & ")* " & sBase3 & "",_
"" & sBase1 & " +(" & sBase2 & "* " & sBase3 & ")",_
"(" & sBase1 & " - " & sBase2 & ")+ " & sBase3 & "",_
"" & sBase1 & " -(" & sBase2 & " + " & sBase3 & ")",_
"(" & sBase1 & " - " & sBase2 & ")- " & sBase3 & "",_
"" & sBase1 & " -(" & sBase2 & " - " & sBase3 & ")",_
"(" & sBase1 & " - " & sBase2 & ")* " & sBase3 & "",_
"" & sBase1 & " -(" & sBase2 & " * " & sBase3 & ")",_
"(" & sBase1 & " * " & sBase2 & ")+ " & sBase3 & "",_
"" & sBase1 & " *(" & sBase2 & " + " & sBase3 & ")",_
"(" & sBase1 & " * " & sBase2 & ")- " & sBase3 & "",_
"" & sBase1 & " *(" & sBase2 & " - " & sBase3 & ")",_
"" & sBase1 & " * " & sBase2 & " * " & sBase3 & "",_
"Piramida(" & sBase1 & " ; " & sBase2 & " ; " & sBase3 & ")",_
"Unione(" & sBase1 & " ; " & sBase2 & " ; " & sBase3 & ")")
Ris = ScegliOpzioneMenu(aOperatore,1,"GetEspressioneDiRicerca")
EspressioneDiRicerca = Ris
End Function
Function scriviEspressioneDiRicerca(sBase1,sBase2,sBase3,Ind)
Dim aOperatore,Ris
aOperatore = Array("",_
"(" & sBase1 & " + " & sBase2 & " + " & sBase3 & ")",_
"(" & sBase1 & " + " & sBase2 & ")- " & sBase3 & "",_
"" & sBase1 & " +(" & sBase2 & " - " & sBase3 & ")",_
"(" & sBase1 & " + " & sBase2 & ")* " & sBase3 & "",_
"" & sBase1 & " +(" & sBase2 & "* " & sBase3 & ")",_
"(" & sBase1 & " - " & sBase2 & ")+ " & sBase3 & "",_
"" & sBase1 & " -(" & sBase2 & " + " & sBase3 & ")",_
"(" & sBase1 & " - " & sBase2 & ")- " & sBase3 & "",_
"" & sBase1 & " -(" & sBase2 & " - " & sBase3 & ")",_
"(" & sBase1 & " - " & sBase2 & ")* " & sBase3 & "",_
"" & sBase1 & " -(" & sBase2 & " * " & sBase3 & ")",_
"(" & sBase1 & " * " & sBase2 & ")+ " & sBase3 & "",_
"" & sBase1 & " *(" & sBase2 & " + " & sBase3 & ")",_
"(" & sBase1 & " * " & sBase2 & ")- " & sBase3 & "",_
"" & sBase1 & " *(" & sBase2 & " - " & sBase3 & ")",_
"" & sBase1 & " * " & sBase2 & " * " & sBase3 & "",_
"Piramida(" & sBase1 & " ; " & sBase2 & " ; " & sBase3 & ")",_
"Unione(" & sBase1 & " ; " & sBase2 & " ; " & sBase3 & ")")
Ris = aOperatore(Ind)
scriviEspressioneDiRicerca = Ris
End Function
Function UltimaEstrazioneUtile(iIni)
Dim Fin,i,m,bRet
Fin = EstrazioneFin
m = - 1
For i = iIni To Fin
m = m + 1
ReDim Preserve aArch(m)
aArch(m) = DataEstrazione(i)
Next
bRet = ScegliOpzioneMenu(aArch,UBound(aArch) - 3,"Inserisci Data Fine Analisi")
UltimaEstrazioneUtile = bRet + 3914
End Function
Function PrimaEstrazioneUtile(iIni)
Dim Fin,i,m,bRet
Fin = EstrazioneFin
m = - 1
For i = iIni To Fin
m = m + 1
ReDim Preserve aArch(m)
aArch(m) = DataEstrazione(i)
Next
bRet = ScegliOpzioneMenu(aArch,UBound(aArch) - 1000,"Inserisci Data Inizio Analisi")
PrimaEstrazioneUtile = bRet + 3914
End Function
Function QuantiColpi
Dim aVoci(15)
Dim i,bRet
For i = 1 To 15
aVoci(i) = i
Next
bRet = ScegliOpzioneMenu(aVoci,10,"SelezionaQuantiColpiEsaminare")
QuantiColpi = bRet
End Function
Function QuantiNegativi
Dim aVoci(15)
Dim i,bRet
For i = 1 To 15
aVoci(i) = i
Next
bRet = ScegliOpzioneMenu(aVoci,4,"SelezionaIlNumeroMassimoDiNegativi")
QuantiNegativi = bRet
End Function