OCaml. Exercices sur les listes (3/3)

Exercice 21.
Écrire une fonction « del_list : int -> ‘a list -> ‘a list » qui supprime le {n}-ième élément d’une liste.
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir la suite de ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 22.
Écrire la fonction « occurrences : (‘a -> bool) -> ‘a list -> ‘a list » renvoyant la liste (éventuellement vide) des éléments satisfaisant à un prédicat dans une liste.
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir la suite de ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 23.
Écrire une fonction « ins_list : int -> ‘a -> ‘a list » qui supprime un élément en position donnée dans une liste.
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir la suite de ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 24.
Écrire une fonction « reduc_list : ‘a list -> ‘a list » qui réduit à un seul exemplaire les cas éventuels d’éléments consécutifs égaux dans une liste.
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir la suite de ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 25.
Écrire « minlists : ’a list -> ’a list -> ’a list » renvoyant la liste des minimums terme à terme.
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir la suite de ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 26.
Écrire une fonction « reps : ‘a -> ‘a list -> int » qui renvoie le nombre de fois que son premier argument apparaît en tête de la liste passée en deuxième argument.
Par exemple, « reps 5 [5; 5; 5; 1; 5; 2; 4; 5] » doit renvoyer la valeur 3.
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir la suite de ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 27.
Écrire « compte_suppr : ‘a -> ‘a list -> int » telle que « compte_suppr a {\ell} » renvoie le couple {(n,\ell')}, où :

  • L’entier {n} est le nombre de fois où {a} apparaît en tête de la liste {\ell}.
  • {\ell'} est ce qui reste de {\ell} quand on a supprimé les occurences correspondantes de {a}

Par exemple, « compte_suppr 5 [5; 5; 5; 1; 5; 2; 4; 5] » doit renvoyer « (3, [1; 5; 2; 4; 5]) ».

Cliquer ici pour voir (ou cacher) le corrigé
Pour voir la suite de ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 28.
Écrire une fonction « flatten : ‘a list list -> ‘a list » aplatissant une liste de listes.
Par exemple, « flatten [[3; 4]; [5;7;9]; [0]; [6;8]] » doit renvoyer « [3; 4; 5; 7; 9; 0; 6; 8] ».
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir la suite de ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 29.
Écrire une fonction « lfactors : int -> int list » renvoyant la liste des facteurs premiers d’un entier positif {n} (chaque facteur étant éventuellement répété autant que nécessaire).
Cliquer ici pour voir (ou cacher) le corrigé
Pour voir la suite de ce contenu, vous devez : Pour poursuivre votre exploration, vous pouvez :

Exercice 30.
Écrire une fonction « listplateau : ‘a list -> int * int * ‘a » identifiant le plus long plateau formé d’éléments consécutifs identiques dans une liste quelconque (donc pas forcément triée!).
Le résultat est le triple {(d,l,x)} formé par la position {d} du début du plateau, par sa longueur {l} et par la valeur {x} de l’élément ainsi répété.
Par exemple :

Cliquer ici pour voir (ou cacher) le corrigé
Pour voir la suite de 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.