Haskell : Classe de Type et Fonction en Haskell

Exercices Corriges en Haskell : Classe de Type et Fonction en Haskell

1.Écrire une fonction sommeFiltre qui, étant donné un entier n et une fonction f, qui à tout entier associe un booléen, renvoie la somme de tous les entiers naturels p tel que p ≤ n et f(p) est vrai.

2. Un nombre parfait est un entier naturel non nul égal à la moitié de la somme de ses diviseurs. Par exemple, 6 est un nombre parfait car ses diviseurs sont 1, 2, 3 et 6, et 2×6 = 1+ 2+ 3+ 6. Utiliser la fonction sommeFiltre écrite précédemment pour écrire la fonction parfait qui retourne si un nombre est parfait.

3. Écrire la fonction parfaits qui, étant donné un entier naturel n, retourne la liste de nombres parfaits de 0 jusqu’à n.

Haskell pandacodeur

Correction :

1) Pour écrire la fonction sommeFiltre, nous allons utiliser la fonction de filtrage de Haskell, filter, qui prend en entrée une fonction booléenne et une liste, et retourne une nouvelle liste ne contenant que les éléments de la liste initiale pour lesquels la fonction booléenne retourne True. Nous allons donc filtrer les entiers de 1 à n en utilisant la fonction f, puis nous allons utiliser la fonction de somme de Haskell, sum, pour calculer la somme des entiers filtrés.

Voici le code correspondant :

sommeFiltre :: Int -> (Int -> Bool) -> Int
sommeFiltre n f = sum (filter f [1..n])

2) Pour écrire la fonction parfait, nous allons utiliser la fonction sommeFiltre que nous avons écrite précédemment. Nous allons définir une fonction booléenne qui prend en entrée un entier n, et retourne True si n est un nombre parfait, et False sinon. Pour déterminer si un nombre est parfait, nous allons filtrer les diviseurs de n en utilisant la fonction filter, puis nous allons utiliser la fonction sum pour calculer la somme de ces diviseurs. Si cette somme est égale à 2n, alors n est un nombre parfait.

Voici le code correspondant :

estParfait :: Int -> Bool
estParfait n = sum (filter (\x -> n `mod` x == 0) [1..n-1]) == n * 2

parfait :: Int -> Bool
parfait n = estParfait n

3) Pour écrire la fonction parfaits, nous allons utiliser la fonction parfait que nous avons écrite précédemment, ainsi que la fonction filter pour filtrer les entiers de 0 à n. Nous allons donc filtrer les entiers de 0 à n en utilisant la fonction parfait, puis nous allons retourner la liste des entiers filtrés.

Voici le code correspondant :

parfaits :: Int -> [Int]
parfaits n = filter parfait [0..n]

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