عضو جدید
تاريخ عضويت: خرداد ۱۳۹۰
پست ها: 1
تشكرها: 0
0 تشكر در 0 پست
|
کامپایل Quick Sort با پرولوگ ؟
سلام
من چند تا سورس مرتب سازی quick sort به زبان پرولوگ دارم ، از دوستان اگه کسی می تونه و prolog رو سیستمش نصبه خواهش مکنم کامپایل کنه و نسخه exe اونو اینجا قرار بده .
كد:
Domains
list = integer*.
Predicates
quicksort(list,list).
split(integer,list,list,list).
concatenate(list,list,list).
printlist(list).
Clauses
quicksort([],[]).
quicksort([Head|Tail],SortedList) :-
split(Head,Tail,SList,BList),
quicksort(SList,SList1),
quicksort(BList,BList1),
concatenate(SList1,[Head|Blist1],SortedList),
printlist(SortedList).
split(_,[],[],[]).
split(Item,[Head1|Tail1],[Head1|SList],BList) :-
Item > Head1 , ! ,
split(Item,Tail1,SList,BList).
split(Item,[Head1|Tail1],SList,[Head1|BList]) :-
split(Item,Tail1,SList,BList).
concatenate([],List,List).
concatenate([Item|List1],List2,[Item|List3]) :-
concatenate(List1,List2,List3).
printlist([]) :- nl.
printlist([Head|Tail]) :-
write(Head," "),
printlist(Tail).
Output
Goal: quicksort([2,4,1,3,5,9,6],L).
یا این یکی
نقل قول:
% Quicksort in Prolog
gtq(X,Y) :- X @> Y.
quicksort( [],[] ).
quicksort( [X | Tail], Sorted) :-
split( X, Tail, Small, Big),
quicksort( Small, SortedSmall),
quicksort( Big, SortedBig),
conc( SortedSmall, [X | SortedBig], Sorted).
split( _, [], [], []).
split( X,[Y | Tail], [Y | Small], Big) :-
gtq( X, Y),!,
split( X, Tail, Small, Big).
split( X, [Y | Tail], Small, [Y | Big] ) :-
split( X, Tail, Small, Big).
conc([],L,L).
conc( [X | L1], L2, [X | L3]) :-
conc( L1, L2, L3).
|
|