[RETO] Project Euler 2

Iniciado por Psyke1, 24 Enero 2013, 19:05 PM

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

Karcrack

Cita de: seba123neo en 25 Enero 2013, 14:15 PM
la solucion mas rapida en cualquier lenguaje, es precargar los numeros ya calculados en un array y simplemente recorrer este y sumar los pares.
La más rápida es sacar el resultado precalculado con un print :P

BlackZeroX

Cita de: Karcrack en 25 Enero 2013, 15:07 PM
La más rápida es sacar el resultado precalculado con un print :P

Exactamente!¡.

P.D.: @Psyke1 aun no se va dolores ¿Que hago con ella?.

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

Psyke1

#22
Cita de: Karcrack en 25 Enero 2013, 15:07 PM
La más rápida es sacar el resultado precalculado con un print :P
¡Qué buena idea! :D
¡aquí dejo mi última versión! :xD

Código (vb) [Seleccionar]

Option Explicit

'by psyke1
'creditos a karcrack
'25/01/13

Private Static Function Psk_v2(Optional ByVal lLimit As Long = &H3D0900) As Long
Dim q As Long
Dim r As Long
Dim tg As Long
Dim w As Long
Dim Q2 As Long
Dim matriz() As Long
   
   tg = &HDF98
   r = &HA
   For q = 0 To &HF
       r = r + &HA
   Next q
   
   tg = tg Xor r
   r = tg Xor r
   tg = tg Xor r
   
   lLimit = lLimit + &H345
   
   Do While w: w = w - Val(w): Loop
   
   If Not r And &H1 Then
       Psk_v2 = ChrW(&H34) & ChrW(54)
       
       If w = 0 Then
           lLimit = lLimit - &H345
           lLimit = lLimit \ 5
           Psk_v2 = Psk_v2 & CStr(&H35A4)
           
           If ((lLimit * &H5) <> &H3D0900) And Not (&H1 + &H3 = &H5) Then
               Psk_v2 = Psk_v2 - &H29 + &H93
               Do: Beep: DoEvents: DoEvents: Loop
           End If
       Else
           Psk_v2 = (((w And &HFF000000) \ &H1000000) And &HFF&) Or _
               ((w And &HFF0000) \ &H100&) Or _
               ((w And &HFF00&) * &H100&) Or _
               (Val(w And &H7F&) * &H1000000) Xor tg
       End If
   Else
       Q2 = Q2 ^ 5 * Val(Str(9873)) And tg
   End If
End Function


Si hago esto:
Código (vb) [Seleccionar]
Private Sub Form_Load()
   Debug.Print Psk_v2
End Sub


Devuelve esto:
4613732

Es mucho más rápida. ¿alguien podría probar con otro número? :silbar:




@BlackZeroX

Esperemos que dolores se vaya antes que Euler, porque aún nos quedan 409 retos. :laugh:

DoEvents! :P

Danyfirex

@Psyke1

cuando no le pongo parámetro funciona bien. pero cuando le paso otro parametro no funciona y me hace sonar las bocinas con beeps :S

saludos