From fe29a58e22cc74e1b369f4038e5cff71a38f1589 Mon Sep 17 00:00:00 2001 From: Super_JK Date: Tue, 29 Mar 2022 17:16:39 +0200 Subject: [PATCH] TP 2 + 3 --- TP2.pl | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ TP3.pl | 33 +++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 TP2.pl create mode 100644 TP3.pl diff --git a/TP2.pl b/TP2.pl new file mode 100644 index 0000000..b880f3a --- /dev/null +++ b/TP2.pl @@ -0,0 +1,65 @@ +% L2 +% Q1 +fibonacci(0,1). +fibonacci(1,1). +fibonacci(X,Y):- + X > 1, + N is X - 1, + M is X - 2, + fibonacci(N,R), + fibonacci(M,S), + Y is S +R. +% Q2 +fibiter(X,Y):- + fibiter(X,Y,1,1). +fibiter(0,X,X,_). +fibiter(X,Y,Z,V):- + X >0, + M is X -1, + NV is Z + V, + fibiter(M,Y,V,NV). + +% Q3 +pgcd(A,0,A):-!. +pgcd(A,A,A):-!. +pgcd(0,A,A):-!. +pgcd(A,B,X):- + A > B, + C is A mod B, + pgcd(C,B,X). +pgcd(A,B,X):- + B > A, + C is B mod A, + pgcd(A,C,X). + +% L3 +% Q2 +member(X,[X|_]). +member(X,[_|L]) :- + member(X,L). + +% Q3 +subset([],_). +subset(L1,L2):- + [X | L] = L1, + member(X,L2), + subset(L,L2). + +% Q4 +sublist(_,[]):-false. +sublist([],_). +sublist([X | L1],[Y | L2]):- + X = Y, + subset(L1,L2). + +sublist([X | L1],[Y | L2]):- + X \= Y, + subset([X | L1],L2). + + + + + + + + diff --git a/TP3.pl b/TP3.pl new file mode 100644 index 0000000..4d255ae --- /dev/null +++ b/TP3.pl @@ -0,0 +1,33 @@ +%L2 +%Q5 +takeout(E,[E | L1],L1). + +takeout(E,[F | L1],[F | L2]):- + takeout(E,L1, L2). + + + +%Q7 + +inverse([E],[E]). + +inverse([H | L1], L):- + var(L), + inverse(L1,H2), + append(H2,[H],L). + +inverse([H | L1], L):- + nonvar(L), + append(H2,[H],L), + inverse(L1,H2). + +%Q8 + +inverse2(L1,L2):- + inverse_iter(L1,[],L2). + + +inverse_iter([],L2,L2):-!. + +inverse_iter([E |L1],L2,R):- + inverse_iter(L1, [E | L2],R).