[Reto] Zig Zag (OJO ANALISIS)

Iniciado por BlackZeroX, 2 Enero 2011, 09:53 AM

0 Miembros y 5 Visitantes están viendo este tema.

79137913

#30
HOLA!!!

A pedido de Mr. Frog quite las tablas...

Esperemos un rato :P.

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*

Psyke1

#31
Pero esperadme!! :-(
Para colmo se me fastidia el pc de mi habitacción, me lo arreglaran mañana... :¬¬
Lo estoy haciendo en una libreta, veamos a ver si mañana puedos postearlo. :)

DoEvents! :P

Edit:
No pedí que se quitaran las tablas... :silbar:

Psyke1

#32
Al final no pude aguantar :xD y me bajé el vb portable y lo hice, esta es mi versión:

Código (vb) [Seleccionar]

Option Explicit
Option Base 0

Private Static Function MrFrog_ZigZag(ByVal dSize#, ByRef dMatrix#()) As Boolean
Dim bMiddle             As Boolean
Dim lMax&, lRealMax&, dNum#, dDec#
Dim x&, y&, w&, n&, q&

    If Not (dSize# And &H80000000) Then
        dDec# = dSize# - VBA.Int(dSize#)
        lMax& = VBA.Int(Math.Sqr(dSize#))

        lRealMax& = lMax& + &H1
       
        ReDim dMatrix#(lRealMax&, lRealMax&)
        If dSize# = &H0 Then GoTo True_
        dMatrix#(&H1, &H0) = &H1 + dDec#
       
        x& = &H1: y& = &H1
        n& = &H2: w& = &H2
       
        Do
            Do While ((y& > -&H1) And (x& < lRealMax&))
                dMatrix#(x&, y&) = n& + dDec#
                x& = x& + &H1: y& = y& - &H1
                n& = n& + &H1
            Loop

            If n& > dSize# Then Exit Do

            If w& = lMax& Then
                w& = &H1
                bMiddle = True
            End If

            w& = w& + &H1

            If bMiddle Then
                x& = w&
                y& = lMax& - &H1
            Else
                y& = y& + w&
                x& = &H1
            End If
        Loop

        For y& = &H0 To lMax&
            q& = y& + &H1
            For x& = &H1 To lMax&
                dMatrix#(lRealMax&, y&) = ((dMatrix#(lRealMax&, y&)) + (dMatrix#(x&, y&)))
                dMatrix#(q&, lMax&) = ((dMatrix#(q&, lMax&)) + (dMatrix#(q&, x& - &H1)))
            Next x&
        Next y&

        dNum# = dMatrix#(lRealMax&, lMax&)
        dMatrix#(lRealMax&, lMax&) = (dMatrix#(lRealMax&, lMax&) / &H2)
        dMatrix#(&H0&, lMax&) = dMatrix#(lRealMax&, lMax&)
       
        lMax& = lMax& - &H1
        For y& = &H0 To lMax&
            dMatrix#(&H0, y&) = (dMatrix#(lRealMax&, y&)) + dNum#
        Next y&
True_:
        MrFrog_ZigZag = &H1
    End If
End Function





Un ej:
Código (vb) [Seleccionar]

Private Sub Form_Load()
   Dim a() As Double

   If MrFrog_ZigZag(9.233, a) Then
       PrintMatrix a
   End If
End Sub

Private Sub PrintMatrix(ByRef sMatrix() As Double)
Dim b As Long
Dim q As Long
Dim s As String
Const sLine As String = "-----------------------"
   
   Debug.Print
   Debug.Print sLine; Time$; sLine
   For b = 0 To UBound(sMatrix)
       For q = 0 To UBound(sMatrix) - 1
           s = s & sMatrix(b, q) & String$(3, vbTab)
       Next
       Debug.Print s
       s = vbNullString
   Next
   Debug.Print
End Sub


Retorna:

-----------------------02:58:37-----------------------
104,893         109,893         114,893         47,097          
1,233           2,233           4,233           7,699          
3,233           5,233           7,233           15,699          
6,233           8,233           9,233           23,699          
10,699          15,699          20,699          47,097


y con 100:

-----------------------09:19:37-----------------------
10320           10374           10435           10501           10570           10640           10709           10775           10836           10890           5050            
1           2           4           7           11          16          22          29          37          46          175        
3           5           8           12          17          23          30          38          47          56          239        
6           9           13          18          24          31          39          48          57          65          310        
10          14          19          25          32          40          49          58          66          73          386        
15          20          26          33          41          50          59          67          74          80          465        
21          27          34          42          51          60          68          75          81          86          545        
28          35          43          52          61          69          76          82          87          91          624        
36          44          53          62          70          77          83          88          92          95          700        
45          54          63          71          78          84          89          93          96          98          771        
55          64          72          79          85          90          94          97          99          100         835        
220         274         335         401         470         540         609         675         736         790         5050


DoEvents! :P

BlackZeroX

#33
.
La funcion de Mr Frogs Realiza Bucles Infinitos.. por lo cual esta prueba fue realziada en el IDE con solo 22 vueltas.

Descargar Prueba Con Mr Frogs ( Tiene instrucciones ajenas a los algoritmos originales para identificar cual crashea o realiza bucles infinitos. )
Descargar Prueba Sin Mr Frogs ( Codigos Originales )



============ RETO ZigZag 05/01/2011 - 03:16:49 p.m. ============
Nº de vueltas: 22

MrFrogs Err: 1
MrFrogs Err: 2
MrFrogs Err: 3
MrFrogs Err: 10
MrFrogs Err: 11
MrFrogs Err: 12
MrFrogs Err: 14
MrFrogs Err: 15
MrFrogs Err: 17
MrFrogs Err: 18
MrFrogs Err: 19
MrFrogs Err: 20
MrFrogs Err: 21
MrFrogs Err: 22

Test made by BlackZeroX.



Test de Velocidad:



============ RETO ZigZag 05/01/2011 - 03:37:14 p.m. ============
Nº de vueltas: 10000

============ VELOCIDAD ============
01 Leandro_ZipZag      2858.362812
02 79137913            3194.775132
03 BlackZeroX_ZigZag   4399.080652

Test made by BlackZeroX.



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

Psyke1

#34
Ahora reviso... :¬¬
Los links están caidos... :-\

DoEvents! :P

Psyke1

#35
Bueno, he revisado errores y creo que ya está todo, tambien puse lo de los decimales (cosa que 79137913 no hizo (aun (?) :xD)...  :silbar: >:D)
Ahora hacer test de nuevo please... :rolleyes:

DoEvents! :P

79137913

#36
HOLA!!!

:¬¬ Muy gracioso Mr. Frog... Igual ya funciona con decimales, medio rustico pero funciona :P.

xD No habia compilado :P.

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*

Psyke1

#37
 :o
Está compilado??




Edit:
Hablando contigo por el msn me dijiste que no... :silbar:
Eso explica todo. :P
Por tanto, esos resultados no son válidos.

DoEvents! :P

79137913

#38
HOLA!!!

PROYECTO CORREGIDO:

Descargar URL:
http://www.gigasize.com/get.php?d=494yh7j9npc

Mirror:
http://hotfile.com/dl/95023949/c5f50e6/retomatrizsinsentido.rar.html

Resultados con el Proyecto corregido y compilado:

============ RETO ZigZag 07/01/2011 - 01:16:08 p.m. ============
Nº de vueltas: 100

============ VELOCIDAD ============
00 Leandro_ZipZag      00,272811
01 BlackZeroX_ZigZag   00,308291
02 79137913_ZZ         00,450767
03 MrFrog_ZigZag       00,539326

Test made by BlackZeroX.


============ RETO ZigZag 07/01/2011 - 01:16:36 p.m. ============
Nº de vueltas: 1000

============ VELOCIDAD ============
00 Leandro_ZipZag      19,583645
01 79137913_ZZ         25,995634
02 BlackZeroX_ZigZag   26,919773
03 MrFrog_ZigZag       28,994339

Test made by BlackZeroX.

============ RETO ZigZag 07/01/2011 - 01:15:40 p.m. ============
Nº de vueltas: 10000

============ VELOCIDAD ============
00 Leandro_ZipZag      1848,733389
01 79137913_ZZ         2048,408767
02 BlackZeroX_ZigZag   2713,579061
03 MrFrog_ZigZag       2722,850630

Test made by BlackZeroX.


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*