Documente Academic
Documente Profesional
Documente Cultură
sum(N1,N2) :-
checklength(N1,N2).
checklength(N1,N2) :-
L1 is length(N1,What),
L2 is length(N2,What),
Comp(L1,L2).
Comp(L1,L2) :-
L1=:=L2.
% ------------------------------------------------------------------------
con([X|Tail],L2,[X|Tail1]):-
con(Tail,L2,Tail1).
% ------------------------------------------------------------------------
maxlist([X,Y|T],MAX):-
X=<Y,
maxlist([Y|T],MAX).
% ------------------------------------------------------------------------
ASSIGNMENT 2
findnum(X,[X|Tail]):-
write("\nNumber Is Found").
findnum(X,[Y|Tail]):-
findnum(X,Tail).
%-----------------------------------------------------------
delete(X,[Y|Tail1],[Y|Tail2]):-
delete(X,Tail1,Tail2).
%-----------------------------------------------------------
reverse([],Outputlist,Outputlist).
reverse([Head|Tail],List1,List2):-
reverse(Tail,[Head|List1],List2).
%-----------------------------------------------------------
6. Write a prolog program to add an element.
add(X,List,[X|List]).
%-----------------------------------------------------------
%-----------------------------------------------------------
ASSIGNMENT 3
deleteall(symbol,list,list)
%write this only if not running
deleteall(_,[],[]).
deleteall(X,[X|T],NT):-deleteall(X,T,NT).
deleteall(X,[H|T],[H|NT]):-H<>X,deleteall(X,T,NT).
%-----------------------------------------------------------
sublist([],[]).
sublist([First|Rest],[First|Sub]):-
sublist(Rest,Sub).
sublist([_|Rest],Sub):-
sublist(Rest,Sub).
%-----------------------------------------------------------
intersection([X|Y],M,[X|Z]):-
list_member(X,M), intersection(Y,M,Z).
intersection([X|Y],M,Z):-
\+ list_member(X,M),intersection(Y,M,Z).
intersection([],M,[]).
list_member(X,[X|_]).
list_member(X,[_|TAIL]):-
list_member(X,TAIL).
%-----------------------------------------------------------
lm(X,[X|_]).
lm(X,[_|Tail]):-
lm(X,Tail).
%-----------------------------------------------------------
div([],[],[]).
div([X],[X],[]).
div([X,Y|List],[X|List1],[Y|List2]):-
div(List,List1,List2).
ASSIGNMENT 4
domains
x = integer
l = integer*
predicates
sum(l,x)
clauses
sum([],0).
sum([X|List],Sum) :-
sum(List,Sum1),
Sum = X + Sum1.
Output :
Goal: sum([1,2,3,4],Sum)
Sum=10
%--------------------------------------------------------------------
output-
max([2,4,8,3],x)
x=8
%--------------------------------------------------------------------
%--------------------------------------------------------------------
ASSIGNMENT 5
%------------------------------------------------------------------------------------------------
2. Write a prolog program to sort all the elements of a list using merge sort.
ms([],[]).
ms([A],[A]).
ms([A,B|R],S):-
split([A,B|R],L1,L2),
ms(L1,S1),
ms(L2,S2),
merge(S1,S2,S).
split([],[],[]).
split([A],[A],[]).
split([A,B|R],[A|Ra],[B|Rb]):-
split(R,Ra,Rb).
merge(A,[],A).
merge([],B,B).
merge([A|Ra],[B|Rb],[A|M]):-
A=<B ,merge(Ra,[B|Rb],M).
merge([A|Ra],[B|Rb],[B|M]):-
A>B, merge([A|Ra],Rb,M).
%------------------------------------------------------------------------------------------------------------
3. Write a prolog program to sort all the elements of a list using quick sort.
quicksort([X|Xs],Ys) :-
partition(Xs,X,Left,Right),
quicksort(Left,Ls),
quicksort(Right,Rs),
append(Ls,[X|Rs],Ys).
quicksort([],[]).
partition([X|Xs],Y,[X|Ls],Rs) :-
X <= Y, partition(Xs,Y,Ls,Rs).
partition([X|Xs],Y,Ls,[X|Rs]) :-
X > Y, partition(Xs,Y,Ls,Rs).
partition([],Y,[],[]).
append([],Ys,Ys).
append([X|Xs],Ys,[X|Zs]) :- append(Xs,Ys,Zs).
%------------------------------------------------------------------------------------------------
5. Write a prolog program to sort all the elements of a list using insertion
sort.
insertSort([H|List], Result) :-
insertSort(List, Temp),
printlist(Temp),
insertItem(H, Temp, Result).
insertSort([], []).
printlist([]) :- nl.
printlist([X|List]) :-
write(X, " "),
printlist(List).
%------------------------------------------------------------------------------------------------
6. Write a prolog program to sort all the elements of a list using selection
sort.
ssort([],[]).
ssort([M1|S],[H|T]):-min(H,T,M1),remove(M1,[H|T],N),ssort(S,N).
min(M,[],M).
min(M,[H|T],M1):-min2(M,H,N),min(N,T,M1).
min2(A,B,A):-less(A,B).
min2(A,B,B):-not(less(A,B)).
less(A,B):-(A<B).
append([],B,B).
append([H|A],B,[H|AB]):-append(A,B,AB).
remove(X,L,N):-append(A,[X|B],L),append(A,B,N).
%----------------------------------------------------------------------------------------------------
7. Write a prolog program to sort all the elements of a list using bubble
sort.
bubblesort(InputList,SortList) :-
swap(InputList,List) , ! ,
printlist(List),
bubblesort(List,SortList).
bubblesort(SortList,SortList).
swap([X,Y|List],[Y,X|List]):- X > Y.
swap([Z|List],[Z|List1]) :- swap(List,List1).
printlist([] :-nl.
printlist([Head|List]) :-
write(Head, \" \"),
printlist(List).