This repository has been archived on 2026-03-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
TP-PL/TP6.pl
Super_JK 00cec73a26 ajout TP
2022-06-05 15:44:11 +02:00

57 lines
1.2 KiB
Prolog

% pt 7
%EX 1
:-dynamic(fib/2).
fib(0,0):-!.
fib(1,1):-!.
fib(N,F):-
N1 is N-1,
N2 is N-2,
fib(N1,F1),
fib(N2,F2),
F is F1+F2,
asserta(fib(N,F):-!).
% EX2
:- dynamic person/1, friend/2, group/2.
person(jef).
person(vero).
person(tom).
person(christian).
person(pierre).
friend(vero,tom).
friend(vero,jef).
friend(vero,christian).
friend(tom,jef).
friend(tom,pierre).
group(g1,[tom,vero,jef]).
group(g2,[vero,christian]).
group(g3,[pierre]).
remove_person(P):-
retract(person(P)),
%forall(friend(P,X),retract(friend(P,X))),
%forall(friend(X,P),retract(friend(X,P))),
retractall(friend(P,_)),
retractall(friend(_,P)),
forall((group(X,L),member(P,L)),(select(P,L,NL),retract(group(X,L)),asserta(group(X,NL)))).
add_person(P,Friends,Groups):-
asserta(person(P)),
forall((member(F,Friends)),(asserta(friend(P,F)))),
forall((member(G,Groups),group(G,L), not(member(P,L))),(select(P,NL,L),retract(group(G,L)),asserta(group(G,NL)))).
friends(P,X):-
friend(P,X);friend(X,P).
mediator(P):-
person(P),
friends(P,F1),
friends(P,F2),
F2 \= F1,
group(G1,L1),
member(F1,L1),
group(G2,L2),
member(F2,L2),
G2 \= G1.