Codice:
Sub Main()
Dim ruota,pos,es,numero,ultimaEstrazione,estrazioneIniziale,estrazioneFinale
Dim numeriRicerca(5),posizioni(5)
Dim i,j,n,posIndex
Dim conteggioNumeri(90),risultato(9,10)
Dim valore
Dim parole(150),colori(150),grassetti(150),indice,valoreReale
Dim estratti(5),estrattiPrecedenti(5)
Dim coloreRosso,coloreNero
Dim coloraRossoPrecedenti(5),coloraRossoCorrenti(5)
coloreRosso = vbRed
coloreNero = vbBlack
ruota = 5
Scrivi "Ruota:(" & ruota & ")",True
Scrivi
ultimaEstrazione = EstrazioneFin()
' Intestazione allineata ai valori
Scrivi " 0000000001 1111111112 2222222223 3333333334 4444444445 5555555556 6666666667 7777777778 8888888889",True
Scrivi " 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890",True
Scrivi
' Inizializza estratti precedenti a zero
For i = 1 To 5
estrattiPrecedenti(i) = 0
Next
For k = 29 To 0 Step - 1
estrazioneIniziale = ultimaEstrazione - k
' Recupera i numeri estratti per l'estrazione corrente
For i = 1 To 5
numeriRicerca(i) = Estratto(estrazioneIniziale,ruota,i)
Next
' Salva gli estratti da visualizzare alla fine
For i = 1 To 5
estratti(i) = numeriRicerca(i)
Next
estrazioneFinale = estrazioneIniziale - 2900
For n = 1 To 90
conteggioNumeri(n) = 0
Next
' Calcola il conteggio dei numeri nelle estrazioni
For i = 1 To 5
Dim contatoreOccorrenze
contatoreOccorrenze = 0
For es = estrazioneIniziale To estrazioneFinale Step - 1
numero = Estratto(es,ruota,i)
If numero = numeriRicerca(i) Then
contatoreOccorrenze = contatoreOccorrenze + 1
' Calcolo per la decina della spia
Dim decinaSpia
decinaSpia = Int((numeriRicerca(i) - 1) / 10) ' Calcola la decina della spia
' Verifica la posizione della spia
Dim posSpia
posSpia = i
' Conta tutti i numeri appartenenti alla decina della spia nelle successive 12 estrazioni
For j = 1 To 12
If(es + j) <= estrazioneIniziale Then
For posIndex = 1 To 5
numero = Estratto(es + j,ruota,posIndex)
If numero > 0 And numero <= 90 Then
' Verifica se il numero appartiene alla stessa decina della spia
If Int((numero - 1) / 10) = decinaSpia Then
' Controlla se la posizione è valida per la spia
Dim posVerifica
posVerifica =(posSpia + j - 1) Mod 5 + 1
If posVerifica = posIndex Or posVerifica =((posIndex Mod 5) + 1) Then
conteggioNumeri(numero) = conteggioNumeri(numero) + 1
End If
End If
End If
Next
End If
Next
End If
If contatoreOccorrenze >= 12 Then Exit For
Next
Next
For i = 0 To 8
For j = 1 To 10
risultato(i,j) = conteggioNumeri(i * 10 + j)
Next
Next
indice = 0
parole(0) = DataEstrazione(estrazioneIniziale) & " " ' Aggiungi la data con uno spazio all'inizio
colori(0) = coloreNero
grassetti(0) = True
indice = 1 ' Partiamo dall'indice 1 per i valori
' Ciclo per la creazione delle parole formattate e colorate
For i = 0 To 8 ' Gruppi di 10 numeri
For j = 1 To 10 ' Colonne
valore = risultato(i,j)
valoreReale = i * 10 + j ' Questo è il valore numerico che stiamo considerando (es. 1-90)
If valore >= 10 Then
valore = Chr(65 +(valore - 10)) ' Converte valori >= 10 in A, B, etc.
ElseIf valore = 0 Then
valore = "*" ' Sostituisce lo zero con un asterisco
End If
' Gestione della colorazione tenendo conto degli spazi e dei valori alfanumerici
If IsInArray(valoreReale,numeriRicerca) Then
colori(indice) = coloreRosso
Else
colori(indice) = coloreNero
End If
' Assicurati che valore sia corretto per la visualizzazione
If IsNumeric(valore) Or valore = "*" Then
parole(indice) = FormatSpace(valore,0,False) ' Usa FormatSpace anche per *
Else
parole(indice) = valore ' Aggiungi il valore letterale (A, B, C, ...)
End If
grassetti(indice) = True
indice = indice + 1
Next
' Aggiungi uno spazio ogni 10 numeri, ma senza spazio tra le presenze
parole(indice) = " " ' Aggiungi lo spazio tra le decine
colori(indice) = coloreNero
grassetti(indice) = True
indice = indice + 1
Next
' Determina quali estratti colorare di rosso per l'estrazione corrente e precedente
If k < 29 Then ' Solo se non è la prima iterazione
For i = 1 To 5
' Verifica se la decina è la stessa nella stessa posizione estrazionale
If Int((estratti(i) - 1) / 10) = Int((estrattiPrecedenti(i) - 1) / 10) Then
coloraRossoCorrenti(i) = True
coloraRossoPrecedenti(i) = True
Else
coloraRossoCorrenti(i) = False
coloraRossoPrecedenti(i) = False
End If
Next
End If
' Aggiungi gli estratti dell'estrazione corrente alla fine della riga con Format2 e separati da un punto
For i = 1 To 5
' Colorazione per gli estratti dell'estrazione corrente
If coloraRossoCorrenti(i) Then
colori(indice) = coloreRosso
Else
colori(indice) = coloreNero
End If
parole(indice) = Format2(estratti(i)) & "."
grassetti(indice) = True
indice = indice + 1
Next
' Memorizza i numeri correnti per la verifica nelle estrazioni successive
For i = 1 To 5
estrattiPrecedenti(i) = estratti(i)
Next
' Stampa la riga con la data dell'estrazione, i valori colorati e gli estratti alla fine
ScriviConColori parole,colori,grassetti
Next
End Sub
Function IsInArray(valore,arr)
Dim i
IsInArray = False
For i = LBound(arr) To UBound(arr)
If arr(i) = valore Then
IsInArray = True
Exit Function
End If
Next
End Function