You are on page 1of 9

output

%Programtoaddtwonumbers.
%Rules.
sum(X,Y):ZisX+Y,write("Sumis"),write(Z),nl.
%Query.
?read(M),read(N),write(M),write(N),sum(M,N).

%Programtoprintmaximumoftwonumbers.
%Rules.
max(X,Y):X>Y,write("Maximumis"),write(X),nl.
max(X,Y):X=<Y,write("Maximumis"),write(Y),nl.
%Query.
?read(M),read(N),max(M,N).

%Programtofindfactorialofanumber.
%Facts.
fact(0,1):!.
%Rules.
fact(N,R):N1isN1,fact(N1,R1),RisN*R1.
%Query.
?read(M),fact(M,R),write("Factorialis"),write(R),nl.

%Programtocalculatefibonacciofnthnumber.
%Facts.
fib(1,0):!.
fib(2,1):!.
%Rules.
fib(N,R):N1isN1,N2isN2,fib(N1,R1),fib(N2,R2),RisR1+R2.

%Query.
?read(M),fib(M,R),write("Fibonaccitermis"),write(R),nl.

%Programtoinsertanelementatthenthposition.
Page1

output
%Rules.
insert(Pos,X,L,RL):insert1(1,Pos,X,L,RL).
insert1(C,Pos,X,L,[X|L]):C=Pos.
insert1(C,Pos,X,[H|T1],[H|T2]):C1isC+1,insert1(C1,Pos,X,T1,T2).
%Query.
?read(Pos),read(Item),read(L),write("Listis
"),write(L),nl,insert(Pos,Item,L,R),write("Newlistis"),write(R),nl.

%Programtodeleteanelementfromthenthposition.
%Rules.
del(N,L,R):del1(N,L,R,1).
del1(N,[H1|T1],[H2|T2],C):C\=N,C1isC+1,H2isH1,del1(N,T1,T2,C1).
del1(N,[H1|T1],T2,C):C=N,T2isT1.
%Query.
?read(N),read(L),write("Listis"),write(L),nl,del(N,L,R),write("Newlistis
"),write(R),nl.

%Programtoappendtwolists.
%Facts.
append1([],L,L).
%Rules.
append1([X|L1],L2,[X|L3]):append1(L1,L2,L3).
%Query.
?read(L1),read(L2),write("List1"),write(L1),nl,write("List2
"),write(L2),nl,append1(L1,L2,L3),write("Concatenatedlistis"),write(L3),nl.

%Programtoinsertanelementtotheheadofthelist.
%Facts.
notmem(X,[]).
Page2

output
%Rules.
notmem(X,[H|T]):X\=H,notmem(X,T).
insert(X,L,[X|L]):write("Newlistis"),write([X|L]),nl.
add_to_head(X,[H|T]):notmem(X,[H|T]),insert(X,[H|T],L).
%Queries.
?read(X),read(L),write("Listis"),write(L),nl,add_to_head(X,L).

%Programtoaddanelementattheheadusingappend.
%Facts.
append1([],L,L).
%Rules.
append1([X|L1],L2,[X|L3]):append1(L1,L2,L3).
add_to_head(X,L):append1(X,L,R),write("Newlistis"),write(R),nl.
%Query.
?read(L1),read(L2),write("Elementtobeadded"),write(L1),nl,write("Listis
"),write(L2),nl,add_to_head(L1,L2).

%Programtoaddanelementatthetailwithoutappend.
%Rules.
add(X,[],[H1|T2]):H1=X,T2=[].
add(X,[H1|T1],[H1|T2]):add(X,T1,T2).
add_to_tail(X,L):add(X,L,R),write("Newlistis"),write(R),nl.
%Query.
?read(L1),read(L2),write("Elementtobeadded"),write(L1),nl,write("Listis
"),write(L2),nl,add_to_tail(L1,L2).

%Programtoaddanelementatthetailusingappend.
Page3

output
%Facts.
append1([],L,L).
%Rules.
append1([X|L1],L2,[X|L3]):append1(L1,L2,L3).
add_to_tail(X,L):append1(L,X,R),write("Newlistis"),write(R),nl.
%Query.
?read(L1),read(L2),write("Elementtobeadded"),write(L1),nl,write("Listis
"),write(L2),nl,add_to_tail(L1,L2).

%Programtocounttheelementswithinanysublist.
%Facts.
len([],0).
islist([]).
%Rules.
islist([H|T]):islist(T).
len([H|T],R):len(T,R1),Ris1+R1.
all([],0):!.
all([H|T],Res):islist(H),len(H,Res1),all(T,Res2),ResisRes1+Res2;all(T,Res2),Res
isRes2+1.
%Query.
?read(M),all(M,R),write("Lengthof"),write(M),write("is"),write(R),nl.

%Programtodeterminewhetheranelementisamemberofthelist.
%Rules.
member(X,[X|T]):!.
member(X,[_|T]):member(X,T).
%Query.
?read(X),read(L),write("Checkwhether"),write(X),write("isanElementoflist
"),write(L),nl,member(X,L).

Page4

output

%Programtodeterminewhetheraninputisalistornot.
%Rules.
islist([]):!.
islist([H|T]):islist(T).
%Query.
?read(L),write("Checkwhether"),write(L),write("listornot."),nl,islist(L).

%ProgramtofindsumofNnaturalnumbers.
%Rules.
sum_to(1,1):!.
sum_to(N,X):N>1,N1isN1,sum_to(N1,X1),XisX1+N.
%Query.
?read(N),write("Sumof"),write(N),write("Naturalnumbersis
"),sum_to(N,X),write(X),nl.

%Programtomergetwoorderedlist.
%Rules.
merge([],L,L):!.
merge(L,[],L):!.
merge([H1|T1],[H2|T2],[H3|T3]):H1>H2,H3isH2,merge([H1|T1],T2,T3).
merge([H1|T1],[H2|T2],[H3|T3]):H1<H2,H3isH1,merge(T1,[H2|T2],T3).
merge([H1|T1],[H2|T2],[H3,H4|T3]):H1=H2,H3isH1,H4isH2,merge(T1,T2,T3).
%Query.
?read(L1),read(L2),write("List1"),write(L1),nl,write("List2
"),write(L2),nl,merge(L1,L2,L3),write("Mergedlistis"),write(L3),nl.

%Programtofindlexicographicorderoftwowords.
Page5

output
%Rules.
aless(X,Y):name(X,A),name(Y,B),compare(A,B,R).
compare([],[],R):!,R=0.
compare([],L,R):!,R=1.
compare(L,[],R):!,R=2.
compare([H1|T1],[H2|T2],R):H1=H2,compare(T1,T2).
compare([H1|T1],[H2|T2],R):H1<H2,R=1.
compare([H1|T1],[H2|T2],R):H1>H2,R=2.
%Query.
?read(L1),read(L2),write("List1"),write(L1),nl,write("List2
"),write(L2),nl,merge(L1,L2,L3),write("Mergedlistis"),write(L3),nl.

%Programtocheckifalistispalindrome.
%Facts.
rev([],L,L).
%Rules.
rev([H|T],L1,L2):rev(T,[H|L1],L2).
%compare([],[]):write("ITISAPALINDROME!!"),nl.
%compare([X1|T1],[X2|T2]):X1=X2,compare(T1,T2);write("ITISNOTA
PALINDROME!!"),nl.
compare(L1,L2):L1=L2,write("ITISAPALINDROME!!"),nl.
compare(L1,L2):L1\=L2,write("ITISNOTAPALINDROME!!"),nl.
palindrome(L):read(L),write(L),nl,rev(L,[],L1),compare(L,L1).
%Query.
?palindrome(L).

%Programtoprintmaximumoftwonumbers.
%Rules.
max(X,Y,R):X>Y,RisX.
max(X,Y,R):X=<Y,RisY.
%Query.
?read(M),read(N),max(M,N,R),write("Maximumof"),write(M),write("and
"),write(N),write("is"),write(R),nl.
Page6

output

%Programtoprintmaximumoftheelementsofthelist.
%Facts.
max([],0).
%Rules.
max([H|T],R):max(T,R1),H<R1,RisR1.
max([H|T],R):max(T,R1),H>R1,RisH.
%Query.
?read(M),max(M,R),write("Maximumof"),write(M),write("is"),write(R),nl.

%Programtofindsumoftheelementsofagivenlist.
%Facts.
sum([],0).
%Rules.
sum([H|T],R):sum(T,R1),RisR1+H.
%Query.
?read(A),sum(A,R),write("Sumoftheelementsis"),write(A),nl,write(R),nl.

%Programtofindmultiplicationoftheelementsofagivenlist.
%Facts.
mul([],0).
%Rules.
mul([H|T],R):Tis[],RisH.
mul([H|T],R):mul(T,R1),RisR1*H.

%Query.
?read(A),mul(A,R),write("Listis"),write(A),nl,write("Multiplicationofthe
elementsis"),write(R),nl.

Page7

output
%Programtofindlengthofalist.
%Facts.
len([],0).
%Rules.
len([H|T],R):len(T,R1),Ris1+R1.
%Query.
?read(M),len(M,R),write("Lengthof"),write(M),write("is"),write(R),nl.

%Programtodeterminewhetheralistisevenlengthedoroddlengthed.
%Facts.
len([],0).
%Rules.
len([H|T],R):len(T,R1),Ris1+R1.
evenlist(L):len(L,R),ZisRmod2,Z=:=0,write("Listisevenlengthed.").
oddlist(L):len(L,R),ZisRmod2,Z=\=0,write("Listisoddlengthed.").
find(L):evenlist(L);oddlist(L).
%Query.
?read(M),write("Listis"),write(M),nl,find(M),nl.

%Programtoreversealist.
%Rules.
rev([],[],[]):!.
rev([H|T],L1,L2):rev(T,[H|L1],L2).
%Facts.
rev([],L,L).
%Query.
?read(L),write("Originallistis"),write(L),nl,rev(L,R1,R2),write("Reversedlist
is"),write(R2),nl.

Page8

output
%Programtoprintmaximumoftheelementsofthelistusingcut.
%Rules.
max([],0):!.
max([H|T],R):max(T,R1),H<R1,RisR1.
max([H|T],R):max(T,R1),H>R1,RisH.
%Query.
?read(M),max(M,R),write("Maximumof"),write(M),write("is"),write(R),nl.

%Programtofindgcdoftwonumbers.
%Rules.
max(X,Y,R1,R2):X>Y,R1=X,R2=Y.
max(X,Y,R1,R2):X<Y,R2=X,R1=Y.
gcd(X,Y):max(X,Y,R1,R2),ZisR1modR2,Z>0,gcd(Z,R2).
gcd(X,Y):max(X,Y,R1,R2),ZisR1modR2,Z=0,write("is"),write(R2),nl.
gcd(X,Y):X=:=Y,write("is"),write(X),nl.
%Query.
?read(X),read(Y),write("GCDof"),write(X),write("and"),write(Y),gcd(X,Y).

Page9

You might also like