.........most common prolog programs are on..........
% PROGRAM TO REVERSE A NUMBER IN PROLOG
gurpreet:- write('Enter number'),nl,read(X),Z is X mod 10, X1 is X/10, R is (Z*1
0)+(X1),write(R),!.
% PARSER IN PROLOG
sentence(A,C):-nounphrase(A,B),verbphrase(B,C).
nounphrase(A,C):-article(A,B),noun(B,C).
verbphrase(A,C):-verb(A,B),prepositionphrase(B,C).
prepositionphrase(A,C):-preposition(A,B),nounphrase(B,C).
preposition([at|X],X).
article([a|X],X).
article([the|X],X).
noun([dog|X],X).
noun([cow|X],X).
noun([moon|X],X).
verb([barked|X],X).
verb([wrinked|X],X).
% FIBONACCI SERIES IN PROLOG
fibonacci(0,1).
fibonacci(1,1).
fibonacci(A,B) :- A > 1, A1 is A - 1, A2 is A - 2, fibonacci(A1,B1), fibonacciA2
,B2), B is B1 + B2
% PROGRAM FOR THE INTERSECTION OF TWO LISTS
int([X|Y],Z,[X|D]):-member(X,Z),int(Y,Z,D).
int([X|Y],Z,D):- \+member(X,Z),int(Y,Z,D).
int([],Z,[]).
% TOWER OF HANOI PROLOG IMPLEMENTATION
towerofhanoi(1,X,Y,_):- write(' move the disk from'),write(X),write('TO') ,writ
e(Y),nl.
towerofhanoi(N,X,Y,Z):- N >1, M is N-1, towerofhanoi(M , X, Z,Y),towerofhanoi(1,
X,Y,_),towerofhanoi(M,Z,Y,X).
% PROGRAM TO REVERSE THE LIST
reverse_garry([],A,A).
reverse_garry([A|B],Z,W):- reverse_garry(B,[A|Z],W).
% PROGRAM TO FIND THE PRODUCT OF ALL THE ELEMENTS IN LIST
pro([],1).
pro([H|T],P):- pro(T,HT), P is H*HT.
% PROGRAM TO SEE THE PERMUTATIONS IN LIST ENTERED
garry(X,[X|R],R).
garry(X,[C|R],[C|S]):- garry(X,R,S).
permu_garry([],[]).
permu_garry(Z,[A|B]):- perm(B,W), garry(A,Z,W).
% A PROLOG PROGRAM TO CALCULATE MAXIMUM AND MINIMUM IN LIST
maxlist([A],A).
maxlist([A|LIST],MAX):- maxlist(LIST,MAX0),(A>=MAX0, MAX=A ; A<MAX0, MAX=MAX0).
minlist([A],A).
minlist([A|LIST],MIN):- minlist(LIST,MIN0),(A=<MIN0, MIN=A ; A>MIN0, MIN=MIN0).
% PROGRAM TO CALCULATE ELEMENTS IN LIST
callist([],0).
callist([_|T],X):- callist(T,X1), X is X1+1.
% PROGRAM TO CALCULATE UNION OF 2 LISTS
gurpreet_union([X|Y],Z,W) :- member(X,Z), gurpreet_union(Y,Z,W).
gurpreet_union([X|Y],Z,[X|W]) :- \+ member(X,Z), gurpreet_union(Y,Z,W).
gurpreet_union([],Z,Z).
% PROGRAM TO PRINT Kth ELEMENT FROM LIST
extractk(X,[X|_],1).
extractk(X,[_|T],K):- K>1,K1 is K-1, extractk(T,X,K1).
% PROGRAM TO PRINT NUMBERS IN DESCENDING ORDER
print1(0):-write('0'),!.
print1(X):-write(X),nl,N is X-1,print1(N).
% PROGRAM TO ADD 10 ELEMENTS OF LIST
% IT WILL WORK FOR 10 ELEMNTS AND TO MAKE IT WORK FOR ANY NUMBER PLACE A %NUMBER
IN PLACE OF 10 WHATR U WANT.
addlist(_,0,0).
addlist([H|T],C,X):-C1 is C-1,addlist(T,C1,X1),X is X1+H.
sum([H|T],X):-addlist([H|T],10,X).
% PROGRAM TO ADD 2 NUMBERS IN PROLOG
match(10).
manage:-nl,write('Do u wanna enter another value:'),nl,write('Enter 10 for yes:'
),nl,write('Press any key for no:'),read(K),match(K).
add:- write(' *** welcome to program ***'),nl, write('Enter the value of variabl
e1:'),read(X),write('\t\t\t Enter the value of variable2:'),read(Y),Z is X+Y,nl,
write( Z), manage.
% Program to print 10 numebrs in ASCENDING ORDER
print_my(10):-write(10),!.
print_my(X):-write(X),nl,N is X+1,print_my(N).
% PROGRAM TO CALCULATE THE CUBE OF A NUMBER
% START WITH WRITING CUDE ON COMMOND PROMPT
match(10).
manage:-nl,write('Do u wanna enter another value:'),nl,write('Enter 10 for yes:'
),nl,write('Press any key for no:'),read(K),match(K).
cube:- write(' *** welcome to program ***'),nl, write('Enter the value of variab
le1:'),read(X),Z is X**3,nl, write( Z), manage,cube.
% PROGRAM TO SEE THE GREATEST COMMON DIVISIOR (GCD)
cd(A, 0, A).
cd(A, B, D) :- (A>B),(B>0),R is A mod B,cd(B,R,D).
cd(A, B, D) :- (A<B), cd(B,A,D).
% PROGRAM TO Check a number is PRIME OR NOT
div(X,A):- N is A*A , N=<X, X mod A =:=0.
div(X,A):- A<X, A1 is A+1,div(X,A1).
check_prime(X):- A is 2, X>1, \+div(X,A).
% PROGRAM TO CALCULATE FACTORIAL OF A NUMBER
fact(0,1).
fact(P,Q):-P1 is P-1,fact(P1,Z), Q is Z*P.