Ocaml. Exercices sur les tableaux (1/2)

Exercice 1.
Écrire une fonction “makeseq : int -> int array” formant le tableau [|1;2;3;…;n|].
Cliquer ici pour voir (ou cacher) le corrigé
  Pour voir ce contenu, vous devez : 

Exercice 2.
Écrire une fonction “randperm : int -> int array” renvoyant une permutation aléatoire de {1,\ldots,n}.
Cliquer ici pour voir (ou cacher) le corrigé
  Pour voir ce contenu, vous devez : 

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.
Cliquer ici pour voir (ou cacher) le corrigé
  Pour voir ce contenu, vous devez : 

Exercice 4.
Écrire une fonction “revv : ‘a array -> ‘a array” qui inverse l’ordre des éléments d’un tableau.
Cliquer ici pour voir (ou cacher) le corrigé
  Pour voir ce contenu, vous devez : 

Exercice 5.
Prévoir puis justifier le résultat des instructions suivantes :

Cliquer ici pour voir (ou cacher) le corrigé
  Pour voir ce contenu, vous devez : 

Exercice 6.
Écrire une fonction “maxi : ‘a array -> ‘a” renvoyant le plus grand élément d’un tableau.
Cliquer ici pour voir (ou cacher) le corrigé
  Pour voir ce contenu, vous devez : 

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}).
Cliquer ici pour voir (ou cacher) le corrigé
  Pour voir ce contenu, vous devez : 

Exercice 8.
Écrire une fonction “rand_in_array : ‘a array -> ‘a” renvoyant un élément pris au hasard dans un tableau.
Cliquer ici pour voir (ou cacher) le corrigé
  Pour voir ce contenu, vous devez : 

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.
Cliquer ici pour voir (ou cacher) le corrigé
  Pour voir ce contenu, vous devez : 

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”.
Cliquer ici pour voir (ou cacher) le corrigé
  Pour voir ce contenu, vous devez :