[RETO] Project Euler 2

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

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

BlackZeroX

#10
Demasiados números me servirán para una jaqueca...

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

Karcrack

Psyke ya ha encontrado la solución óptima, porque tal y como apunta @imoen cada 3er número de Fibonacci es par...

79137913

#12
HOLA!!!

Aqui una respuesta simple, ando sin time para hacer algo mejor:
Código (vb) [Seleccionar]
Private Function Fibbo7913(Optional Limit As Long = 4000000) As Long
Dim aux  As Long
Dim act  As Long
Dim ant  As Long
Dim suma As Long
    ant = 1
    act = 1
    suma = 1
    Do
        If act And 1 Then suma = suma + act 'operacion binaria que me dice si es par o no
        aux = act
        act = act + ant
        ant = aux
    Loop While act < Limit
    Fibbo7913 = suma
End Function


P.D: esto me hace recordar a: [RETO] IsFibonacciNumber(N as long)

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*

imoen

Hola


Bueno os comento
Nadie me hace caso usar un array de 3 elementos :P

79137913->   codigo muy clarito y funcional ,

Psyke1-> premiooo,  es el código mas rápido seguramente , lo del aspersan eran punteros ?¿?¿ que no me acuerdo muy bien jeje, jeje al menos me ha hecho caso con la numeración par xDD

rob114->[quotecomo ni a mí ni a mi core 2 duo nos importa la velocidad][/quote] , deberia de importar , y has abierto el cajon

Y si aplicamos recursividad a este reto  ?¿

Al final veo que me instalo el visual basic XDD otro reto mas y lo tengo que poner ehh xDD

bs imoen
Medion Akoya p6624
i-3 370
8 gigas DDR 3 RAM //750 hd 5400
gforce gt425 optimus XDD
Esta es mi casa, mi pueblo , o lo que queda de el aun asi lucharemos ... POR BENALIA....!!

srta imoen

Psyke1

#14
@79137913
¡Tu función devuelve un array! :laugh:

Además, no devuelve el resultado deseado:
Código (vb) [Seleccionar]
Private Sub Form_Load()
   Debug.Print Fibbo7913
End Sub


Código (vb) [Seleccionar]

524288 '// debería de ser: 4613732


También recuerdo que debe de funcionar correctamente contemplando todas las posibilidades.




@imoen
¿Un array de 3 elementos? ¿Qué conseguiríamos con eso? :rolleyes:
Lo del &H sirve para indicar que el número que va a continuación está en base 16.
Y la recursividad está bien para ahorrar código, pero es leeeenta... :-\

DoEvents! :P

79137913

#15
HOLA!!!

Psyke1: Tenes razon, habia un error en mi procedimiento, al corregirlo me di cuenta que el procedimiento de todos estaba errado tambien, dejo mi funcion actualizada en el primer post.
Aclaro aca bien cual es el resultado correcto (que no es el que decis vos por que tiene que ser menor al limite.)

Generar algoritmo que devuelva la suma de los números de la serie de Fibonacci, y esa suma sea menor a 4000000.
PSYKE1 TRADUCI BIEN

RTA correcta:
3524577


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*

Danyfirex

#16
Segun las soluciones es 4613732


esta es la formula de la mio.

B=2
A=Ax4+B
B=A


obviamente tengo que conocer el limite para obtener bien el resultado.

Igual aquí dejo uno mas valido.

Actualizado
Código (vb) [Seleccionar]
Private Function fb(Optional lLimit As Long = 4000000) As Long
Dim fn As Long, f1 As Long, f2 As Long
If lLimit And &H80000000 Then Exit Function
f1 = 1
f2 = f1
Do While f2 < lLimit
fn = f1 + f2
f1 = f2
f2 = fn
If fn Mod 2 = 0 Then
fb = fb + fn
End If
Loop
End Function


Saludos

Psyke1

Disculpad, cometí una errata a la hora de describir el reto.
Post uno actualizado. :-*

PD: ¿Voy poniendo ya el reto 3? :xD

DoEvents! :P

Danyfirex

Cita de: Psyke1 en 25 Enero 2013, 13:49 PM
Disculpad, cometí una errata a la hora de describir el reto.
Post uno actualizado. :-*

PD: ¿Voy poniendo ya el reto 3? :xD

DoEvents! :P

Yo creo que si.  ;-)

seba123neo

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 característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson