comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[RETO] IsFibonacciNumber(N as long) as Boolean

  • 6 Respuestas
  • 2538 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado _katze_

  • *
  • Underc0der
  • Mensajes: 37
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« en: Febrero 16, 2011, 08:51:59 pm »
este es un reto q esta en otro foro y la verdad para empesar a hacer algo lo vamos a hacer pero en .net

Para informacion acerca de la Secuencia de Fibonacci:
http://tinyurl.com/4ar5pd4
codigo de ejemplo para sugerir ideas pero esta en vb6 no hacer de esta manera
Código: [Seleccionar]
Public Static Function IsFibonacci(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

Desconectado mmnava

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #1 en: Febrero 17, 2011, 06:06:23 pm »
che querido este es un ejemplo para una especie de chat entre dos dispositivos conectados a traves del serial port revisalo y cualquier cosa avisame
Código: Visual Basic
  1. Imports System
  2. Imports System.IO.Ports
  3. Imports System.Threading
  4.  
  5. Public Class PortChat
  6.     Shared _continue As Boolean
  7.     Shared _serialPort As SerialPort
  8.  
  9.     Public Shared Sub Main()
  10.         Dim name As String
  11.         Dim message As String
  12.         Dim sComparer As StringComparer = StringComparer.OrdinalIgnoreCase
  13.         Dim readThread As Thread = New Thread(AddressOf Read)
  14.  
  15.         'Crear un nuevo objeto SerialPort con la configuración predeterminada.
  16.        _serialPort = New SerialPort()
  17.  
  18.         'Permitir al usuario establecer las propiedades adecuadas.
  19.        _serialPort.PortName = SetPortName(_serialPort.PortName)
  20.         _serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate)
  21.         _serialPort.Parity = SetPortParity(_serialPort.Parity)
  22.         _serialPort.DataBits = SetPortDataBits(_serialPort.DataBits)
  23.         _serialPort.StopBits = SetPortStopBits(_serialPort.StopBits)
  24.         _serialPort.Handshake = SetPortHandshake(_serialPort.Handshake)
  25.  
  26.         'Juego de lectura / escritura tiempos de espera
  27.        _serialPort.ReadTimeout = 500
  28.         _serialPort.WriteTimeout = 500
  29.  
  30.         _serialPort.Open()
  31.         _continue = True
  32.         readThread.Start()
  33.  
  34.         Console.Write("Name: ")
  35.         name = Console.ReadLine()
  36.  
  37.         Console.WriteLine("Type QUIT to exit")
  38.  
  39.         While (_continue)
  40.             message = Console.ReadLine()
  41.  
  42.             If sComparer.Equals("quit", message) Then
  43.                 _continue = False
  44.             Else
  45.                 _serialPort.WriteLine( _
  46.                     String.Format("<{0}>: {1}", name, message))
  47.             End If
  48.         End While
  49.  
  50.         readThread.Join()
  51.         _serialPort.Close()
  52.     End Sub
  53.  
  54.     Public Shared Sub Read()
  55.         While (_continue)
  56.             Try
  57.                 Dim message As String = _serialPort.ReadLine()
  58.                 Console.WriteLine(message)
  59.             Catch ex As TimeoutException
  60.                 'No hacer nada
  61.            End Try
  62.         End While
  63.     End Sub
  64.  
  65.     Public Shared Function SetPortName(ByVal defaultPortName As String) As String
  66.         Dim newPortName As String
  67.  
  68.         Console.WriteLine("Available Ports:")
  69.         Dim s As String
  70.         For Each s In SerialPort.GetPortNames()
  71.             Console.WriteLine("   {0}", s)
  72.         Next s
  73.  
  74.         Console.Write("COM port({0}): ", defaultPortName)
  75.         newPortName = Console.ReadLine()
  76.  
  77.         If newPortName = "" Then
  78.             newPortName = defaultPortName
  79.         End If
  80.         Return newPortName
  81.     End Function
  82.  
  83.     Public Shared Function SetPortBaudRate(ByVal defaultPortBaudRate As Integer) As Integer
  84.         Dim newBaudRate As String
  85.  
  86.         Console.Write("Baud Rate({0}): ", defaultPortBaudRate)
  87.         newBaudRate = Console.ReadLine()
  88.  
  89.         If newBaudRate = "" Then
  90.             newBaudRate = defaultPortBaudRate.ToString()
  91.         End If
  92.  
  93.         Return Integer.Parse(newBaudRate)
  94.     End Function
  95.  
  96.     Public Shared Function SetPortParity(ByVal defaultPortParity As Parity) As Parity
  97.         Dim newParity As String
  98.  
  99.         Console.WriteLine("Available Parity options:")
  100.         Dim s As String
  101.         For Each s In [Enum].GetNames(GetType(Parity))
  102.             Console.WriteLine("   {0}", s)
  103.         Next s
  104.  
  105.         Console.Write("Parity({0}):", defaultPortParity.ToString())
  106.         newparity = Console.ReadLine()
  107.  
  108.         If newparity = "" Then
  109.             newparity = defaultPortParity.ToString()
  110.         End If
  111.  
  112.         Return CType([Enum].Parse(GetType(Parity), newParity), Parity)
  113.     End Function
  114.  
  115.     Public Shared Function SetPortDataBits(ByVal defaultPortDataBits As Integer) As Integer
  116.         Dim newDataBits As String
  117.  
  118.         Console.Write("Data Bits({0}): ", defaultPortDataBits)
  119.         newDataBits = Console.ReadLine()
  120.  
  121.         If newDataBits = "" Then
  122.             newDataBits = defaultPortDataBits.ToString()
  123.         End If
  124.  
  125.         Return Integer.Parse(newDataBits)
  126.     End Function
  127.  
  128.     Public Shared Function SetPortStopBits(ByVal defaultPortStopBits As StopBits) As StopBits
  129.         Dim newStopBits As String
  130.  
  131.         Console.WriteLine("Available Stop Bits options:")
  132.         Dim s As String
  133.         For Each s In [Enum].GetNames(GetType(StopBits))
  134.             Console.WriteLine("   {0}", s)
  135.         Next s
  136.  
  137.         Console.Write("Stop Bits({0}):", defaultPortStopBits.ToString())
  138.         newStopBits = Console.ReadLine()
  139.  
  140.         If newStopBits = "" Then
  141.             newStopBits = defaultPortStopBits.ToString()
  142.         End If
  143.  
  144.         Return CType([Enum].Parse(GetType(StopBits), newStopBits), StopBits)
  145.     End Function
  146.  
  147.     Public Shared Function SetPortHandshake(ByVal defaultPortHandshake As Handshake) As Handshake
  148.         Dim newHandshake As String
  149.  
  150.         Console.WriteLine("Available Handshake options:")
  151.         Dim s As String
  152.         For Each s In [Enum].GetNames(GetType(Handshake))
  153.             Console.WriteLine("   {0}", s)
  154.         Next s
  155.  
  156.         Console.Write("Stop Bits({0}):", defaultPortHandshake.ToString())
  157.         newHandshake = Console.ReadLine()
  158.  
  159.         If newHandshake = "" Then
  160.             newHandshake = defaultPortHandshake.ToString()
  161.         End If
  162.  
  163.         Return CType([Enum].Parse(GetType(Handshake), newHandshake), Handshake)
  164.     End Function
  165. End Class

espero tu respuesta
el koala :o
« Última modificación: Febrero 17, 2011, 08:26:56 pm por _katze_ »

Desconectado _katze_

  • *
  • Underc0der
  • Mensajes: 37
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #2 en: Febrero 17, 2011, 08:09:42 pm »
es amigo mio todo bn con lo q ponga.....che fakedoor te reto a q agas el reto

Desconectado _katze_

  • *
  • Underc0der
  • Mensajes: 37
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #3 en: Febrero 17, 2011, 08:28:03 pm »
como te dije es muy dificil probar que este code funcione puesto que necesitas el puerto serie y lo que usa.....pero lo mirare un poco

Fakedo0r

  • *
  • Visitante
« Respuesta #4 en: Febrero 18, 2011, 10:26:24 am »
No hagas doble post cabrona  :P , si pillo tiempo libre te dejo la funcion.  ;)


EDITO:

Aqui te dejo mi humilde funcion...

Código: [Seleccionar]
Private Function IsFibonacciNumber(N As Long) As Boolean

    Dim X(2)    As Long
   
    X(Chr(48)) = Chr(48)
    X(Chr(49)) = Chr(49)
   
    If X(Chr(50)) = X(Chr(48)) Or X(Chr(49)) Then IsFibonacciNumber = True
    If X(Chr(50)) <> N Then IsFibonacciNumber = False
   
    For X(Chr(50)) = Chr(48) To N
       
        X(Chr(50)) = X(Chr(48)) + X(Chr(49))
        X(Chr(48)) = X(Chr(49))
        X(Chr(49)) = X(Chr(50))
       
        If X(Chr(50)) = N Then IsFibonacciNumber = True: Exit For

        DoEvents

    Next

End Function


Espero ver la tuya tambien.

Saludos...
« Última modificación: Febrero 18, 2011, 05:06:18 pm por Fakedo0r »

Desconectado Jhonjhon_123

  • *
  • Underc0der
  • Mensajes: 150
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Jhonjhon_123's Software In Developed
« Respuesta #5 en: Febrero 19, 2011, 08:46:59 pm »
Hace mil años ke no pasaba por aki Xd
Bueno, el tio Fake me ha retado a crearme una funcion de este tipo y como yo no soy de los ke dicen NO tan facilmente me dispuse toda la tarde a buscar el como y el porque de esta interesante serie de numeritos XD

Aka les dejo mi code con la funcion de Fibonacci y la comprovacion IsFibonacci (de la serie de Fibonacci), y claro un simple ejemplo pa ke vean como funkan XD

Código: [Seleccionar]
Option Explicit

' By Jhonjhon_123 (J.J.G.P)
' Referencia: http://gaussianos.com/algunas-curiosidades-sobre-los-numeros-de-fibonacci/

Private Sub Form_Load()
Dim D As Long

' Serie de Fibonacci
For D = 1 To 34
    If isFibonacci(D) Then Debug.Print D, isFibonacci(D)
Next

' Formula de Fibonacci
For D = 0 To 9
    Debug.Print "N=" & D, "Fn=" & Fibonacci(D)
Next

End Sub

' Serie de Fibonacci
Private Function isFibonacci(Numero As Long) As Boolean
Dim D As Long
Dim CPerfecto(1) As Long
Dim EsPerfecto(1) As Boolean

CPerfecto(0) = 5 * (Numero ^ 2) - 4
CPerfecto(1) = 5 * (Numero ^ 2) + 4

For D = 0 To 1
    EsPerfecto(D) = Not CBool(CLng(Sqr(CPerfecto(D))) - Sqr(CPerfecto(D)))
Next

If EsPerfecto(0) Or EsPerfecto(1) Then isFibonacci = True
End Function

' Formula de Fibonacci
Private Function Fibonacci(n As Long) As Long
Dim Oro As Double
Oro = (1 + Sqr(5)) / 2
Fibonacci = ((Oro ^ n) - (-1 / Oro) ^ n) / Sqr(5)
End Function

Desconectado Snifer

  • *
  • Underc0der
  • Mensajes: 1439
  • Actividad:
    0%
  • Reputación 1
  • Snifer@L4b's
    • Ver Perfil
    • Snifer@L4bs
  • Twitter: sniferl4bs
« Respuesta #6 en: Febrero 24, 2011, 01:27:23 am »
Se que me putearan en mil idiomas pero tengo flojera hacer correr la VM y lo unico que tengo a mano es el Gambas aunque me parecio mas facil hacerlo = en mono lo hare dentro de un rato ..

Código: GAMBAS
  1. PUBLIC SUB Main()
  2. ' Serie de Fibo        
  3. DIM a,s,x,t AS Integer
  4. DIM fibonacci AS String
  5.   a= 0
  6.   s=1
  7. fibonacci = Str(a)&""&Str(s)
  8. WHILE x <10 ' Para verificar el tamaño de la serie :P
  9. t = a+s
  10. x=x+1
  11. PRINT fibonacci

BUeno aqui esta en c# --> mONO
Código: Text
  1. using System;
  2.  
  3. namespace Fibonnacci
  4. {
  5.         class MainClass
  6.         {
  7.                 public static void Main (string[] args)
  8.                 {
  9.                         long resultado, numero;
  10.                                 Console.WriteLine ("Ingresa la cantidad que desea la serie");
  11.                         numero = long.Parse(Console.ReadLine());
  12.                         resultado = fibo(numero);
  13.                         Console.WriteLine ("Serie de fibonacci("+ numero +")="+ resultado);
  14.                         Console.ReadLine();
  15.                 }
  16.                 static long fibo(long n)
  17.                 {       if (n == 0 ||n ==1)
  18.                         return n;
  19.                         else
  20.                                 return fibo(n-1) + fibo(n-2);
  21.                         }
  22.         }
  23. }

« Última modificación: Febrero 24, 2011, 01:54:04 am por snifer »
http://www.sniferl4bs.com


Llaman traidor a la persona que evito que caiga el foro, gente bruta!



 

¿Te gustó el post? COMPARTILO!