0votos

Spotify, cuestión de suerte en Haskell

por josejuan hace 6 años

Es un problema típico de cálculo de probabilidades.

Spotify presenta tres retos para quien quiera trabajar allí como programador. Uno de ellos es calcular la probabilidad de que nos hagan una rebaja.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- Factorial 
fact n = product [1..n] 
 
-- Combinaciones M elementos tomados de N en N 
comb m n = fact m / (fact (m - n) * fact n) 
 
-- Probabilidad de que S elementos sean seleccionados al tomar N de entre M 
probS m n s = comb (m - s) (n - s) / comb m n 
 
-- Probabilidad de que al menos S elementos de P elementos sean seleccionados al tomar N de entre M 
probSP p s m n = sum $ q 0 s 
  where q i z | z > p = [] 
              | True  = (-1)^i * comb p z * probS m n z : q (i + 1) (z + 1) 
 
-- Solución al problema propuesto 
vamosTeatro m n t p = probSP p (fromIntegral.ceiling $ p / t) m n 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.