Allora per questo ho chiesto a gemini, (devo ancora masticare bene il codice e capire come interpretarlo anche con l aiuto di AI) poichè avevo difficoltà con la scrittura delle somme 90 ed è più completo...
infatti queste condizioni sono molto particolari specie insieme.
I precedenti li ho fatti con le mie conoscenze di base
Sub Main()
Dim r1, r2, p1, p2, p3, p4
Dim n, a, b, c, d, s1, s2, s3, s4, s5, s6
' Inizio ciclo estrazioni
For n = 8000 To EstrazioneFin
AvanzamentoElab n, EstrazioneFin, 1
For r1 = 1 To 12
If r1 = 11 Then r1 = 12 ' Salta la ruota Tutte
For p1 = 1 To 5
For p2 = p1 + 1 To 5
a = Estratto(n, r1, p1)
b = Estratto(n, r1, p2)
' Calcolo somme per la prima ruota
s1 = Fuori90(a + b)
For r2 = r1 + 1 To 12
If r2 = 11 Then r2 = 12
For p3 = 1 To 5
For p4 = p3 + 1 To 5
c = Estratto(n, r2, p3)
d = Estratto(n, r2, p4)
' Calcolo di tutte le possibili somme incrociate
s2 = Fuori90(c + d) ' Somma orizzontale r2
s3 = Fuori90(a + c) ' Somma verticale p1/p3
s4 = Fuori90(b + d) ' Somma verticale p2/p4
s5 = Fuori90(a + d) ' Somma diagonale
s6 = Fuori90(b + c) ' Somma diagonale
' Variabile di controllo per evitare doppie stampe
Dim trovato
trovato = False
' CASO 1: Distanza 30 Orizzontale (su r1 o r2) + Somma 90 Verticale o Diagonale
If (Distanza(a, b) = 30 Or Distanza(c, d) = 30) Then
If s3 = 90 Or s4 = 90 Or s5 = 90 Or s6 = 90 Then trovato = True
End If
' CASO 2: Distanza 30 Verticale (tra r1 e r2) + Somma 90 Orizzontale o Diagonale
If trovato = False And (Distanza(a, c) = 30 Or Distanza(b, d) = 30) Then
If s1 = 90 Or s2 = 90 Or s5 = 90 Or s6 = 90 Then trovato = True
End If
' CASO 3: Distanza 30 Diagonale + Somma 90 Orizzontale o Verticale
If trovato = False And (Distanza(a, d) = 30 Or Distanza(b, c) = 30) Then
If s1 = 90 Or s2 = 90 Or s3 = 90 Or s4 = 90 Then trovato = True
End If
' Se una delle condizioni è soddisfatta, procedo alla stampa
If trovato = True Then
Scrivi DataEstrazione

& " - " & NomeRuota(r1) & " [" & a & "-" & b & "] Somma " & s1
Scrivi DataEstrazione

& " - " & NomeRuota(r2) & " [" & c & "-" & d & "] Somma " & s2
Scrivi "Distanze: Oriz(" & Distanza(a, b) & "-" & Distanza(c, d) & ") " & _
"Vert(" & Distanza(a, c) & "-" & Distanza(b, d) & ") " & _
"Diag(" & Distanza(a, d) & "-" & Distanza(b, c) & ")"
Scrivi "Somme Incrociate: V(" & s3 & "-" & s4 & ") D(" & s5 & "-" & s6 & ")"
Scrivi String(80, "-")
End If
Next 'p4
Next 'p3
Next 'r2
Next 'p2
Next 'p1
Next 'r1
Next 'n
End Sub