cio joe ciao rossella
DATA_ script
Option Explicit
' ==============================================================================
' METODO CINQUINE PENTAGONALI - ULTIME 3 ESTRAZIONI
' Script per Spaziometria / '
' Logica:
' - Controlla le ultime 3 estrazioni.
' - Cerca su due ruote diverse due coppie appartenenti alla stessa cinquina.
' - Se le due coppie coprono 4 numeri diversi della cinquina, il quinto mancante
' diventa il capogioco / ambata.
' - 1° abbinamento = doppio ciclometrico del capogioco.
' - 2° abbinamento = diametrale del doppio.
'
' ==============================================================================
Const SOLO_AMBI_ESATTI = True
Const RUOTE_DIVERSE = True
Sub Main()
Dim aRuote
Dim aCin
Dim aTitoli
Dim aRiga
Dim Fine
Dim Inizio
Dim es
Dim iRuota
Dim Ruota
Dim idCin
Dim p
Dim n
Dim cnt
Dim n1
Dim n2
Dim nMin
Dim nMax
Dim h
Dim h1
Dim h2
Dim idRiga
Dim capogioco
Dim abb1
Dim abb2
Dim aHData()
Dim aHRuota()
Dim aHCin()
Dim aHN1()
Dim aHN2()
Dim trovato
Call CaricaRuote(aRuote)
Call CaricaCinquine(aCin)
Fine = EstrazioneFin
Inizio = Fine - 2
If Inizio < EstrazioneIni Then
Inizio = EstrazioneIni
End If
ReDim aHData(1000)
ReDim aHRuota(1000)
ReDim aHCin(1000)
ReDim aHN1(1000)
ReDim aHN2(1000)
h = 0
' --------------------------------------------------------------------------
' 1) RICERCA DELLE COPPIE NELLE ULTIME 3 ESTRAZIONI
' --------------------------------------------------------------------------
For es = Inizio To Fine
For iRuota = 1 To UBound(aRuote)
Ruota = aRuote(iRuota)
For idCin = 1 To 18
cnt = 0
n1 = 0
n2 = 0
For p = 1 To 5
n = Estratto(es, Ruota, p)
If NumeroInCinquina(n, aCin, idCin) Then
cnt = cnt + 1
If cnt = 1 Then
n1 = n
ElseIf cnt = 2 Then
n2 = n
End If
End If
Next
If SOLO_AMBI_ESATTI Then
If cnt = 2 Then
Call OrdinaCoppia(n1, n2, nMin, nMax)
h = h + 1
aHData(h) = es
aHRuota(h) = Ruota
aHCin(h) = idCin
aHN1(h) = nMin
aHN2(h) = nMax
End If
Else
' Versione prudenziale non attiva.
' Il metodo originale lavora su due ambi netti.
' Se vuoi includere ruote con 3 o più numeri della stessa cinquina,
' conviene sviluppare tutte le coppie possibili con una sub dedicata.
End If
Next
Next
Next
' --------------------------------------------------------------------------
' 2) TABELLA RISULTATI
' --------------------------------------------------------------------------
ReDim aTitoli(14)
aTitoli(1) = "Cinquina"
aTitoli(2) = "Data 1"
aTitoli(3) = "Ruota 1"
aTitoli(4) = "Coppia 1"
aTitoli(5) = "Data 2"
aTitoli(6) = "Ruota 2"
aTitoli(7) = "Coppia 2"
aTitoli(8) = "Capogioco"
aTitoli(9) = "Doppio"
aTitoli(10) = "Diametrale"
aTitoli(11) = "Ambo 1"
aTitoli(12) = "Ambo 2"
aTitoli(13) = "Terno"
aTitoli(14) = "Ruote"
Call InitTabella(aTitoli, vbCyan)
Scrivi "Metodo cinquine pentagonali - controllo ultime 3 estrazioni", 1
Scrivi "Range controllato: " & GetInfoEstrazione(Inizio) & " -> " & GetInfoEstrazione(Fine), 1
Scrivi
idRiga = 0
trovato = False
For h1 = 1 To h - 1
For h2 = h1 + 1 To h
If aHCin(h1) = aHCin(h2) Then
If RUOTE_DIVERSE = False Or aHRuota(h1) <> aHRuota(h2) Then
If QuattroDiversi(aHN1(h1), aHN2(h1), aHN1(h2), aHN2(h2)) Then
capogioco = NumeroMancante(aCin, aHCin(h1), aHN1(h1), aHN2(h1), aHN1(h2), aHN2(h2))
If capogioco > 0 Then
abb1 = Doppio90(capogioco)
abb2 = Diametrale(abb1)
idRiga = idRiga + 1
trovato = True
ReDim aRiga(14)
aRiga(1) = StringaCinquina(aCin, aHCin(h1))
aRiga(2) = GetInfoEstrazione(aHData(h1))
aRiga(3) = SiglaRuota(aHRuota(h1))
aRiga(4) = FormatNum(aHN1(h1)) & "-" & FormatNum(aHN2(h1))
aRiga(5) = GetInfoEstrazione(aHData(h2))
aRiga(6) = SiglaRuota(aHRuota(h2))
aRiga(7) = FormatNum(aHN1(h2)) & "-" & FormatNum(aHN2(h2))
aRiga(8) = FormatNum(capogioco)
aRiga(9) = FormatNum(abb1)
aRiga(10) = FormatNum(abb2)
aRiga(11) = FormatNum(capogioco) & "-" & FormatNum(abb1)
aRiga(12) = FormatNum(capogioco) & "-" & FormatNum(abb2)
aRiga(13) = FormatNum(capogioco) & "-" & FormatNum(abb1) & "-" & FormatNum(abb2)
aRiga(14) = SiglaRuota(aHRuota(h1)) & "-" & SiglaRuota(aHRuota(h2))
Call AddRigaTabella(aRiga, , "center")
End If
End If
End If
End If
Next
Next
If trovato Then
Call CreaTabella()
Else
Scrivi "Nessun segnale trovato con i parametri attuali.", 1
End If
End Sub
' ==============================================================================
' DATI BASE
' ==============================================================================
Sub CaricaRuote(ByRef aRuote)
ReDim aRuote(11)
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_
End Sub
Sub CaricaCinquine(ByRef aCin)
ReDim aCin(18, 5)
aCin(1, 1) = 1 : aCin(1, 2) = 19 : aCin(1, 3) = 37 : aCin(1, 4) = 55 : aCin(1, 5) = 73
aCin(2, 1) = 2 : aCin(2, 2) = 20 : aCin(2, 3) = 38 : aCin(2, 4) = 56 : aCin(2, 5) = 74
aCin(3, 1) = 3 : aCin(3, 2) = 21 : aCin(3, 3) = 39 : aCin(3, 4) = 57 : aCin(3, 5) = 75
aCin(4, 1) = 4 : aCin(4, 2) = 22 : aCin(4, 3) = 40 : aCin(4, 4) = 58 : aCin(4, 5) = 76
aCin(5, 1) = 5 : aCin(5, 2) = 23 : aCin(5, 3) = 41 : aCin(5, 4) = 59 : aCin(5, 5) = 77
aCin(6, 1) = 6 : aCin(6, 2) = 24 : aCin(6, 3) = 42 : aCin(6, 4) = 60 : aCin(6, 5) = 78
aCin(7, 1) = 7 : aCin(7, 2) = 25 : aCin(7, 3) = 43 : aCin(7, 4) = 61 : aCin(7, 5) = 79
aCin(8, 1) = 8 : aCin(8, 2) = 26 : aCin(8, 3) = 44 : aCin(8, 4) = 62 : aCin(8, 5) = 80
aCin(9, 1) = 9 : aCin(9, 2) = 27 : aCin(9, 3) = 45 : aCin(9, 4) = 63 : aCin(9, 5) = 81
aCin(10, 1) = 10 : aCin(10, 2) = 28 : aCin(10, 3) = 46 : aCin(10, 4) = 64 : aCin(10, 5) = 82
aCin(11, 1) = 11 : aCin(11, 2) = 29 : aCin(11, 3) = 47 : aCin(11, 4) = 65 : aCin(11, 5) = 83
aCin(12, 1) = 12 : aCin(12, 2) = 30 : aCin(12, 3) = 48 : aCin(12, 4) = 66 : aCin(12, 5) = 84
aCin(13, 1) = 13 : aCin(13, 2) = 31 : aCin(13, 3) = 49 : aCin(13, 4) = 67 : aCin(13, 5) = 85
aCin(14, 1) = 14 : aCin(14, 2) = 32 : aCin(14, 3) = 50 : aCin(14, 4) = 68 : aCin(14, 5) = 86
aCin(15, 1) = 15 : aCin(15, 2) = 33 : aCin(15, 3) = 51 : aCin(15, 4) = 69 : aCin(15, 5) = 87
aCin(16, 1) = 16 : aCin(16, 2) = 34 : aCin(16, 3) = 52 : aCin(16, 4) = 70 : aCin(16, 5) = 88
aCin(17, 1) = 17 : aCin(17, 2) = 35 : aCin(17, 3) = 53 : aCin(17, 4) = 71 : aCin(17, 5) = 89
aCin(18, 1) = 18 : aCin(18, 2) = 36 : aCin(18, 3) = 54 : aCin(18, 4) = 72 : aCin(18, 5) = 90
End Sub
' ==============================================================================
' FUNZIONI DI CONTROLLO
' ==============================================================================
Function NumeroInCinquina(n, aCin, idCin)
Dim i
NumeroInCinquina = False
For i = 1 To 5
If n = aCin(idCin, i) Then
NumeroInCinquina = True
Exit Function
End If
Next
End Function
Function QuattroDiversi(a, b, c, d)
QuattroDiversi = False
If a = b Then Exit Function
If a = c Then Exit Function
If a = d Then Exit Function
If b = c Then Exit Function
If b = d Then Exit Function
If c = d Then Exit Function
QuattroDiversi = True
End Function
Function NumeroMancante(aCin, idCin, n1, n2, n3, n4)
Dim i
Dim n
NumeroMancante = 0
For i = 1 To 5
n = aCin(idCin, i)
If n <> n1 And n <> n2 And n <> n3 And n <> n4 Then
NumeroMancante = n
Exit Function
End If
Next
End Function
Sub OrdinaCoppia(n1, n2, ByRef nMin, ByRef nMax)
If n1 <= n2 Then
nMin = n1
nMax = n2
Else
nMin = n2
nMax = n1
End If
End Sub
' ==============================================================================
' CALCOLI CICLOMETRICI
' ==============================================================================
Function Doppio90
Doppio90 = ((n * 2 - 1) Mod 90) + 1
End Function
Function Diametrale
If n <= 45 Then
Diametrale = n + 45
Else
Diametrale = n - 45
End If
End Function
' ==============================================================================
' FORMATTAZIONE
' ==============================================================================
Function FormatNum
If n < 10 Then
FormatNum = "0" & CStr

Else
FormatNum = CStr

End If
End Function
Function StringaCinquina(aCin, idCin)
StringaCinquina = _
FormatNum(aCin(idCin, 1)) & "-" & _
FormatNum(aCin(idCin, 2)) & "-" & _
FormatNum(aCin(idCin, 3)) & "-" & _
FormatNum(aCin(idCin, 4)) & "-" & _
FormatNum(aCin(idCin, 5))
End Function