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 - Psyke1

#11
Tengo la siguiente tabla y consulta: Ver en SqlFiddle.
Ahí extraigo todos los ids de los elementos que tienen cm_min y cm_max dentro del rango ingresado, en este caso 13 y 66.

¿Se os ocurre alguna forma de simplificar esta consulta?

Gracias.
DoEvents! :P
#12
Tengo una velocidad de descarga normal, pero cuando intento subir archivos va como una tortuga (es casi nula).
Después fui a Windows y subo archivos a una velocidad normal.
Hice un test en:
http://www.speedtest.net/
Y me devolvió:
Upload test error
Iba a subir una captura... ¡pero no puedo! :-\ :xD
¿Qué pasa aquí? :-\

Aprovecho para preguntar otra duda:
Tengo el CPU al 35% de normal. Me puse a mirar los procesos y las webs con flash y el compiz consumen una autentica barbaridad.

Agradecería cualquier ayuda.
DoEvents! :P
#13
Black, tu algoritmo está incompleto. Tu sacas el primer palíndromo que encuentra. Pero debe de ser el mayor posible.

PD: Mi ordenador echa humo de 6 en adelante. :xD

DoEvents! :P
#14
Tengo problemas de Overflow:-\

Mirad lo que hago:

Código (vb) [Seleccionar]
Option Explicit

Private Sub Form_Load()
Dim B As Double
   
   B = 998001 '999 * 999
   B = 999 * 999
End Sub


Me dice Overflow en la multiplicación, pero la variable B puede almacenar el resultado. :huh:

@karcrack: brillante deducción. ;)

DoEvents! :P
#15
Un número palíndromo es aquel que se lee igual si lo damos la vuelta, ejemplos:
98789
121
345543


El palíndromo más grande de la multiplicación de dos números de dos cifras es:
9009 = 91 X 99

¿Cuál sería el palíndromo más grande de la multiplicación de dos números de TRES cifras?




Normas del reto:

1.-NO es válido precargar valores.

2.-Estructura de la función:
Código (vb) [Seleccionar]
Public Function PE4_Psyke1(Optional Byval lCifras As Long = 3) As Double

3.-La función debe de ser válida para todas las cifras que se le pasen por el argumento.

4.-El resultado correcto es:
906609

Reto original:

http://projecteuler.net/problem=4


DoEvents! :P
#16
Bueno he hecho unos test, aquí está el código:


Option Explicit
Private ManagerPrime    As New clsPrime

Private Sub Form_Load()
Dim Q                   As Long
Dim t                   As New CTiming
Const LOOPS             As Long = 500

   If App.LogMode = 0 Then MsgBox "¡Compila!", vbCritical: End
   
   Me.AutoRedraw = True
   Me.Print "Con " & LOOPS & " vueltas"
   Me.Print
   
   t.Reset
   Call ManagerPrime.Clear
   ManagerPrime.BufferLimitIndex(7000) = &H7FFFFFFF
   
   For Q = 1 To LOOPS
       ProyectEuler3_ByBlack
   Next Q
   Me.Print "BlackZeroX -> ", t.sElapsed
   
   t.Reset
   For Q = 1 To LOOPS
       ProyectEuler3_ByDark
   Next Q
   Me.Print "DarkMatrix -> ", t.sElapsed
   
   t.Reset
   For Q = 1 To LOOPS
       PE3_DarkmodPsyke1
   Next Q
   Me.Print "DarkmodPsyke1 -> ", t.sElapsed
   
   t.Reset
   For Q = 1 To LOOPS
       PE3_Psyke1
   Next Q
   Me.Print "Psyke1 -> ", , t.sElapsed
   
   Set ManagerPrime = Nothing
End Sub

Public Function ProyectEuler3_ByBlack(Optional ByVal lNumber As Double = 600851475143#) As Double
'Dim ManagerPrime    As clsPrime
Dim auxn            As Double
Dim auxd            As Double
Dim i               As Long
   'Set ManagerPrime = New clsPrime
   While lNumber > 1
       'DoEvents
       auxd = lNumber / ManagerPrime.Prime(i)
       auxn = Fix(auxd)
       If (auxd = auxn) Then
           lNumber = auxn
       Else
           i = (i + 1)
       End If
   Wend
   ProyectEuler3_ByBlack = ManagerPrime.Prime(i)
   'Set ManagerPrime = Nothing
End Function



Public Function ProyectEuler3_ByDark(Optional ByVal lNumber As Double = 600851475143#) As Double

   Dim n As Double
   Dim A As Double
   Dim B As Double

   Do

       n = n + 1

       A = lNumber / n
       B = Fix(lNumber / n)

       If A - B = 0 Then

           lNumber = B
           ProyectEuler3_ByDark = n
           n = 1

       End If

   Loop Until lNumber = 1

End Function

Public Static Function PE3_DarkmodPsyke1(Optional ByVal dNumber As Double = 600851475143#) As Double
Dim lCount                              As Long
Dim dDiv                                As Double

   Do While dNumber > 1
       lCount = lCount + &H1
       dDiv = dNumber / lCount

       If dDiv = Fix(dDiv) Then
           dNumber = dDiv
           PE3_DarkmodPsyke1 = lCount
           lCount = &H1
       End If
   Loop
End Function

Public Static Function PE3_Psyke1(Optional ByVal dNumber As Double = 600851475143#) As Double
Dim lCount                              As Long
Dim dDiv                                As Double

   dDiv = dNumber / 2

   If dDiv = Fix(dDiv) Then
       dNumber = dDiv
   End If

   lCount = &H1

   Do
       lCount = lCount + &H2
       dDiv = dNumber / lCount

       If dDiv = Fix(dDiv) Then
           dNumber = dDiv
           dDiv = dNumber / 2

           If dDiv = Fix(dDiv) Then
               dNumber = dDiv
           End If

           PE3_Psyke1 = lCount
           lCount = &H1
       End If
   Loop Until dNumber = 1
End Function


Y aquí unos resultados:







Obviamente a la larga gana la función de BlackZeroX puesto que no tiene que calcular casi nada... :¬¬
Yo personalmente me quedaría con la mía. :silbar:

Voy posteando el siguiente. :)

DoEvents! :P
#17
@BlackZeroX  



:¬¬ :laugh:

La próxima vez aclararé que NO es válido precargar valores. Así pierde la gracia... :silbar:




Esta es mi forma de hacerlo (sé que se puede simplificar código, pero en esta ocasión no me interesa):

Código (vb) [Seleccionar]
Public Static Function PE3_Psyke1(Optional ByVal dNumber As Double = 600851475143#) As Double
Dim lCount                              As Long
Dim dDiv                                As Double

   dDiv = dNumber / 2

   If dDiv = Fix(dDiv) Then
       dNumber = dDiv
   End If

   lCount = &H1

   Do
       lCount = lCount + &H2
       dDiv = dNumber / lCount

       If dDiv = Fix(dDiv) Then
           dNumber = dDiv
           dDiv = dNumber / 2

           If dDiv = Fix(dDiv) Then
               dNumber = dDiv
           End If
           
           PE3_Psyke1 = lCount
           lCount = &H1
       End If
   Loop Until dNumber = 1
End Function


Ejemplo:
Código (vb) [Seleccionar]

   Debug.Print PE3_Psyke1 ' 6857


DoEvents! :P
#18
Cita de: $Edu$ en 31 Enero 2013, 15:08 PM
No me gustan estos retos donde gana el que sabe buscar mejor en google jaja.

Si alguien es tan estúpido como para hacer eso adelante. No aprenderá nada y encima se estará engañando a sí mismo. :¬¬
Además, hay muchas formas de hacerlo. ;)

DoEvents! :P
#19
Los factores primos de 13195 son 5, 7, 13 and 29.
¿Cual es el factor primo más grande del numero 600851475143?

Debe devolver el número:
6857

http://projecteuler.net/problem=3

Estructura:
Código (vb) [Seleccionar]
Public Function ProyectEuler3(Optional ByVal lNumber As Double = 600851475143) As Double

DoEvents! :P
#20
Igual el botón no está en ese nivel. :rolleyes: Me explico:
FindWindowEx() te saca el hwnd de un objeto contenido en el primer nivel de Game Emulator V7.0.
Seguramente ese botón no se encuentre en exactamente ahí.
Yo creo que si sacas el hwnd del botón con el Spy++ haces un GetParent() no coincide con el hwnd de Game Emulator V7.0.
Posible solución: api EnumChildWindows().

¡Suerte! ;)

DoEvents! :P