HOLA!!!
Mi codigo:
Private Function Cuenta_Circular7913(N&, m() As Integer, TIPO As Boolean) 'TIPO: FALSE = BLOQUE, TRUE = ESPIRAL
Dim X As Long
Dim Y As Long
Dim MEDIO As Long ' N/2
Dim CT As Long
'If N Mod 2 <> 0 Then Exit Function
'If N > 180 Then Exit Function
'If N < 2 Then Exit Function
ReDim m(N, N)
MEDIO = N / 2
For X = MEDIO + 1 To N
m(N - X, N - X) = 7
m(X, N - X) = 9
m(N - X, X) = 1
m(X, X) = 3
Next
If TIPO Then 'ESPIRAL
Dim SIGUIENTE As Long
Dim SIGUIENTE_2 As Long 'SIGUIENTE * 2
Dim SIGUIENTE_3 As Long 'SIGUIENTE * 3
For Y = 0 To MEDIO
CT = CT + SIGUIENTE_3
SIGUIENTE = N - (Y * 2) - 1
SIGUIENTE_2 = SIGUIENTE * 2
SIGUIENTE_3 = SIGUIENTE * 3
For X = (Y + 1) To N - (Y + 1)
CT = CT + 1
m(X, Y) = CT
m(N - Y, X) = CT + SIGUIENTE
m(N - X, N - Y) = CT + SIGUIENTE_2
m(Y, N - X) = CT + SIGUIENTE_3
Next
Next
Else 'TRIANGULAR
Dim MEDIO2 As Long 'MEDIO ^ 2
Dim MEDIO2_2 As Long 'MEDIO2 * 2
Dim MEDIO2_3 As Long 'MEDIO2 * 3
MEDIO2 = MEDIO * MEDIO
MEDIO2_2 = MEDIO2 * 2
MEDIO2_3 = MEDIO2 * 3
For Y = 0 To MEDIO
For X = (Y + 1) To N - (Y + 1)
CT = CT + 1
m(X, Y) = CT
m(N - Y, X) = CT + MEDIO2
m(N - X, N - Y) = CT + MEDIO2_2
m(Y, N - X) = CT + MEDIO2_3
Next
Next
End If
End Function
TEST:
"TEST HECHO POR 79137913"
Cuenta_Circular7913(180, Matriz, False) : 0,456 msec
Leandro_Cuenta_Circular7913(180, Matriz, False) : 0,522 msec
Cuenta_Circular7913(180, Matriz, True) : 0,424 msec
Leandro_Cuenta_Circular7913(180, Matriz, True) : 0,398 msec
GRACIAS POR LEER!!!