elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Sucesión Fibonacci [Batch]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Sucesión Fibonacci [Batch]  (Leído 15,323 veces)
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Sucesión Fibonacci [Batch]
« en: 10 Abril 2009, 04:37 am »

Hola a todos.

Hace tiempo que tenía ganas de hacer esto en Batch.

Para los que no sepan que es la sucesión Fibonacci:
Citar
En matemáticas, la sucesión de Fibonacci es la siguiente sucesión infinita de números naturales:

El primer elemento es 0, el segundo es 1 y cada elemento restante es la suma de los dos anteriores. A cada elemento de esta sucesión se le llama número de Fibonacci. Esta sucesión fue descrita en Europa por Leonardo de Pisa, matemático italiano del siglo XIII también conocido como Fibonacci. Tiene numerosas aplicaciones en ciencias de la computación, matemáticas y teoría de juegos.
De Wikipedia.
Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :code
  4. set /p "numero=Numero : "
  5. if not defined numero (goto:code)
  6. if %numero% lss 1 (
  7. echo.Error, numero negativo.
  8. set /p ,=Pulse Enter para volver.
  9. goto:code
  10. )
  11. for /l %%_ in (1,1,%numero%) do (set "variable%%_=0")
  12. set /a "variable1=1"
  13. set /a "variable2=2"
  14. set /a contador=0
  15. set /a "token_uno=1"
  16. set /a "token_dos=2"
  17. set /a "aumento_de_variable=3"
  18. :bucle
  19. if %contador% equ %numero% (goto:end)
  20. set /a "variable%aumento_de_variable%=!variable% style="color: #448888;">token_uno%! + !variable% style="color: #448888;">token_dos%!"
  21. set /a "token_uno+=1"
  22. set /a "token_dos+=1"
  23. set /a "aumento_de_variable+=1"
  24. set /a "contador+=1"
  25. goto:bucle
  26. :end
  27. for /l %%_ in (1,1,%numero%) do (
  28. echo !variable% style="color: #448888;">%_!
  29. )
  30. set /p =Teclee ENTER para salir.
  31. exit /b 0
Salida :
Código:
Numero : 9
1
2
3
5
8
13
21
34
55
Teclee ENTER para salir.
Código:
C:\>code
Numero : 5
1
2
3
5
8
Teclee ENTER para salir.
Código:
C:\>code
Numero : 25
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
Teclee ENTER para salir.

Saludos.


« Última modificación: 10 Abril 2009, 05:27 am por Leo Gutierrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Littlehorse
All the world's a stage
Colaborador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Sucesión Fibonacci [Batch]
« Respuesta #1 en: 10 Abril 2009, 04:48 am »

Por que del 46 en adelante dan numeros negativos?


En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Sucesión Fibonacci [Batch]
« Respuesta #2 en: 10 Abril 2009, 04:56 am »

Ahora no recuerdo cual es el limite en batch para almacenar.

Pero tampoco no pidas tanto, el termino 46 en la sucesión de fibonacci es demasiado, mira cuanto duró un codigo en C en calcular el 46, con recursión, es más, no pudó calcularlo, por ser un numero demasiado grande:

Código:
C:\>timethis fibonacci 46

TimeThis :  Command Line :  fibonacci 46
TimeThis :    Start Time :  Thu Apr 09 20:50:06 2009

1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 12
1393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 390881
69 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903 -1323752223
TimeThis :  Command Line :  fibonacci 46
TimeThis :    Start Time :  Thu Apr 09 20:50:06 2009
TimeThis :      End Time :  Thu Apr 09 20:52:20 2009
TimeThis :  Elapsed Time :  00:02:14.500

C:\>

Mi codigo en Batch :
Código:
C:\>timethis code.bat

TimeThis :  Command Line :  code.bat
TimeThis :    Start Time :  Thu Apr 09 20:54:19 2009

Numero : 46
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
-1323752223
Teclee ENTER para salir.

TimeThis :  Command Line :  code.bat
TimeThis :    Start Time :  Thu Apr 09 20:54:19 2009
TimeThis :      End Time :  Thu Apr 09 20:54:21 2009
TimeThis :  Elapsed Time :  00:00:01.390

C:\>

Claro que no nos vamos a poner a comparar, solo es para hacer notar que el termino 46 en la sucesión de Fibonacci es muy grande.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Littlehorse
All the world's a stage
Colaborador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Sucesión Fibonacci [Batch]
« Respuesta #3 en: 10 Abril 2009, 05:08 am »

Mira. (Banca que ahi edito)




Yo tampoco me acuerdo cuanto es el limite en batch para almacenar, pero probablemente ese sea el problema, pero vamos en C ya que aparezca el numero negativo es porque lo codeaste sin ganas  ;D
« Última modificación: 10 Abril 2009, 05:19 am por Littlehorse » En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Sucesión Fibonacci [Batch]
« Respuesta #4 en: 10 Abril 2009, 05:21 am »

Mira. (Banca que ahi edito)




Yo tampoco me acuerdo cuanto es el limite en batch para almacenar, pero probablemente ese sea el problema, pero vamos en C ya que aparezca el numero negativo es porque lo codeaste sin ganas  ;D

Jaja, tal ves, es que lo hice con int´s, si lo hubiera hecho con long´s.  :P

Gracias por probar el codigo.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Littlehorse
All the world's a stage
Colaborador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Sucesión Fibonacci [Batch]
« Respuesta #5 en: 10 Abril 2009, 05:24 am »

De nada! Che ese TimeThis lo hiciste vos?
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Sucesión Fibonacci [Batch]
« Respuesta #6 en: 10 Abril 2009, 05:26 am »

No, pertenece a el Windows 2000 Resource Kit Tool.
Código:
http://www.microsoft.com/downloads/details.aspx?familyid=913795CD-7026-4143-AE85-1F5E096F9BE0&displaylang=en
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Littlehorse
All the world's a stage
Colaborador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Sucesión Fibonacci [Batch]
« Respuesta #7 en: 10 Abril 2009, 05:30 am »

Thx!
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
0x0309

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: Sucesión Fibonacci [Batch]
« Respuesta #8 en: 10 Abril 2009, 20:14 pm »

Hey Leo, considerando que solo debes ir sumando los dos números anteriores, podrías crear una función que trate las dos variables como texto, y vaya sumando cada carácter, así te evitas la aparación de números negativos, y podrías alcanzar números muy grandes, considerando que el tamaño máximo de una línea de órdenes es como 4000 u 8000 aprox.
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Sucesión Fibonacci [Batch]
« Respuesta #9 en: 10 Abril 2009, 20:22 pm »

Gracias, 0x0309

Un amigo me dijó que no necesitaba tantas variables, que si mucho con 4 se podía hacer, pero ya le expliqué que lo había en Batch y dijó :
"Ah, ok"

Pensó que la hicé en C  :D

Por cierto, recuerdas cual era el limite para almacenar?, hace muchisimo vi que lo posteaste pero lo olvidé.

Saludos.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Código-Ruby]Sucesión Fibonacci - JaAViEr
Scripting
0x5d 0 2,775 Último mensaje 8 Enero 2012, 08:57 am
por 0x5d
Cual es el proximo numero en la sucesion?
Dudas Generales
CATBro 2 8,312 Último mensaje 5 Mayo 2012, 00:18 am
por CATBro
Duda en el código (porgrama sucesión de Fibonacci)
Programación C/C++
b_rabbit10 2 2,643 Último mensaje 18 Febrero 2013, 22:15 pm
por b_rabbit10
Sucesion de Fibonacci recursiva optimizada « 1 2 »
Programación C/C++
do-while 18 12,512 Último mensaje 29 Julio 2013, 13:47 pm
por eferion
[Perl] Ejemplo de Sucesion Fibonacci
Scripting
BigBear 0 2,674 Último mensaje 5 Diciembre 2014, 15:04 pm
por BigBear
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines