1) Pour résoudre ce problème, nous pouvons utiliser la formule suivante : le nombre de paquets finaux possibles est égal au coefficient binomial de 2n et n, où n est le nombre de cartes dans chaque paquet. En Haskell, la fonction peut être implémentée comme suit :
americanMix :: Int -> Int
americanMix n = binomial (2 * n) n
where
binomial n k = product [1..n] `div` (product [1..k] * product [1..(n-k)])
2) Pour résoudre ce deuxième problème, nous pouvons utiliser la formule suivante : le nombre de paquets finaux possibles est égal au coefficient trinomial de 3n et n, où n est le nombre de cartes dans chaque paquet. En Haskell, la fonction peut être implémentée comme suit :
americanMix3 :: Int -> Int
americanMix3 n = trinomial (3 * n) n
where
trinomial n k = product [1..n] `div` (product [1..k] * product [1..(n-k)]) ^ 2