(*********************) (* Correction du TP6 *) (*********************) (***** Question 1 *****) let ordi1 c p = let coup = ref 0 and best = ref (-1000000) in for i=0 to 6 do if possible p i then ( joue p.(i) c; let e = eval c p in if !best bleu | bleu -> rouge | vide -> vide;; let ordi2 c p = let coup = ref 0 and best = ref (-1000000) in for i=0 to 6 do if possible p i then ( joue p.(i) c; if (eval c p)>500 then ( best := 1000000; coup := i; ) else ( let coup_adverse = ordi1 (change c) p in joue p.(coup_adverse) (change c); let e = eval c p in if !best 500 || n=0 then ev else ( while !i<7 do if possible p !i then ( joue p.(!i) c; let eval_autre = - (aux (change c) (n-1) p) in dejoue p.(!i); if eval_autre > !best then best := eval_autre; if !best > 500 then i:=8; ); incr i; done; !best );; let ordi3 n c p = let coup = ref 0 and best = ref (-10000000) in for i=0 to 6 do if possible p i then ( joue p.(i) c; let ev = - (aux (change c) (n-1) p) in if ev> !best then (best:=ev; coup:=i); dejoue p.(i); ) done; !coup;;