66 lines
808 B
Prolog
66 lines
808 B
Prolog
% 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).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|