-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtd4.ml
60 lines (39 loc) · 1.4 KB
/
td4.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
(* type p = {
ligne : int;
colonne : int;
} *)
type marque = {c:bool; p: int * int}
type grille = marque list
(* Question1 *)
let grille1 = [{c=true ; p=(0,0)};{c=false ; p = (0,2)};
{c = true ; p = (1,0)}; {c = false ; p = (1,1)};
{c = true ; p = (2,0)};{c = false; p = (2,2)}]
let grille2 = [{c=true ; p=(0,1)};{c=false ; p = (0,2)};
{c = true ; p = (1,0)}; {c = false ; p = (1,1)};
{c = false ; p = (2,0)};{c = true; p = (2,1)}]
let grille3 = [{c=false ; p=(0,1)};{c=true ; p = (0,2)};{c=true ; p = (0,3)};
{c = true ; p = (1,0)}; {c = false ; p = (1,1)};{c=false ; p = (1,2)};
{c = false ; p = (2,0)};{c = true; p = (2,1)};{c=false ; p = (2,2)}]
(* Question 2 *)
(* let f a = (fst a.p < 3 && fst a.p >=0) && (snd a.p < 3 && snd a.p >= 0)
let dans_les_bornes grille = List.for_all f grille *)
let dans_les_bornes grille =
let f a = (fst a.p <3 && fst a.p >=0) && (snd a.p <3 && snd a.p >=0) in
List.for_all f grille
(* Question3 *)
let existe_symbole grille i j =
let f1 a = a.p = (i,j) in
List.exists f1 grille
(* Question 4 *)
let sans_doublons grille =
let rec sans_aux grille i j cpt =
match grille with
|[] -> true
|x::s -> if (existe_symbole grille ) then sans_aux grille i j cpt=grille i j cpt1
if (cpt > 1) then false
else sans_aux s
in sans_aux grille 0 0
(* Question 5 *)
(* test for all *)
(* let testForAll f l1 = List.for_all f l1
let f a = true *)