Ruby:
#combinatorio (9,3) n,k
c = 9,3
c << c[0]-c[1] #--> [9,3,6]
# 7*8*9/(1*2*3) en una linea
r = (c.sort[1]+1..c.max).inject{|a,b| a*b}/(1..c.min).inject{|c,d| c*d}
puts r
en una linea el combinatorio (9,6) =
(7..9).inject{|a,b| a*b}/(1..3).inject{|c,d| c*d}
explicacion:
c es una lista [9,3] despues agregamos (<<)la diferencia (9-3) y nos queda
c = [9,3,6] c.sort --> [3,6,9] ;
c.sort[1]+1 --> 7 ; nos queda (7..9)
inject: esta funcion usa dos variables |a,b| en a acumula el resultado y
con b va recorriendo una lista de numeros desde el segundo elemente hasta el ultimo.
--> (7*8)*9)
------------- ~ ---------------
Python
>>> a,b,i = 1,1,1
>>> for x in range(6+1,9+1):
... a = a*x
... b,i = b*i, i+1
...
>>> a/b
84
------------- ~ ---------------
No hay comentarios:
Publicar un comentario
los comentarios son publicados inmediatamente, sin moderacion. Por favor, sea responsable.