[Reto] Zig Zag (OJO ANALISIS)

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

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

LeandroA

la penultima suma del primer ejemplo esta mal suma es 400 no 399, si vas a devolver un array unidimencional como se supone que tiene que ser ordenado de x a y o de y a x

creo que serima mejor dejarlo como un array bidimensional

pone mas ejemplos.

raul338

Quien sepa algo de configuracion electronica de atomos (quimica) y haya visto el diagrama de linus pauling (creo que se escriba) entendera esto



O sea, se hace diagonalmente (reemplazen esas cosas raras por numeros secuenciales), la ultima fila y la ultima columna serian como totales respectivos, o sea, la sumatoria de las filas (ultima fila) y la sumatoria de las columnas (ultima columna).

Lo que no entiendo es que es la primera fila :xD un WTF tremendo me llevo

LeandroA

Bueno aun faltan definir bien como van a ser las cosas, asi que solo voy a poner parte de lo que hice, cuando este todo bien aclarado lo continuo.

Código (Vb) [Seleccionar]

Option Explicit

Private Sub Form_Load()
    Leandro_ZipZag 64
End Sub


Private Function Leandro_ZipZag(ByVal lNum As Long) As Long()
    Dim m() As Long
    Dim lSize As Long
    Dim X As Long, Y As Long, I As Long
    Dim lCount As Long
   
    'Do Until (lNum And 7) = 1 Or (lNum And 31) = 4 Or (lNum And 127) = 16 Or (lNum And 191) = 0
    '    lNum = lNum - 1
    'Loop

    lSize = Sqr(lNum)

    ReDim m(lSize, lSize + 1)

    For X = 0 To lSize
        Y = 1
        For I = X - 1 To 0 Step -1
           lCount = lCount + 1
           m(I, Y) = lCount
           Y = Y + 1
        Next
    Next
   
    For Y = 2 To lSize
        X = lSize - 1
        For I = Y To lSize
           lCount = lCount + 1
           m(X, I) = lCount
           X = X - 1
        Next
    Next

    For X = 0 To lSize
        lCount = 0
        For Y = 1 To lSize
            lCount = lCount + m(X, Y)
        Next
        m(X, Y) = lCount
    Next
   
    For Y = 1 To lSize + 1
        lCount = 0
        For X = 0 To lSize - 1
            lCount = lCount + m(X, Y)
        Next
        m(X, Y) = lCount
    Next

    '======Imprimir========
    For Y = 0 To lSize + 1
        For X = 0 To lSize
            Debug.Print m(X, Y),
        Next
        Debug.Print
    Next

End Function

BlackZeroX

#13
.
@LeandroA

    * Si en efecto me equivoque, que lance una piedra quien lo no haya hecho ( lo corregi ).

    * Por otro lado los valores de la 1ra fila deberan averiguar como sacarlos es por eso que le puse al titulo, Analisis. ya que no solo es un reto de ver quien hace el mejor algoritmo o que sepa programar si no tambien para quien sabe meterle coco a un problema, y es por eso que puse como incognita el proceso para sacar la primera fila

    * POR ALGO SE LES LLAMAN RETOS... LOS RETOS sON ENTRETENIDOS CUANDO TE HACEN PENSAR... DE LO CONTRARIO QUE CHISTE TENDRIAN?

     * La vdd es que si es mejor Bidimensional!¡.

@Raul338

* Vas muy cerca

--->

* OJO La primera fila no tiene que ver DIRECTAMENTE con los numeros internos en ZigZag...

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

LeandroA

Black yo entiendo que sea un reto y me engancho, pero estas seguro que los ejemplos que pusiste estan bien? yo no le encuentro ninguna coerencia. a la primera fila
solo puedo sospechar que el ultimo de la primera es igual al ultimo de la ultima (Aunque en los ejemplos no sea asi) 

por las dudas revisalo asi nadie se quema el marote al pepe.

Saludos.


BlackZeroX

#15
.
Si estan bien.

Si quieren que les diga de donde salen uff se van a morir de pena... si quieren se los digo aun que es una sonsada.

En un post anterior puse este...



3   1
1   1
1   1



P.D.: En el Post Principal dice uno de los numeros Involucrados (Posicion del numero donde se hubica, solo faltan los demás...).

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

krabby

#16
blackzero en ambos ejemplos en la primera fila, los numeros van creciendo pero terminan en un numero menor.
este ultimo numero que es menor no coincide con los demas, ¿se calcula a parte de todos los demas?
please si puedieras responder aorita, son las 1:47 am y me boi a qdar despierto a desarrolar el reto.




4279 4314 4354 4397 4441 4484 4524 5558 2080 <--este ultimo
1 2 4 7 11 16 22 29 92
3 5 8 12 17 23 30 37 135
6 9 13 18 24 31 38 44 183
10 14 19 25 32 39 45 50 234
15 20 26 33 40 46 51 55 286
21 27 34 41 47 52 56 59 337
28 35 42 48 53 57 60 62 385
36 43 49 54 58 61 63 64 428
120 155 195 238 282 325 365 399 2079





100 105 110 45 <-- este ultimo
1 2 4 7
3 5 7 15
6 8 9 23
10 15 20 45

edito: ya di con el clavo.

krabby

hey una duda los numeros negativos donde empiezan y hacia donde van a - o +, si por ejm: tengo -64 , tiene que sacarme desde -1 hasta -64, o sera desde -64 hasta -1?

BlackZeroX

Cita de: krabby en  3 Enero 2011, 08:00 AM
hey una duda los numeros negativos donde empiezan y hacia donde van a - o +, si por ejm: tengo -64 , tiene que sacarme desde -1 hasta -64, o sera desde -64 hasta -1?


Quilo de los numeros negativos por que con tan solo sacar los de la 1ra fila es un lio...

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

Psyke1

#19
Ya ya saque la lógica del algoritmo completo por fin... :rolleyes:
Había ejemplos mal hechos... :silbar:
Ahora "solo" toca hacerlo!! :xD

DoEvents! :P