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 ce contenu, vous devez : 

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 ce contenu, vous devez : 

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 ce contenu, vous devez : 

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 ce contenu, vous devez : 

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 ce contenu, vous devez : 

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 ce contenu, vous devez : 

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 ce contenu, vous devez : 

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 ce contenu, vous devez : 

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 ce contenu, vous devez : 

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 ce contenu, vous devez :