Option Explicit
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 num
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
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
num = Estratto(es, Ruota, p)
If NumeroInCinquina(num, aCin, idCin) Then
cnt = cnt + 1
If cnt = 1 Then
n1 = num
ElseIf cnt = 2 Then
n2 = num
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
End If
Next
Next
Next
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
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_
aRuote(11) = NZ_
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
Function NumeroInCinquina(num, aCin, idCin)
Dim i
NumeroInCinquina = False
For i = 1 To 5
If num = 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 Val
NumeroMancante = 0
For i = 1 To 5
Val = aCin(idCin, i)
If Val <> n1 And Val <> n2 And Val <> n3 And Val <> n4 Then
NumeroMancante = Val
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
Function Doppio90(Val)
Doppio90 = ((Val * 2 - 1) Mod 90) + 1
End Function
Function Diametrale(Val)
If Val <= 45 Then
Diametrale = Val + 45
Else
Diametrale = Val - 45
End If
End Function
Function FormatNum(Val)
FormatNum = Format2(Val)
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