Haskell : Carte Américaine

Exercices Corriges en Haskell : Carte Américaine

Le mélange américain des cartes consiste à imbriquer deux paquets de cartes par insertion des cartes de l’un dans l’autre pour former le paquet final. L’imbrication obéit à une seule règle : l’ordre de cartes de chaque paquet doit subsister dans le paquet final.

1. Considérez deux paquets de cartes toutes différentes. Écrivez une fonction qui, étant donné le nombre de cartes de chaque paquet, calcule le nombre de paquets finaux différents qu’il est possible d’obtenir avec le mélange américain.

2. Même question mais avec trois paquets

 

Haskell pandacodeur

Correction :

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

Si vous avez trouvé les exercices corrigés en Haskell de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

Contact WhatsApp : +237 658395978 | Réaliser Par Joël_Yk

  • Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam