Option Explicit
'Frattale ^6 x Micro_ V.2.0 By Joe del 06/11/2022
Sub Main
   Dim N
   Dim Es,G,R,P,Q,E,I,Nu(5,5),C,K,X,Y
   Dim Ru(1),Co,Ris
   N = 6 'Frattale x N <= 12
   C = 3 'Colpi della verifica
   For Es = EstrazioneFin - 20 To EstrazioneFin
      For R = 1 To 1'2 : If R = 11 Then R = 12
         Ru(1) = R
         ReDim Colora(90)
         Scrivi DataEstrazione(Es) & " " & NomeRuota(R) & " ",True
         'Matrice Traslati
         For P = 1 To 5
            I = 0
            E = Estratto(Es,R,P)
            For Q = 1 To 5
               If P <> Q Then
                  I = I + 1
                  Nu(P,I) = Fuori90(Fuori90(E^N -(Int(E^N/90) * 90)) + Estratto(Es,R,Q))
               End If
            Next
            'Scrivi
         Next
         Scrivi
         'Scompone le Righe della Matrice
         Scrivi "Righe",True
         For X = 1 To 5
            ReDim TMP(4)
            K = 0
            For Y = 1 To 4
               K = K + 1
               TMP(K) = Nu(X,Y)
            Next
            Call TogliRipetuti(TMP)
            Scrivi StringaNumeri(TMP,,True) & Space(16 - Len(StringaNumeri(TMP,,True))),0,0
            Call VerificaEsito(TMP,Ru,Es + 1,AMBO_,C,,,Co,Ris)
            If Ris <> "" Then Call Matrice(Colora,Ris,Co): Scrivi Co & "° Colpo " & Ris,1,,,Co - 1 Else Scrivi
         Next
         Scrivi
         'Scompone le Colonne della Matrice
         Scrivi "Colonne",True
         For X = 1 To 4
            ReDim TMP(5)
            K = 0
            For Y = 1 To 5
               K = K + 1
               TMP(K) = Nu(Y,X)
            Next
            Call TogliRipetuti(TMP)          
            Scrivi StringaNumeri(TMP,,True) & Space(16 - Len(StringaNumeri(TMP,,True))),0,0
            Call VerificaEsito(TMP,Ru,Es + 1,AMBO_,C,,,Co,Ris)
            If Ris <> "" Then Call Matrice(Colora,Ris,Co): Scrivi Co & "° Colpo " & Ris,1,,,Co - 1 Else Scrivi
         Next
         Scrivi
         Scrivi "Cruciverba Ambi",True
         ColoreTesto 0
         For P = 1 To 5
            I = 0
            E = Estratto(Es,R,P)
            ColoreTesto 5
            For Q = 1 To 5
               If P <> Q Then
                  I = I + 1
                  Nu(P,I) = Fuori90(Fuori90(E^N -(Int(E^N/90) * 90)) + Estratto(Es,R,Q))
                  If Colora(Nu(P,I)) > 0 Then G = 1 : ColoreTesto 0 '
                  Scrivi Format2(Nu(P,I)) & Space(1),G,0, RGB (200,200,200),Colora(Nu(P,I)) - 1
                  G = 0 : ColoreTesto 5
               End If
            Next
            Scrivi
         Next
         Scrivi
         ColoreTesto 0
         Scrivi String(43,"=")
      Next
   Next
End Sub
Sub Matrice(Colora,Ris,Co)
   Dim X,N
   N = Split(Ris," ")
   For X = 1 To UBound(N)
      If N(X) <> ".." Then N(X) = Int(N(X)) : Colora(N(X)) = Co
   Next
End Sub
Function TogliRipetuti(N)
   Dim Nu(90)
   Dim I,U,K
   U = UBound(N)
   ReDim tmp(0)
   For I = 1 To U
      If CInt(N(I)) <> CInt(Nu(N(I))) Then
         K = K + 1
         ReDim Preserve tmp(K)
         tmp(K) = CInt(N(I))
         Nu(N(I)) = CInt(N(I))
      End If
   Next
   ReDim N(K)
   For I = 1 To K
      N(I) = tmp(I)
   Next
   TogliRipetuti = N
End Function