Exercice 1. Écrire une fonction « makeseq : int -> int array » formant le tableau [|1;2;3;…;n|]. |
Exercice 2. Écrire une fonction « randperm : int -> int array » renvoyant une permutation aléatoire de {1,\ldots,n}. |
Exercice 3. Écrire une fonction « subarray : ‘a array -> int -> int -> ‘a array » renvoyant le sous-tableau formé des éléments dont les positions sont comprises (au sens large) entre les valeurs spécifiées. |
Exercice 4. Écrire une fonction « revv : ‘a array -> ‘a array » qui inverse l’ordre des éléments d’un tableau. |
Exercice 5. Prévoir puis justifier le résultat des instructions suivantes :
|
Exercice 6. Écrire une fonction « maxi : ‘a array -> ‘a » renvoyant le plus grand élément d’un tableau. |
Exercice 7. Écrire une fonction « vfibo : int -> int array » renvoyant le tableau {[|F_0;F_1;\ldots;F_n|]}, des {n} premiers termes de la suite de Fibonacci (avec {F_0=F_1=1} et {F_n=F_{n-1}+F_{n-2}} pour {n\ge 2}). |
Exercice 8. Écrire une fonction « rand_in_array : ‘a array -> ‘a » renvoyant un élément pris au hasard dans un tableau. |
Exercice 9. Écrire une fonction « mapv » qui applique une fonction f à tous les éléments d’un tableau v. La fonction « mapv » devra être aussi générale que possible. |
Exercice 10. Écrire une fonction « mapopv : (‘a -> ‘b -> ‘a) -> ‘a -> ‘b array -> ‘a » itérant un même opérateur binaire (préfixe) {T} à tous les éléments d’un tableau {v}, avec une valeur initiale {a}. Ainsi « mapopv T a {[|v_{0};v_{1};v_{2}|]} renvoie {T(T(T(a,v_{0}),v_{1}),v_{2})}. En déduire les fonctions « sumv : int array -> int » et « prodv : int array -> int » calculant respectivement la somme et le produit des élémentes d’un tableau d’entiers. Imaginer d’autres applications de la fonction « mapopv ». |