OCaml. Exercices sur les listes (2/3)

Exercice 11.
Écrire une fonction “concat : ‘a list -> ‘a list -> ‘a list” qui concatène deux listes, donc qui fait exactement la même chose que l’opérateur infixe intégré “@”, qui s’écrit aussi “(@)” en mode préfixé.
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 12.
Écrire une fonction “invlist : ‘a list -> ‘a list” qui inverse l’ordre des éléments d’une liste (donc qui fait exactement la même chose que la fonction intégrée “List.rev”).
Indication : utiliser une fonction récursive locale “aux” prenant en arguments deux listes x et y et renvoyant la liste formée de la concaténation de “y inversée” puis de x.
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 13.
Écrire une fonction “maxlist : ‘a list -> ‘a” qui renvoie le plus grand élément d’une liste.
La liste passée en argument pourra contenir des entiers, des flottants, des chaînes, des caractères (en tout cas tous les types acceptés par la fonction intégrée “max”).
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 14.
Écrire une fonction “minmaxlist : ‘a list -> ‘a * ‘a” qui renvoie le couple formé par le plus petit et plus grand élément d’une liste.
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 15.
Écrire une fonction “min2list : ‘a list -> ‘a * ‘a” qui retourne le couple des deux plus petits éléments.
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 16.
Écrire une fonction “nocs :: ‘a list -> ‘a -> int” qui renvoie le nombre de fois qu’un élément figure dans une liste.
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 17.
Écrire une fonction “ocsmin : ‘a list -> ‘a * int ” qui renvoie le couple formé par l’élément minimum d’une liste et le nombre de fois où il apparaît.
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 18.
Écrire une fonction “lastlist : ‘a list -> ‘a” renvoyant le dernier élément d’une liste.
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 19.
La fonction “exists” teste si un élément d’une liste satisfait à un prédicat.
La syntaxe est “exists test liste”, avec “test” de type “‘a -> bool” et “liste” de type “‘a list”, et la réponse est un booléen.
Écrire une fonction “myexists : (‘a -> bool) -> ‘a list -> bool” implémentant la fonction “exists”.
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 20.
Écrire deux fonctions “firstoccur :’a list -> (‘a -> bool) -> ‘a -> ‘a” (resp. “lastoccur”) renvoyant le premier (resp. le dernier) élément satisfaisant à un test logique dans une liste (et une valeur par défaut si aucun élément n’est trouvé), avec la syntaxe “firstoccur test liste def” et ” lastoccur test liste def”.
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Author: Jean-Michel Ferrard

Professeur de mathématiques en classe préparatoire aux grandes écoles.