Sub Main()
Dim Ruote(3)
Dim Num(1)
Dim Posizioni(5)
Dim Posta(1)
Posta(1) = 1 ' Puntata sull'estratto (ambata)
' Scelta delle 3 ruote da parte dell'utente
Ruote(1) = ScegliRuota
Ruote(2) = ScegliRuota
Ruote(3) = ScegliRuota
If Ruote(1) = 0 Or Ruote(2) = 0 Or Ruote(3) = 0 Then
MsgBox "Selezione ruote non valida o annullata.", vbCritical
Exit Sub
End If
' Definizione dei colpi di gioco (standard 9 colpi)
Dim Colpi
Colpi = 9
Dim fine, inizio, k, estr, ambata, calcolo
fine = EstrazioneFin
inizio = fine - InputBox("Quante estrazioni vuoi analizzare a ritroso?", "Range di Analisi", 150)
Scrivi "=== ANALISI AMBATA SU 3 RUOTE A SCELTA ===", 1
Scrivi "Ruote selezionate: " & NomeRuota(Ruote(1)) & " - " & NomeRuota(Ruote(2)) & " - " & NomeRuota(Ruote(3)), 1
Scrivi "Metodo: 5° BA + 15 (alla penultima del mese)", 1
Scrivi "Verifica nelle 5 posizioni sulle 3 ruote scelte", 1
Scrivi String(80, "=")
Scrivi
' Reset dei contatori delle posizioni
For k = 1 To 5
Posizioni(k) = 0
Next
Dim Casi, Vincite, Percentuale
Casi = 0
Vincite = 0
' Ciclo principale di ricerca
For estr = inizio To fine
' Verifica se l'estrazione corrente è la penultima del mese
If IsPenultimaDelMese(estr) Then
Casi = Casi + 1
' Calcolo dell'ambata: 5° di Bari + 15
calcolo = Estratto(estr, BA_ , 5)
ambata = Fuori90(calcolo + 15)
Num(1) = ambata
Scrivi "Data: " & DataEstrazione(estr) & " | Penultima del mese. 5° BA: " & calcolo & " -> Ambata calcolata: " & ambata, 1
' Analisi delle uscite nei colpi successivi sulle 3 ruote e posizioni
Dim colpo, r, pos, estrFutura
Dim TrovatoNelCiclo
TrovatoNelCiclo = False
For colpo = 1 To Colpi
estrFutura = estr + colpo
If estrFutura > fine Then Exit For
' Controlla l'estratto su ciascuna delle 3 ruote scelte
For r = 1 To 3
For pos = 1 To 5
If Estratto(estrFutura, Ruote(r), pos) = ambata Then
Posizioni(pos) = Posizioni(pos) + 1
TrovatoNelCiclo = True
Scrivi " > Colpo " & colpo & " su " & SiglaRuota(Ruote(r)) & " in " & pos & "ª Posizione (Estr: " & DataEstrazione(estrFutura) & ")"
End If
Next
Next
Next
If TrovatoNelCiclo Then Vincite = Vincite + 1
Scrivi String(60, "-")
End If
Next
' Calcolo sicuro della percentuale di vincita
If Casi > 0 Then
Percentuale = Round((Vincite / Casi) * 100, 1)
Else
Percentuale = 0
End If
' Presentazione dei Risultati Finali
Scrivi
Scrivi "=== RESOCONTO STATISTICO POSIZIONI DI USCITA ===", 1
Scrivi "Casi analizzati: " & Casi
Scrivi "Casi con esito vincente: " & Vincite & " su " & Casi & " (" & Percentuale & "%)"
Scrivi
Dim MaxFreq, PosizioneMigliore
MaxFreq = 0
PosizioneMigliore = 0
For k = 1 To 5
Scrivi k & "ª Posizione determinata: " & Posizioni(k) & " uscite"
If Posizioni(k) > MaxFreq Then
MaxFreq = Posizioni(k)
PosizioneMigliore = k
End If
Next
Scrivi
If PosizioneMigliore > 0 Then
Scrivi "La posizione PIÙ FREQUENTE sulle 3 ruote scelte è la: " & PosizioneMigliore & "ª POSIZIONE (con " & MaxFreq & " sortite)", 1, , vbRed, vbWhite, 3
Else
Scrivi "Nessuna sortita rilevata nel periodo impostato.", 1, , vbRed, vbWhite, 3
End If
Scrivi String(80, "=")
End Sub
' Funzione di supporto per identificare la penultima estrazione del mese
Function IsPenultimaDelMese(idEstr)
Dim meseCorrente
meseCorrente = Mese(idEstr)
' Se l'estrazione successiva + 2 cambia mese, o se siamo vicini alla fine dell'archivio
If Mese(idEstr + 1) <> meseCorrente Then
' Se la successiva è l'ultima, questa è la penultima
IsPenultimaDelMese = True
ElseIf Mese(idEstr + 2) <> meseCorrente And Mese(idEstr + 1) = meseCorrente Then
' Se tra due estrazioni cambia mese, la prossima è l'ultima, quindi questa è la penultima
IsPenultimaDelMese = True
Else
IsPenultimaDelMese = False
End If
End Function