From d74937dce10330716f42b074b230486c72ba24be Mon Sep 17 00:00:00 2001 From: Suwako Moriya Date: Tue, 28 Jan 2020 10:10:46 +0100 Subject: [PATCH] [TP1 + cours] Listes / Tableaux --- spe/TP1/main.ml | 36 ++++++++++++++++-------------------- spe/cours/cous 2.ml | 16 ++++++++++++++++ 2 files changed, 32 insertions(+), 20 deletions(-) create mode 100644 spe/cours/cous 2.ml diff --git a/spe/TP1/main.ml b/spe/TP1/main.ml index 3fb3f72..1bd2654 100644 --- a/spe/TP1/main.ml +++ b/spe/TP1/main.ml @@ -36,7 +36,7 @@ let rec concatener listes = match longueur listes with | 1 -> List.hd listes | 2 -> (List.hd listes)@(List.hd (List.tl listes)) | _ -> concatener ([(List.hd listes)@(List.hd (List.tl listes))]@(List.tl (List.tl listes)));; -concatener [[1;2;3];[2;1;3];[4;5;1;3];[1]];; +concatener [[1;2;3];[2;1;3];[];[4;5;1;3];[1]];; concatener [];; List.concat [];; @@ -44,18 +44,22 @@ List.concat [];; -let rec recherche_dichomotique a v = - if Array.length v = 0 then false - else if a = v.((Array.length v)/2) then true - else if a < v.((Array.length v)/2) - then recherche_dichomotique a (Array.sub v 0 ((Array.length v)/2)) - else recherche_dichomotique a (Array.sub v ((Array.length v)/2+1) ((Array.length v)/2));; +let rec recherche_dicho d f a v = + let c = (f - d)/2 in + if c = 0 then false + else if a = v.(c) then true + else if a < v.(c) + then recherche_dicho d c a v + else recherche_dicho c f a v;; +let recherche_dichotomique a v = + recherche_dicho 0 (Array.length v) a v;; +recherche_dichotomique (-5) [|1;2;3;4;5;6;7;8;9;10;11|];; (*Exercice 5*) -let est_phermier n = (*on prend un n >=2*) +let est_premier n = (*on prend un n >=2*) let t = ref true in if n = 2 then () else for i = 2 to n/2 do @@ -63,22 +67,14 @@ let est_phermier n = (*on prend un n >=2*) done ; !t;; -est_phermier 17;; -est_phermier 14;; +est_premier 17;; +est_premier 14;; -let est_vrm_phermier n = (* on prend aussi un n >=2*) +(*let est_vrm_premier n = (* on prend aussi un n >=2*) let t = ref true and i = ref 2 in while !i <=(n/2) && !t do if (n mod !i) = 0 then t := false; i := !i + 1 done; - !t;; - - -est_vrm_phermier 17;; -est_vrm_phermier 17;; -est_vrm_phermier 14;; -est_vrm_phermier 14;; -est_vrm_phermier 17;; -est_vrm_phermier 13;; + !t;;*) \ No newline at end of file diff --git a/spe/cours/cous 2.ml b/spe/cours/cous 2.ml new file mode 100644 index 0000000..58bb334 --- /dev/null +++ b/spe/cours/cous 2.ml @@ -0,0 +1,16 @@ +let catalan n = + let t = Array.make (n+1) 0 in + t.(0) <- 1; + for i=1 to n do + for k=0 to i-1 do + t.(i) <- (t.(k)*t.(i-1-k)) + t.(i) + done + done; + t.(n);; + +catalan 5;; + +let rec est_triee l = match l with + | [] -> true + | [a] -> true + | a::(b::t) -> a<=b && est_triee b::t;;