Exercice 21. Écrire une fonction « del_list : int -> ‘a list -> ‘a list » qui supprime le {n}-ième élément d’une liste. |
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. |
Exercice 23. Écrire une fonction « ins_list : int -> ‘a -> ‘a list » qui supprime un élément en position donnée dans une liste. |
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. |
Exercice 25. Écrire « minlists : ’a list -> ’a list -> ’a list » renvoyant la liste des minimums terme à terme. |
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. |
Exercice 27. Écrire « compte_suppr : ‘a -> ‘a list -> int » telle que « compte_suppr a {\ell} » renvoie le couple {(n,\ell')}, où :
Par exemple, « compte_suppr 5 [5; 5; 5; 1; 5; 2; 4; 5] » doit renvoyer « (3, [1; 5; 2; 4; 5]) ». |
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] ». |
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). |
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 :
|