On se propose d'écrire une fonction pour permuter aléatoirement les éléments d'une liste. Plusieurs méthodes existent, ici nous allons nous inspirer du tri rapide, mais avec une fonction de comparaison en quelque sorte aléatoire. L'algorithme procède ainsi :
Écrire cet algorithme en utilisant la fonction Random.bool et des fonctions du module List.
Étant donné une liste de $n$ entiers, on souhaite retirer les doublons de cette liste, de sorte que chaque entier apparaisse au plus une fois.
Nous avons vu que le module Set propose une fonction fold, et aussi que les éléments de type Set.t sont des arbres binaires de recherches. Dans cet exercice, nous demandons comment est codé Set.fold, en regardant le cas des arbres binaires de recherche sur les entiers.
Coder la fonction suivante en utilisant une récurrence :
Dans la documentation, il est précisé que Set.fold applique une fonction sur les éléments pris par ordre croissant. Faire de même.
Écrire un programme qui lit l'entrée standard et compte le nombre de mots distincts. On considère qu'un mot est une suite de caractères entre deux espacements. Pour cela on utilisera la fonction Scanf.scanf " %s".
Attention, lorsque cette fonction arrive en fin de l'entrée, la chaîne lue est "", mais elle ne lance pas d'exceptions.