[RETO] Matriz Bidimensional {FrogMatrix algorithm}

Iniciado por Psyke1, 29 Noviembre 2010, 01:48 AM

0 Miembros y 1 Visitante están viendo este tema.

Psyke1

.
Muy buena Black, no se me había ocurrido! :D
mmmmmm
Haces la función Boolean y introduces en los argumentos el array donde se guardara para no tener que hacer esto? :huh:
Código (vb) [Seleccionar]
CreateMatriXBZeroX=OutArray& ' Es por ganar tiempo ?


CitarMadre que codigos
:xD
?¿

DoEvents! :P


BlackZeroX

.
No se si influya en el tiempo o cosas similares solo se que lo hago directamente en la matrix indicada, lo hago como si fueran apis.

* Una de las ventajas que veo es que sabre si el array saliente esta inicializado, y no tendre que pedir otra variable extra como salida en el parametro de la funcion, solo utilizo lo de la funcion...

Dulces Lunas!¡.
The Dark Shadow is my passion.

Psyke1

Cita de: BlackZeroX▓▓▒▒░░ en 30 Noviembre 2010, 18:25 PM
.
No se si influya en el tiempo o cosas similares solo se que lo hago directamente en la matrix indicada, lo hago como si fueran apis.

* Una de las ventajas que veo es que sabre si el array saliente esta inicializado, y no tendre que pedir otra variable extra como salida en el parametro de la funcion, solo utilizo lo de la funcion...

Dulces Lunas!¡.
.
mmmmmmmmm
Ya veo, muchas gracias, esto lo aplicare de aqui en adelante! ;)

DoEvents! :P

79137913

#13
HOLA!!!

ACA LES DEJO MI CODE, MEJORE EL DE LEANDRO A (10% mas rapido en promedio):
(seguro que se puede mejorar la parte que agregue)
si se continua expresando como funcion e imprimiendo las celdas negativas se toma menos tiempo.

Código (vb) [Seleccionar]
Private tmr As CTiming


Private Function MatriX7913(ByVal N As Integer) As Long()
    Dim M() As Long
    Dim x As Integer, y As Integer, Z As Integer
    Dim AGRUP As Long, TAM As Integer

    If N < 1 Then Exit Function

    TAM = N - 1

    ReDim M(TAM, TAM)

    For x = 0 To TAM
        M(x, 0) = x
        M(TAM, x) = TAM
        If TAM > 0 Then
            If Not x = TAM Then
                M(x, 1) = 1 + (x * 2)
                If x = TAM - 2 Then
                    For a = 1 To TAM
                        M(TAM - 1, a) = (TAM * 2) - 1
                    Next
                End If
            End If
        End If
   Next
If TAM > 1 Then
'GRACIAS LEANDRO A
    For y = 2 To TAM
        For x = 0 To (TAM - 2)
            If x + y > TAM Then
                M(x, y) = M(x, y - 1)
            Else
                AGRUP = 0
                For Z = x To y + x
                    AGRUP = AGRUP + M(Z, y - 1)
                Next
                M(x, y) = AGRUP
            End If
        Next
    Next
'GRACIAS LEANDRO A
End If
    MatriX7913 = M

End Function

Private Sub Form_Load()
  Dim M() As Long
  Dim TAMX As Integer, x As Integer, y As Integer
  Set tmr = New CTiming

  TAMX = 17
  For FAF = 1 To 10
  tmr.Reset
  M = MatriX7913(TAMX)
  MsgBox tmr.sElapsed
  Next
  For y = 0 To TAMX - 1
        For x = 0 To TAMX - 1
            Debug.Print M(x, y),
        Next
        Debug.Print
  Next

End Sub


MOD: lo baje a un 15%  ;-) ;-) ;-)

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*