Prolog Program
Prolog Program
Solution:
%family tree
parent(nitu,rakhi).
parent(hari,jodu).
parent(jodu,rekha).
parent(nitu,rekha).
parent(hari,shyam).
parent(shyam,ram).
parent(shyam,sita).
parent(moli,sita).
parent(rekha,boby).
parent(jodu,rakhi).
brother(ram,sita).
female(sita).
female(boby).
female(nitu).
female(mita).
wife(nitu,jodu).
sister(rekha,rakhi).
male(jodu).
male(hari).
sister(X,Y):-brother(Y,X),female(X).
mother(X,Y):-parent(X,Y),female(X).
grandfather(X,Y):-parent(W,Y),parent(X,W),male(X).
%grandfather(X,Y):-parent(W,Y),parent(X,W),female(X).
?-brother(X,sita),write(X),ln,nl.
?-nl,sister(X,ram),write(X),ln.
?-nl,mother(P,rakhi),write(P),ln.
?-nl,grandfather(A,sita),write(A),ln.
?-nl,grandfather(A,boby),write(A),ln.
?-n1,parent(B,boby),write(B),ln.
?-trace.
Solution:
%factorial of N
factorial(0,1).
factorial(N,F) :-
N>0,N1 is N-1,factorial(N1,F1),F is N * F1.
?- factorial(5,W),write(W).
Solution:
%Nth term of fibonacci
fibo(1, 0).
fibo(2, 1).
fibo(N, R) :-
N1 is N-1, N2 is N-2,
fibo(N1, R1),fibo(N2, R2),
R is R1 + R2.
?-fibo(6,W),write(W).
Solution:
%gcd of A and B
gcd(A, 0, A).
gcd(A, B, D) :- (A>B),(B>0),R is A modB,gcd(B,R,D).
gcd(A, B, D) :- (A<B),gcd(B,A,D).
?-gcd(50,15,D), write(D).
%Towers of Hanoi
move(1,X,Y,_):-
write("Move top disk from"),
Write(X) ,
Write(‘to’),
write(Y),
nl.
move(N,X,Y,Z):-
N>1,
M is N-1,
move(M,X,Z,Y),
move(1,X,Y,_),
move(M,Z,Y,X).
?-move(3,left,right,centre).
?-arr(6,[2,3,4,5,6,12],N),write(N).
Solution:
%reverse list
reverse([],X,X).
reverse([X|Y],Z,W) :- reverse(Y,[X|Z],W).
?-reverse([4,2,3],[],A),write(A).
Solution:
%LIST CONCATENATION
list([],L,L).
list([X|Y],M,[X|N]):- list(Y,M,N).
?- list([1,2,3],[4,5,6],P),write(P).
Solution:
% DELETE ELEMENT FORM LIST
list(X,[X|Y],Y).
list(X,[M|P],[M|Q]):- list(X,P,Q).
?-list(34,[5,7,8,34,77],W),write(W).
Solution:
% FIBONACCI LIST
fibLi(P,L):-fibs(P,K),reverse(K,[],L).
fibs(0,[]).
fibs(X,[F|Y]):-X1 is X-1,fib(X,F),fibs(X1,Y).
fib(1,0).
fib(2,1).
fib(N,F):-N1 is N-1,N2 is N1-1,fib(N1,F1),fib(N2,F2),F is F1+F2.
reverse([X|Y],Z,W):-reverse(Y,[X|Z],W).
reverse([],X,X).
?-fibLi(6,F),write(F).
Solution:
%GRAPH PATH
edge(1,2).
edge(1,4).
edge(1,3).
edge(2,3).
edge(2,5).
edge(3,4).
edge(3,5).
edge(4,5).
connected(X,Y):-edge(X,Y);edge(Y,X).
member(X,[X|R]).
member(X,[Y|R]):-member(X,R).
reverse([X|Y],Z,R):-reverse(Y,[X|Z],R).
reverse([],X,X).
path(A,B,Path):- travel(A,B,[A],Q),reverse(Q,[],Path).
travel(A,B,P,[B|P]):-connected(A,B).
travel(A,B,Visited,Path):-connected(A,C),C\==B,not(member(C,Visi
ted)),
travel(C,B,[C|Visited],Path).
?-path(1,5,P),write("P="),write(P),nl,ln.