Prog Caml : Ecrire la fonction echange_cases

Ecrivez une fonction nommée echange_cases qui prend en paramètre trois arguments. Le premier est un tableau tab de type quelconque, et les deux autres i et j sont des indices valides dans ce tableau. Le travail de cette fonction est d'échanger le contenu de la case d'indice i avec celui de la case d'indice j.

Remarque : cette fonction est de type 'a array -> int -> int -> unit. En effet, il n'y a pas besoin de connaître le type de contenu des cases du tableau pour échanger deux contenus. La fonction fonctionnera donc pour tous les types de tableau, c'est-à-dire pour tous les tableaux de la forme 'a array.

Indication : utilisez print_int_array pour tester la fonction. Par exemple :

let tab = [| 0; 1; 2; 3; 4 |] in
echange_cases tab 2 4;
echange_cases tab 2 0;
print_int_array tab;

devra afficher :

4 1 0 3 2

Limites de temps et de mémoire (Python)

  • Temps : 4 s sur une machine à 1 GHz.
  • Mémoire : 1 000 ko.

Commentaires

Code à compléter Caml

let read_int() = Scanf.scanf " %d" (fun x -> x);;

let lit_tableau () = 
  let s = read_int() in
  Array.init s (fun i -> read_int()) ;;

let affiche_tableau_entiers tab =
  let taille = Array.length tab in
  print_int taille ; 
  print_newline () ;
  for indice = 0 to pred taille do
     print_int tab.(indice);
     print_string " ";
  done;
  print_newline();
 ;;

let echange_cases t a b =
(* à compléter *)
;;

affiche_tableau_entiers ( let t = lit_tableau() in echange_cases t (read_int()) (read_int()) ;t );;

Source : http://www.france-ioi.org/ Créé par : Arthur Charguéraud.