Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: ---saster--- en 29 Diciembre 2009, 13:15 pm



Título: [BATCH] Calcular numeros combinatorios
Publicado por: ---saster--- en 29 Diciembre 2009, 13:15 pm
Aqui dejo un script para calcular los numeros combinatorios.
Funciona mal con numeros mayores de 13 porque salen numeros demasiado grandes. :P

El codigo:

Código
  1. @echo off
  2. rem calculo de numeros combinatorios
  3. title Calcular un numero combinatorio
  4. mode con cols=40 lines=20
  5. :menu
  6. cls
  7. echo    ( X )         X!
  8. echo    (   ) = ______________
  9. echo    ( Y )     Y! (X-Y)!
  10. set/p "x=valor de x >>>"
  11. if not defined x (goto menu)
  12. if %x% LSS 0 (goto menu)
  13. set/p "y=valor de y >>>"
  14. if not defined y (goto menu)
  15. if %y% LSS 0 (goto menu)
  16. if not %x% LSS %y% (goto calculo) else (goto menu)
  17. :calculo
  18. set/a "a=b=c=1"
  19. set/a "d=%x%-%y%"
  20. for /l %%r in (%x%,-1,1) do (set/a a=a*%%r)
  21. for /l %%s in (%y%,-1,1) do (set/a b=b*%%s)
  22. for /l %%t in (%d%,-1,1) do (set/a c=c*%%t)
  23. set res1=%a%
  24. set/a res2=%b%*%c%
  25. set/a res=%res1%/%res2%
  26. echo El resultado es: %res%
  27. set "x="
  28. set "y="
  29. pause>nul
  30. goto menu
  31.  


saludos :D


Título: Re: [BATCH] Calcular numeros combinatorios
Publicado por: CaronteGold en 29 Diciembre 2009, 16:42 pm


    Lo que has puesto es lo de factorial no ¿?

  Ej:

  (6)       6x5x4x3x2x1        6x5x4x3x2x1     5x4
         = ------------------ = ---------------- = ---------  =  20
  (3)       3! (6-3)!                3x2x1 3x2x1        1


   


Título: Re: [BATCH] Calcular numeros combinatorios
Publicado por: ---saster--- en 29 Diciembre 2009, 19:04 pm
Lo que has puesto es lo de factorial no ¿?

La formula es la que has puesto.
Es un numero combinatorio de x sobre y :P

Para calcularlo hay que calcular 3 factoriales: x, y (x-y)

Código:
for /l %%r in (%x%,-1,1) do (set/a a=a*%%r)
for /l %%s in (%y%,-1,1) do (set/a b=b*%%s)
for /l %%t in (%d%,-1,1) do (set/a c=c*%%t)

Después simplemente hacer las cuentas.

Código:
set res1=%a%
set/a res2=%b%*%c%
set/a res=%res1%/%res2%

Se utilizan los factoriales pero no es un factorial es un numero combinatorio sobre otro.

saludos


Título: Re: [BATCH] Calcular numeros combinatorios
Publicado por: CaronteGold en 29 Diciembre 2009, 19:57 pm


    La verdad, no entiendo bien el comando "for", pero bueno te entiendo lo que me quieres decir, pero Números combinatorios, no es algo general¿? , es decir, binomio de newton, y más cosas ¿?


Título: Re: [BATCH] Calcular numeros combinatorios
Publicado por: ---saster--- en 29 Diciembre 2009, 21:41 pm
no se si es muy general o no, un numero combinatorio de x sobre y se diría :P

El binomio de Newton es una cosa distinta que utiliza los numeros combinatorios. De hecho yo hice este code para conseguir sacar el binomio de Newton desde bat

Esta sería la formula:

(http://img22.imageshack.us/img22/1074/dibujowd.jpg)

Citar
La verdad, no entiendo bien el comando "for"

En este caso simplemente es un bucle que multiplica su numero por el anterior hasta llegar a 0 (empezando por el numero que le digas)

Lo utilizo para hallar el factorial de los numeros que insertas

saludos


Título: Re: [BATCH] Calcular numeros combinatorios
Publicado por: CaronteGold en 30 Diciembre 2009, 19:45 pm

   Yo hice el binomio de newton en .bat, solo para números, es decir, sin contar las variables, e hice en python para números y variables, creo que lo voy a subir aquí el código, pero es algo liado, pero bueno lo subo, si quieres míralo xD.