Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: 79137913 en 14 Febrero 2011, 19:42 PM

Título: [RETO] IsFibonacciNumber(N as long) as Boolean
Publicado por: 79137913 en 14 Febrero 2011, 19:42 PM
HOLA!!!

Bueno, un reto facil, dada la funcion:

IsFibonacciNumber(N as long) as Boolean

Se le da un numero entero sea Positivo o Negativo la funcion devolvera True si efectivamente es un numero perteneciente a la serie y false si no pertenece.

N maximo =46340

Para informacion acerca de la Secuencia de Fibonacci:
http://tinyurl.com/4ar5pd4

Obviamente vamos a usar para testear:
http://foro.elhacker.net/programacion_visual_basic/src_cfrogcontestcls_by_mr_frog_copy-t318871.0.html

XD


GRACIAS POR LEER!!!
Título: Re: [RETO] IsFibonacciNumber(N as long)
Publicado por: Elemental Code en 14 Febrero 2011, 19:59 PM
wiiiiii
siempre me gusto fibbonacci :D

che pero los numeros que nos vas a dar van de 1 a infinito? o hay algun tope?

Ya le entro :D



EDITO:

Esto puede ser muy lento, despues lo optimizo
por ahora anda bien :P

Código (vb) [Seleccionar]
Public Function IsFibonacci(ByRef lNumber As Long) As Boolean
Dim i As Long 'anterior
Dim y As Long 'actual
Dim x As Long 'Restultado a checkear
i = 1
y = 1
    Do While x < lNumber
        x = i + y
        i = y
        y = x
        If x = lNumber Then IsFibonacci = True: Exit Function
    Loop
    IsFibonacci = False
End Function


Título: Re: [RETO] IsFibonacciNumber(N as long)
Publicado por: Psyke1 en 14 Febrero 2011, 20:29 PM
Que malos sois justo mañana tengo examen y me poneis retos! :(
No me podré resistir, asi que si no es hoy por mi noche o mañana posteo algo. ;)
Está interesante! :)

DoEvents! :P
Título: Re: [RETO] IsFibonacciNumber(N as long)
Publicado por: raul338 en 14 Febrero 2011, 20:40 PM
Che para mi deberia ser solo positivo, porque para ser negativo SIEMPRE hay que poner un limite para empezar. Sino no tenes cierta seguridad de si el numero pertenece a la serie o no. O sea, de 1 hacia adelante :P
Título: Re: [RETO] IsFibonacciNumber(N as long)
Publicado por: DarkMatrix en 14 Febrero 2011, 20:43 PM
Bueno aqui dejo mi Funcion xD

Código (vb) [Seleccionar]
Function isFibbonacciNum(ByVal lNumber As Long) As Boolean

   Dim Fn0 As Double
   Dim Fn1 As Double
   Dim i   As Double
   Dim Num As Double

   Fn0 = 0
   Fn1 = 1
   
   isFibbonacciNum = False

   If lNumber = 0 Or lNumber = 1 Then isFibbonacciNum = True: Exit Function

   For i = 1 To lNumber

       Num = Fn0 + Fn1
       
       Fn0 = Fn1
       Fn1 = Num

       If Num = lNumber Then isFibbonacciNum = True: Exit Function

       If Num > lNumber Then Exit Function

   Next

End Function


@Elemental Code
La funcion da error con numeros grandes ( valor long maximo  = 2.147.483.647 ) y devuelve falso para los numeros 0 y 1 cuando deberian ser true o.O
Título: Re: [RETO] IsFibonacciNumber(N as long)
Publicado por: Psyke1 en 14 Febrero 2011, 21:14 PM
Aquí dejo la mía:

Código (vb) [Seleccionar]
Public Static Function IsFibonacciMrFrog(ByVal lngNumber As Long) As Boolean
Dim dblRaised                                       As Double
Dim dblSum                                          As Double
Dim dblSqr                                          As Double

   dblRaised = lngNumber * lngNumber
   dblSum = dblRaised + dblRaised + dblRaised + dblRaised + dblRaised + &H4
   dblSqr = Sqr(dblSum)
   IsFibonacciMrFrog = (dblSqr - CLong(dblSqr) = &H0)
   If IsFibonacciMrFrog Then Exit Function
   dblSum = dblSum - &H8
   dblSqr = Sqr(dblSum)
   IsFibonacciMrFrog = (dblSqr - CLong(dblSqr) = &H0)
End Function


Código (vb) [Seleccionar]
Private Sub Form_Load()
Dim x           As Long
Dim s           As String

   For x = 0 To 100
       If IsFibonacciMrFrog(x) Then
           s = s & x & " "
       End If
   Next
   Debug.Print s
End Sub


Resultado:
0 1 2 3 5 8 13 21 34 55 89

DoEvents! :P
Título: Re: [RETO] IsFibonacciNumber(N as long)
Publicado por: Elemental Code en 15 Febrero 2011, 01:59 AM
para 1 la arreglo al toq.

0 no es de fibonacci :S

fibonacci se arma asi

El numero siguiente es la suma de los dos anteriores.

juraria que el 0 no iba :S

que era
1 1 2 3 5 8 13 21...

lo se porque un amigo la usaba de password y era muy facil :D
Título: Re: [RETO] IsFibonacciNumber(N as long)
Publicado por: DarkMatrix en 15 Febrero 2011, 02:32 AM
Cito directo de wikipedia:

CitarEn matemáticas, la sucesión de Fibonacci es la siguiente sucesión infinita de números naturales:

   0,1,1,2,3,5,8,13,21,34,55,89,144

La sucesión inicia con 0 y 1, y a partir de ahí cada elemento es la suma de los dos anteriores.

Link: http://es.wikipedia.org/wiki/Sucesi%C3%B3n_de_Fibonacci (http://es.wikipedia.org/wiki/Sucesi%C3%B3n_de_Fibonacci)
Título: Re: [RETO] IsFibonacciNumber(N as long)
Publicado por: 79137913 en 15 Febrero 2011, 02:57 AM
HOLA!!!

Igual si siguen buscando van a ver que la secuencia empieza en el -infinito si se quieren fijar.

GRACIAS POR LEER!!!
Título: Re: [RETO] IsFibonacciNumber(N as long)
Publicado por: seba123neo en 15 Febrero 2011, 04:21 AM
Hola, creo que la forma mas rapida de todas por lo que he visto de los muhcos algoritmos que hay, es meter todos los numeros ya calculados en un array y solo buscar en el.

saludos.
Título: Re: [RETO] IsFibonacciNumber(N as long)
Publicado por: BlackZeroX en 15 Febrero 2011, 06:55 AM
.
@Mr. Frogs

Tu funcion tiene Horrores de logica básica ( Conversion de un Double a un Integer ).

Aquí la mía (Aplicando algo que dijo seba123neo pero en la forma mas practica posible para el ahorro de memoria) :

Código (Vb) [Seleccionar]


Option Explicit

Function isFibbonacci(ByVal vVal&) As Boolean
Dim dbl_v#(0 To 1)
Dim byt_i                   As Byte
    If Not vVal& And &H80000000 Then
        dbl_v#(1) = 1
        dbl_v#(0) = 0
        Do Until dbl_v#(byt_i) >= vVal&
            dbl_v#(byt_i) = dbl_v#(byt_i) + dbl_v#(byt_i Xor 1)
            byt_i = byt_i Xor 1
        Loop
        If dbl_v#(0) = vVal& Or dbl_v#(1) = vVal& Then
            isFibbonacci = True
        End If
    End If
End Function

Private Sub Form_Load()
Dim lng_i&
   For lng_i& = -214748 To 2147483647
       If isFibbonacci(lng_i&) = True Then
           Debug.Print lng_i&
       End If
   Next lng_i&
End Sub





0
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040
1346269
2178309
3524578
5702887
9227465
14930352
24157817
39088169
63245986
102334155
165580141
267914296
433494437
701408733
1134903170
1836311903



P.D.: DarkMatrix tu juego aun esta Online, cual es la pagina?

Temibles Lunas!¡.
Título: Re: [RETO] IsFibonacciNumber(N as long)
Publicado por: 79137913 en 15 Febrero 2011, 11:51 AM
HOLA!!!

Aca va mi codigo, Casi identico al de Mr Frog :S igual Lo tenia armado desde antes.

Me falta agregar la comprobacion para los negativos.

Código (vb) [Seleccionar]
Private Function IsFibonacci7913(ByVal N As Long) As Boolean
   If N < &H0 Then
   If N = -1 Then IsFibonacci7913 = True: Exit Function
        Dim Neg0 As Double
        Dim Neg1 As Double
        Dim Neg2 As Double
       Neg0 = &H0
       Neg1 = &H1
       Do While Not (Neg1 < N)
           Neg2 = Neg0
           Neg0 = Neg1
           Neg1 = (Neg2 - Neg0)
       Loop
       If N = Neg2 Then IsFibonacci7913 = True
       Exit Function
   End If
   If N = &H0 Then IsFibonacci7913 = True: Exit Function
    Dim Aux0 As Double
    Dim Aux1 As Double
    Dim Aux2 As Double
   Aux2 = N * N
   Aux2 = Aux2 + Aux2 + Aux2 + Aux2 + Aux2
   Aux1 = Aux2 + &H4
   Aux1 = Sqr(Aux1)
   If Aux1 - (CLng(Aux1)) = &H0 Then IsFibonacci7913 = True: Exit Function
   Aux0 = Aux2 - &H4
   Aux0 = Sqr(Aux0)
   If Aux0 - (CLng(Aux0)) = &H0 Then IsFibonacci7913 = True
End Function


Nota:
1)Negafibonacci (ver fuente).
2)Comprobacion de Numeros enteros positivos sean de Fibbonacci (ver fuente).

Fuente1: http://www.worldlingo.com/ma/enwiki/es/Negafibonacci
Fuente2: http://gaussianos.com/algunas-curiosidades-sobre-los-numeros-de-fibonacci/

GRACIAS POR LEER!!!
Título: Re: [RETO] IsFibonacciNumber(N as long)
Publicado por: Psyke1 en 15 Febrero 2011, 13:48 PM
Mi función y la de 79137913 solo es valida hasta 46340... (estoy trabajando en ello) :rolleyes:

@79137913
Las varibles donde estan declaradas? :huh:

@BlackZer0x
CitarTu funcion tiene Horrores de logica básica ( Conversion de un Double a un Integer ).
Creo que te equivocas, lo que hago es comprobar si el resultado es un número exacto o no, de esta manera :

Si tengo el numero 234.365 seria :
Código (vb) [Seleccionar]

234.365 - 234 = 0 ' Falso (el número 234.365 NO es entero)

Pero si es el numero 456 :
Código (vb) [Seleccionar]

456 - 456 = 0 ' Verdadero (el número 456 es entero)


DoEvents! :P
Título: Re: [RETO] IsFibonacciNumber(N as long)
Publicado por: 79137913 en 15 Febrero 2011, 13:59 PM
HOLA!!!

Hasta ahora:
0) SOLO TESTEADO CON NUMEROS POSITIVOS
1) A MI FUNCION EN EL TEST SE LE QUITO LA PARTE DE LOS NEGATIVOS
2) ACTUALIZADO CON MI ULTIMA FUNCION
3) RESULTADOS COMPILANDO

"******TEST HECHO POR 79137913******"
**PRUEBA CON NUMEROS POSITIVOS HASTA EL MAX**
7913: 6,891 msec
BZro: 35,604 msec
E__C: 1,786 msec
Frog: 6,319 msec
Dark: 18,452 msec


Para ver el test: http://pastebin.com/LJm02bAw

GRACIAS POR LEER!!!
Título: Re: [RETO] IsFibonacciNumber(N as long)
Publicado por: tonomac3 en 15 Febrero 2011, 15:52 PM
Y yo que me iba a rendir. Ahora largo el celu y me pongo a programar
Título: Re: [RETO] IsFibonacciNumber(N as long) as Boolean
Publicado por: BlackZeroX en 15 Febrero 2011, 18:41 PM
Cita de: Mr. Frog © en 15 Febrero 2011, 13:48 PM

@BlackZer0xCreo que te equivocas, lo que hago es comprobar si el resultado es un número exacto o no, de esta manera :


Código (vb) [Seleccionar]


Option Explicit

Function isFibbonacci(ByVal vVal&) As Boolean
Dim dbl_v#(0 To 1)
Dim byt_i                   As Byte
    If Not vVal& And &H80000000 Then
        dbl_v#(1) = 1
        dbl_v#(0) = 0
        Do Until dbl_v#(byt_i) >= vVal&
            dbl_v#(byt_i) = dbl_v#(byt_i) + dbl_v#(byt_i Xor 1)
            byt_i = byt_i Xor 1
        Loop
        If dbl_v#(0) = vVal& Or dbl_v#(1) = vVal& Then
            isFibbonacci = True
        End If
    End If
End Function

Private Sub Form_Load()
Dim lng_i&
   For lng_i& = -214748 To 2
       If IsFibonacciMrFrog(lng_i&) = True Then
           Debug.Print lng_i&,
       End If
       If isFibbonacci(lng_i&) = True Then
           Debug.Print lng_i&
       End If
   Next lng_i&
End Sub

Public Static Function IsFibonacciMrFrog(ByVal lngNumber As Long) As Boolean
Dim dblRaised                                       As Double
Dim dblSum                                          As Double
Dim dblSqr                                          As Double

   dblRaised = lngNumber * lngNumber
   dblSum = dblRaised + dblRaised + dblRaised + dblRaised + dblRaised + &H4
   dblSqr = Sqr(dblSum)
   IsFibonacciMrFrog = (dblSqr - Int(dblSqr) = &H0)
   If IsFibonacciMrFrog Then Exit Function
   dblSum = dblSum - &H8
   dblSqr = Sqr(dblSum)
   IsFibonacciMrFrog = (dblSqr - Int(dblSqr) = &H0)
End Function



Creer no es bueno:
Usa clng() en lugar de int(), ( en vb6: int = 2 bytes, Double = 8 bytes, long = 4 bytes. ¿cual crees que abarca una cantidad mayor? )

los numeros superan a int().

Estos valores los calcule del 0 al 2147483647 (MAXIMO Numero en Long))



0
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040
1346269
2178309
3524578
5702887
9227465
14930352
24157817
39088169
63245986
102334155
165580141
267914296
433494437
701408733
1134903170
1836311903



Dulces lunas!¡.
Título: Re: [RETO] IsFibonacciNumber(N as long) as Boolean
Publicado por: 79137913 en 15 Febrero 2011, 18:48 PM
HOLA!!!

Black tiene razon, no me habia dado cuenta :P

GRACIAS POR LEER!!!
Título: Re: [RETO] IsFibonacciNumber(N as long) as Boolean
Publicado por: Psyke1 en 15 Febrero 2011, 19:14 PM
@Black
Oops... Lo peor de todo es que sé los bytes correspondientes a cada variable. :¬¬
No se porque pensaba que Int() era direfente de CInt() ... En fin, cosas mías, gracias por la corrección. ;)

DoEvents! :P
Título: Re: [RETO] IsFibonacciNumber(N as long) as Boolean
Publicado por: Elemental Code en 15 Febrero 2011, 19:31 PM
colgandome de lo que dijeron de cual era el limite se me ocurrio hacer trampa  :silbar:
Código (vb) [Seleccionar]
Public Function FibonacciChecker_eCode(ByRef lNumero As Long) As Boolean
Dim FiSplit() As String
Dim i As Long
Const Fi As String = "0,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368"
FiSplit() = Split(Fi, ",", -1, vbBinaryCompare)

For i = 0 To 23
   If lNumero = CLng(FiSplit(i)) Then FibonacciChecker_eCode = True: Exit Function
   If lNumero < CLng(FiSplit(i)) Then FibonacciChecker_eCode = False: Exit Function
Next i
End Function


ahora reviso el codigo que no le tenia fe y resulto ser el mas rapido :P


Edito :D

Aca dejo optimizado el codigo que use antes, ahora reconoce el 0 y el 1
Código (vb) [Seleccionar]
Public Function IsFibonacci_eCode(ByRef lNumber As Long) As Boolean
Dim i As Long 'anterior
Dim y As Long 'actual
Dim x As Long 'Restultado a checkear
y = 1
   Do While x < lNumber
       If x = lNumber Then IsFibonacci_eCode = True: Exit Function
       x = i + y
       i = y
       y = x
   Loop
   IsFibonacci_eCode = False
End Function


Estoy maserando otro codigo, paciencia que ya voy ;)



Wiiiii :D

Gracias a MrFrog que me dijo que use el do-loop para armar esto :D
Código (vb) [Seleccionar]
Public Function IsFibonacci_eCodeMatrix(ByRef lNumero As Long) As Boolean
    Dim f() As Long
    Dim i As Long
    ReDim f(1)
    f(0) = 0
    f(1) = 1
    i = 2
    Do
        Debug.Print i; ","; f(i - 1)
        If lNumero = f(i - 1) Then IsFibonacci_eCode = True:  Exit Function
        If lNumero < f(i - 1) Then IsFibonacci_eCode = False:  Exit Function
        ReDim Preserve f(i)
        f(i) = f(i - 1) + f(i - 2)
        i = i + 1
    Loop
End Function


Tres codes para un reto. toy demasiado al pedo  :)


Título: Re: [RETO] IsFibonacciNumber(N as long) as Boolean
Publicado por: BlackZeroX en 15 Febrero 2011, 19:40 PM
.
Se vale hacer trampa? mmm, pues bueno aqui estan TODOS los numeros Fibonacci hasta el numero Máximo de Long.

Código (Vb) [Seleccionar]


Public Function IsFibonacci_WithCache(ByRef vVal As Long) As Boolean
Dim lng_i          As Long
Dim var_cache()
    var_cache() = Array(0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903)
    For lng_i = 0 To UBound(var_cache)
        If var_cache(lng_i) = vVal Then IsFibonacci_WithCache = True: Exit For
    Next lng_i
End Function



Temibles Lunas!¡.
Título: Re: [RETO] IsFibonacciNumber(N as long) as Boolean
Publicado por: Psyke1 en 15 Febrero 2011, 19:53 PM
Ook, con trampa creo que gano... :rolleyes:

Código (vb) [Seleccionar]
Private Const sF As String = " 0 1 2 35 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903 "

Public Static Function IsFibonacci_WithCache_MrFrog(ByRef lngNum As Long) As Boolean
    IsFibonacci_WithCache_MrFrog = InStrB(1, sF, " " & lngNum & " ")
End Function


DoEvents! :P
Título: Re: [RETO] IsFibonacciNumber(N as long) as Boolean
Publicado por: ignorantev1.1 en 15 Febrero 2011, 21:53 PM
Código (vb) [Seleccionar]
Private Const sF As String = "0 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903"

Public Static Function IsFibonacci_WithCache_MrFrog(ByRef lngNum As Long) As Boolean
   IsFibonacci_WithCache_MrFrog = InStr(1, sF, lngNum, vbBinaryCompare)
End Function

private sub Form_load()
  msgbox isfibonacci_withcache_mrfrog(4)  '<------ True!!!!!
end sub


Código (vb) [Seleccionar]

Private Const sF As String = " 0 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903 "

Function isfibonacciIgno(IngNum As Long) As Boolean
   isfibonacciIgno = InStr(sF, " " & IngNum & " ")
End Function


;)
Título: Re: [RETO] IsFibonacciNumber(N as long) as Boolean
Publicado por: Psyke1 en 16 Febrero 2011, 00:28 AM
Ya está corregida. :)

Test:
Option Explicit

Private Const sF As String = " 0 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903 "

Function isfibonacciIgno(IngNum As Long) As Boolean
   isfibonacciIgno = InStr(sF, " " & IngNum & " ")
End Function

Public Static Function IsFibonacci_WithCache_MrFrog(ByRef lngNum As Long) As Boolean
   IsFibonacci_WithCache_MrFrog = InStrB(1, sF, " " & lngNum & " ")
End Function

Public Function IsFibonacci_WithCache(ByRef vVal As Long) As Boolean
Dim lng_i          As Long
Dim var_cache()
   var_cache() = Array(0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903)
   For lng_i = 0 To UBound(var_cache)
       If var_cache(lng_i) = vVal Then IsFibonacci_WithCache = True: Exit For
   Next lng_i
End Function

Public Function FibonacciChecker_eCode(ByRef lNumero As Long) As Boolean
Dim FiSplit() As String
Dim i As Long
Const Fi As String = "0,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368"
FiSplit() = Split(Fi, ",", -1, vbBinaryCompare)

For i = 0 To 23
   If lNumero = CLng(FiSplit(i)) Then FibonacciChecker_eCode = True: Exit Function
   If lNumero < CLng(FiSplit(i)) Then FibonacciChecker_eCode = False: Exit Function
Next i
End Function

Private Sub Form_Load()
If App.LogMode = 0 Then End 'Compile it, stupid!

Dim t As New CTiming
Dim x As Long
   AutoRedraw = True
   
   t.Reset
   For x = 0 To 100000
       IsFibonacci_WithCache_MrFrog x
   Next
   Me.Print "MrFrog", , t.sElapsed
   
   t.Reset
   For x = 0 To 100000
       isfibonacciIgno x
   Next
   Me.Print "ignorantev1.1", , t.sElapsed
   
   t.Reset
   For x = 0 To 100000
       IsFibonacci_WithCache x
   Next
   Me.Print "BlackZer0x", , t.sElapsed
   
   t.Reset
   For x = 0 To 100000
       FibonacciChecker_eCode x
   Next
   Me.Print "Elemental Code", t.sElapsed
End Sub


Resultado:
(http://img401.imageshack.us/img401/3766/nuevaimagendemapadebitswv.png)

DoEvents! :P
Título: Re: [RETO] IsFibonacciNumber(N as long) as Boolean
Publicado por: ignorantev1.1 en 16 Febrero 2011, 03:32 AM
Código (vb) [Seleccionar]

rivate Const sF As String = "0 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903"

Public Static Function IsFibonacci_WithCache_MrFrog(ByRef lngNum As Long) As Boolean
    IsFibonacci_WithCache_MrFrog = InStr(1, sF, (" " & lngNum & " "), vbBinaryCompare)
End Function

private sub form_load()
    msgbox IsFibonacci_WithCache_MrFrog(0) <------ FALSE!!!
    msgbox IsFibonacci_WithCache_MrFrog(1836311903) <------ FALSE!!!
end sub


:xD no me hagas caso  :¬¬
Título: Re: [RETO] IsFibonacciNumber(N as long) as Boolean
Publicado por: Elemental Code en 16 Febrero 2011, 03:46 AM
rana, pone los otros codigos tambien.

No solamente los que buscan en arrays.
Manejando arrays soy un queso.
Título: Re: [RETO] IsFibonacciNumber(N as long) as Boolean
Publicado por: Psyke1 en 16 Febrero 2011, 08:55 AM
Cita de: Elemental Code en 16 Febrero 2011, 03:46 AM
rana, pone los otros codigos tambien.

No solamente los que buscan en arrays.
Manejando arrays soy un queso.
¿Ya está puestos en la pág anterior no? :huh:

@ignorantev1.1
Dios, soy un desastre, al llamar tu constante igual que la mía, al copiarlo para el test, copié la mía en vez de la tuya... :¬¬

PD: Tabla de resultados actualizada! :D

DoEvents! :P
Título: Re: [RETO] IsFibonacciNumber(N as long) as Boolean
Publicado por: 79137913 en 16 Febrero 2011, 12:05 PM
HOLA!!!

Creo que ya terminamos :P :

TABLA POSITIVOS Y NEGATIVOS
"******TEST HECHO POR 79137913******"
**PRUEBA CON NUMEROS +/- HASTA EL MAX**
7913: 26,316 msec
BZro: 49,330 msec


Comprobacion de numeros de Fibonacci Positivos:
Ganador    Elemental Code
2do Puesto Mr Frog
3er Puesto 79137913

Comprobacion de numeros de Fibonacci Positivos (trampa):
Ganador    Mr Frog
2do Puesto Ignorante v1.1
3er Puesto BlackZeroX[escala de grises :P]

Comprobacion de numeros de Fibonacci Enteros (+/-):
Ganador 79137913
2do Puesto BlackZeroX[/escala de grises :P]


GRACIAS POR LEER!!!
Título: Re: [RETO] IsFibonacciNumber(N as long) as Boolean
Publicado por: BlackZeroX en 16 Febrero 2011, 18:39 PM
Cita de: 79137913 en 16 Febrero 2011, 12:05 PM
HOLA!!!

Creo que ya terminamos...


Comprobacion de numeros de Fibonacci Enteros (+/-):
Unico Participante 79137913


No me gusto eso ya que mi funcion soporta numeros negativos (los compruevo en bits).

Dulces Lunas!¡.
Título: Re: [RETO] IsFibonacciNumber(N as long) as Boolean
Publicado por: 79137913 en 16 Febrero 2011, 19:04 PM
HOLA!!!

@BlackZeroX▓▓▒▒░░ : Sorry no me habia dado cuenta :P.

Ya modifique las cosas

Cita de: 79137913 en 16 Febrero 2011, 12:05 PM
HOLA!!!

Creo que ya terminamos :P :

TABLA POSITIVOS Y NEGATIVOS
"******TEST HECHO POR 79137913******"
**PRUEBA CON NUMEROS +/- HASTA EL MAX**
7913: 26,316 msec
BZro: 49,330 msec


Comprobacion de numeros de Fibonacci Positivos:
Ganador    Elemental Code
2do Puesto Mr Frog
3er Puesto 79137913

Comprobacion de numeros de Fibonacci Positivos (trampa):
Ganador    Mr Frog
2do Puesto Ignorante v1.1
3er Puesto BlackZeroX[escala de grises :P]

Comprobacion de numeros de Fibonacci Enteros (+/-):
Ganador 79137913
2do Puesto BlackZeroX[/escala de grises :P]


GRACIAS POR LEER!!!

GRACIAS POR LEER!!!