(* Exo 1 fabriquer un fonction repete qui prend comme variable une liste et la répète comme abcd->abcdabcd fabriquer un fonction begaye qui prend comme variable une liste et la répète comme abcd->aabbccdd fabriquer un fonction eteper qui prend comme variable une liste et la dé-répète : si elle était de la forme (repete m), et sinon renvoie "raté" fabriquer un fonction eyageb qui prend comme variable une liste et la dé-begaye : si elle était de la forme (begaye m), et sinon renvoie "raté" *) (* Fonction Begaye *) let rec begaye = function | [] -> [] | t::q -> t::t::begaye(q) ;; (* Fonction Eteper *) let eteper l = let long = List.length l and tabl=Array.of_list l in if (long mod 2) = 1 then failwith "Faux" else begin for t=0 to (long /2)-1 do if tabl.(t) <> tabl.(t + long /2) then failwith "Faux"; done; failwith "Vrai"; end; ;; (* Fonction Eyageb *) let rec eyageb l = let long = List.length l in if long mod 2 = 1 then false else match l with |[] -> true |a::b::m -> b=a & eyageb m ;; (* Exo 2 trouver le plus grand int positif de caml *) (* recherche du plus grand entier *) (*on commence par chercher la plus grande puissance de 2 positive *) let a=ref 1;; let b=ref (2 * !a) in while !b >0 do print_string " "; print_int !b; a:= !b ; b:=2* !b done;; print_int !a;; (* on sait alors que a+a dépasse, on va donc ajouter a/2, a/4 ... tant que ça peut *) let b=ref (!a / 2) in while ((!a+ !b >0) & (!b>0)) do print_string " "; a:= !a+ !b ; b:=!b /2 ; print_int !a; done;; (*le résultat final copié de la fenêtre de réponses caml*) let maxint = 1073741823;; maxint+1;; - : int = -1073741824 (*le résultat de la ligne qui suit montre ce que l'on aurait eu en testant avec abs pour la recherche du plus grand entier, c'est rigolo: caml a donc une valeur absolue négative *) #(maxint+1) = abs (maxint +1);; - : bool = true (* Exo 3 faites afficher à l'écran sous forme de tableau les caractères ASCII de 1 à 255 *) (* Exo 3 : Tableau des caractères ASCII *) let ascii () = for k=0 to 255 do print_string(Char.escaped(Char.chr k)); print_string " "; if (k mod 16)=0 then print_newline(); done; print_newline() ;;