forked from SIGSWAG/PrologPuissance4
-
Notifications
You must be signed in to change notification settings - Fork 0
/
util.pl
64 lines (53 loc) · 1.03 KB
/
util.pl
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
61
62
63
64
%%%%%%%%%%%% util.pl %%%%%%%%%%%%
% Différents prédicats d'utilité publique.
:- module(util, [
nbLignes/1,
nbColonnes/1,
infinitePos/1,
infiniteNeg/1,
infinitePos/2,
infiniteNeg/2,
ennemi/2,
incr/2,
decr/2,
sum/2,
caseVide/2
]).
%%%%%%%%%%%%%%%%
%% Constantes %%
%%%%%%%%%%%%%%%%
nbLignes(6).
nbColonnes(7).
infinitePos(10005).
infiniteNeg(-10005).
infinitePos(X,Rep):- Rep is X+10000.
infiniteNeg(X,Rep):- Rep is -10000-X.
%%%%%%%%%%%%%%%%%%%%%%%
%% Prédicats publics %%
%%%%%%%%%%%%%%%%%%%%%%%
ennemi(jaune,rouge).
ennemi(rouge,jaune).
% incr/2(+X, -X1)
% Unifie X1 = X+1.
% Vrai pour X1 = X+1.
incr(X,X1):-
X1 is X+1.
% decr/2(+X, -X1)
% Unifie X1 = X-1.
% Vrai pour X1 = X-1.
decr(X,X1):-
X1 is X-1.
% sum/2(+Liste, -Somme)
% Somme les termes de la liste.
% Somme s'unifie é la somme des termes de la liste.
sum([],0).
sum([X|Xs],N) :-
sum(Xs,N1),
N is N1+X.
% caseVide/2(+X, +Y)
% Vérifie si la case est vide.
% Vrai si la case n'a pas été remplie.
caseVide(X,Y) :-
nonvar(X),
nonvar(Y),
not(case(X,Y,_)).