Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - krabby

#11
bueno ps acabe mi code, me costo mucho, pero aki sta ps.

Option Explicit
'modKrabby
'modulo bas
Public Function Krabby_ZigZag(Numero As Long) As Boolean
   Dim Columnas As Long, Filas As Long
   Dim NumeroValido As Long
   Dim Num As Long, Base As Long
   Dim MyX As Long, MyY As Long
   Dim CeldaAbajoLibre As Long
   Dim Celda() As Long, Resto As Long
   Dim cadena As String
   
   'variables destino
   Dim FilasDestino As Long, ColumnasDestino As Long
   Dim BaseDestino As Long
   Dim CeldaDestino() As Long
   Dim Suma As Long
   Dim SumaUltimaFila As Long
   
   NumeroValido = Int(Sqr(Numero)) * Int(Sqr(Numero))
   Columnas = Int(Sqr(Numero))
   Filas = Int(Sqr(Numero))
   ReDim Celda(1 To NumeroValido) As Long
   Dim X As Long, Y As Long
   For X = 1 To Columnas
       MyY = 1
       MyX = X
       CeldaAbajoLibre = X
       Num = Num + 1
       Base = (MyY - 1) * Columnas
       Celda(Base + MyX) = Num
       If CeldaAbajoLibre > 1 Then
           For Y = 1 To CeldaAbajoLibre - 1
               MyX = MyX - 1
               Num = Num + 1
               MyY = MyY + 1
               Base = (MyY - 1) * Columnas
               Celda(Base + MyX) = Num
           Next Y
       End If
   Next X
   
   
   Resto = Columnas - 1
   Dim MyY2 As Long
   MyY = 1
   For X = Resto To 1 Step -1
       MyY = MyY + 1
       MyX = Columnas
       MyY2 = MyY
       CeldaAbajoLibre = X
       Num = Num + 1
       Base = (MyY2 - 1) * Columnas
       Celda(Base + MyX) = Num
       If CeldaAbajoLibre > 1 Then
           For Y = 1 To CeldaAbajoLibre - 1
               MyX = MyX - 1
               Num = Num + 1
               MyY2 = MyY2 + 1
               Base = (MyY2 - 1) * Columnas
               Celda(Base + MyX) = Num
               
           Next Y
       End If
   Next X
   'imprime
   For X = 1 To Columnas
       Base = (X - 1) * Columnas
       For Y = Base + 1 To Base + Columnas
           cadena = cadena & Celda(Y) & " "
       Next Y
       cadena = cadena & vbCrLf
   Next X
   Debug.Print cadena
   'Open "c:\aa.txt" For Append As #1
   'Print #1, cadena
   'Print #1, extra
   'Close #1
   
   
   'pasa los numero a la celda destino
   FilasDestino = Filas + 1      '1ra fila de sumar
   FilasDestino = FilasDestino + 1     'ultima fila de sumas
   ColumnasDestino = Columnas + 1     'ultima columna de sumas
   ReDim CeldaDestino(1 To (FilasDestino * ColumnasDestino)) As Long
   For X = 1 To Filas
       For Y = 1 To Columnas
           Base = (X - 1) * Columnas
           BaseDestino = (X) * ColumnasDestino
           CeldaDestino(BaseDestino + Y) = Celda(Base + Y)
           Suma = Suma + CeldaDestino(BaseDestino + Y)
       Next Y
       CeldaDestino(BaseDestino + ColumnasDestino) = Suma
       Suma = 0
   Next X
   '**************************************
   'ultimo agregado (codigo perdido)
   For X = 1 To ColumnasDestino - 1
       For Y = 2 To FilasDestino - 1
           BaseDestino = (Y - 1) * ColumnasDestino
           Suma = Suma + CeldaDestino(BaseDestino + X)
       Next Y
       BaseDestino = (FilasDestino - 1) * ColumnasDestino
       CeldaDestino(BaseDestino + X) = Suma
       Suma = 0
   Next X
   
   
   '************************************
   'ultimo codigo agregado al final
   
'*****************************************
   'suma de la ultima fila
   For X = 1 To ColumnasDestino - 1
       BaseDestino = (FilasDestino - 1) * ColumnasDestino
       Suma = Suma + CeldaDestino(BaseDestino + X)
   Next X
   CeldaDestino(BaseDestino + ColumnasDestino) = Suma
   Suma = 0
   
   '***********************************
   'suma vertical de la ultima columna
   For X = 2 To FilasDestino - 1
       BaseDestino = (X - 1) * ColumnasDestino
       Suma = Suma + CeldaDestino(BaseDestino + ColumnasDestino)
   Next X
   BaseDestino = 0   'primera fila
   CeldaDestino(BaseDestino + ColumnasDestino) = Suma
   Suma = 0
   
   '***********************************
   'obtiene la suma de la ultima fila para despues sumarlo
   'a las columnas y obtener el resultado de las sumas de la primera fila
   For X = 1 To ColumnasDestino
       BaseDestino = (FilasDestino - 1) * ColumnasDestino
       Suma = Suma + CeldaDestino(BaseDestino + X)
   Next X
   SumaUltimaFila = Suma
   Suma = 0
   Debug.Print "LEEME *****:"
   Debug.Print "BaseDestino="; BaseDestino
   Debug.Print "columnas="; Columnas
   Debug.Print "SumaUltimaFila="; SumaUltimaFila
   
   '*************************************
   'suma de la primera fila
   For X = 1 To ColumnasDestino - 1
       For Y = 2 To FilasDestino - 1
           BaseDestino = (Y - 1) * ColumnasDestino
           Suma = Suma + CeldaDestino(BaseDestino + X)
       Next Y
       Suma = Suma + SumaUltimaFila
       BaseDestino = 0    '1ra fila
       CeldaDestino(BaseDestino + X) = Suma
       Suma = 0
   Next X
   
   '**********************************************
   
   'imprime las celdas destino
   cadena = ""
   Debug.Print "*************************************" & vbCrLf
       'For X = 1 To ColumnasDestino
       'BaseDestino = (X - 1) * ColumnasDestino
       'For Y = BaseDestino + 1 To BaseDestino + ColumnasDestino
           'cadena = cadena & CeldaDestino(Y) & " "
       'Next Y
       'cadena = cadena & vbCrLf
   'Next X
   
   
For X = 1 To FilasDestino
   For Y = 1 To ColumnasDestino
       BaseDestino = (X - 1) * ColumnasDestino
       cadena = cadena & CeldaDestino(BaseDestino + Y) & " "
   Next Y
   cadena = cadena & vbCrLf
Next X


   Debug.Print cadena
End Function


Option Explicit
'Form1
Private Sub Form_Load()
   Krabby_ZigZag 64
End Sub


use las etiquetas de codigo simple para que se pueda hacer copy/paste al codigo por si kieren probarlo.
nota: no funka con el numero cero "0" , por que mi array empieza desde "1", black en el 1er post dijiste q no importaba  si el array comienza de "0" o "1".

-Veo que has cambiado las reglas, ahora es "bidimensional", es obligatorio? o lo dejo asi?

edito:
PD: me adelante a las 3 horas q te dije  xp xp  :xD :xD
#12
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?
#13
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.
#14
edito: ahora entiendo.
#15
Bien pues ... ya son las 2:35 am por aki y me kgo de sueño, mañana espero el reto zig zag (me suena a encriptacion) , pero weno qué será? qué será?
hasta mañana.
#16
propongo que para no estar codeando a cada rato haciendo pequeñas mejoras, mejor averiguamos todo lo que hace el instr , luego ponemos a prueba el instr en distintos casos para ver lo que resulta, por ejmplo: que es lo que devuelve cuando se busca cadenas vacias, o que devuelve cuando se le pasa una posicion mayor a la cadena de busqueda, etc... y luego tratamos de igualar, o mejor dicho imitar al instr y despues vemos cual de todos los codes es el mejor.


editado: Mr Frog. anda pensando en otro reto, y lo lanzas despues de este.
;D ;D ;D ;D
#17
mmmmm se me paso ese detalle de q si se busca cadena vacia el instr siempre devuelve la posicion que le indicamos, black zero nos dio un jalon de orejas, ahora todos a mejorar nuestros codes.
#18
bueno si tienes razon hay veces que el vb da un resultado en debug y otro cuando es compilado, e incluso falla en uno y en el otro no.
ehhh pero segun veo el q le gana al instr es Mr Frog.



edito: mmm :C :C quede tercer puesto .
#19
Bien pues el resultado que me dio:


RESULTADOS PRUEBA 1:


============ RETO INSTR 31/12/10 ============
String a buscar:            col
String donde buscar:        Baila baila baila como Juana, baila la cubana, parece refresco de cola, a mi me parece que estás bien buena.
Nº de vueltas:               250          

3 Offsets:     1             10            20
============ COMPROBACION ============
Valores de InStr:                          67            67            67


============ VELOCIDAD ============
InStr          0.477649485502989
Raul338        10.0386183350126
Miseryk        16.4880727613527
gaston93       2.41434061336485
Mr Frog        5.18079225155567
Tokes          16.6270077772112
79137913       11.2904333267657
Tokes v2       9.7320513982567
Tenient101     10.14500686101
BlackZeroX     3.33684112168503
krabby         4.56310886870851

____________________________________________________________________________________________________________________________________________

RESULTADOS PRUEBA 2:
============ RETO INSTR 31/12/10 ============
String a buscar:            la
String donde buscar:        Baila baila baila como Juana, baila la cubana, parece refresco de cola, a mi me parece que estás bien buena.
Nº de vueltas:               250          

3 Offsets:     1             10            20
============ COMPROBACION ============
Valores de InStr:                          4             10            34
BlackZeroX no devuelve los mismos valores  4             16            34


============ VELOCIDAD ============
InStr          0.284480818743699
Raul338        1.87330946357435
Miseryk        2.6841720120485
gaston93       3.54192950290311
Mr Frog        3.34420082794071
Tokes          2.48609337482952
79137913       2.04759066734653
Tokes v2       1.64408418552059
Tenient101     1.47925196267583
BlackZeroX     3.07158023007219
krabby         4.22855545029469


___________________________________________________________________________________________________________________________________________

RESULTADOS PRUEBA 3:
============ RETO INSTR 31/12/10 ============
String a buscar:            Ñ
String donde buscar:        Baila baila baila como Juana, baila la cubana, parece refresco de cola, a mi me parece que estás bien buena.
Nº de vueltas:               250          

3 Offsets:     1             10            20
============ COMPROBACION ============
Valores de InStr:                          0             0             0


============ VELOCIDAD ============
InStr          0.368475259943215
Raul338        13.7436827438161
Miseryk        49.2554028048075
gaston93       1.92160775460367
Mr Frog        0.345727713266124
Tokes          25.6878945605716
79137913       15.5823844398382
Tokes v2       13.4906600323155
Tenient101     16.8831941475112
BlackZeroX     2.26947023763487
krabby         2.08259039262616



en la tercera prueba de la "Ñ" en ambos resultados sale que Mr. Frog le gana al instr, :D :D :D
#20
supongo que dices por lo del color, no sabia lo de poner el code =vb, igual no es muy conveniente cuando kieres copiar / pegar un codigo que tiene esas etiquetas, porque en vez de salir los saltos de linea salen unos espacios y hay que editar el codigo poniendo lo saltos correspondientes.
voi a bajar y provar como va ahora tu tester de funciones corregido.
un saludo