Objective: this program assignment is designed to allow students opportunity to
ID: 3771758 • Letter: O
Question
Objective: this program assignment is designed to allow students opportunity to develop a small, moderately sophisticated logic language program. We will use SWI-prologue that's a programming environment using the iOS standard prologue language.
Note: you may need to use a few prologue language elements, such as select, length, random, and nth0.
Don't forget to include base cases for any recursively define predicate. Also, you may need to modify the last war for petition .. Try replacing the single variable with the place keeper value.
Logic Language Quicksort Algorithm: quicksort (list, sorted-list) choose a random list element as pivot remove pivot from the list partition list-pivot A quicksort (left, left-sorted) select a random index between 0 and length quicksort (right, right-sorted) append (1eft-sorted, pivot, right-sorted, sorted-list) choose (list, piovt) determine the length of list identify the element at the selected indexExplanation / Answer
Domains
list = integer*.
Predicates
quicksort(list,list).
partition(integer,list,list,list).
append(list,list,list).
printlist(list).
Clauses
quicksort([],[]).
quicksort([Head|Tail],SortedList) :-
partition(Head,Tail,SList,BList),
quicksort(SList,SList1),
quicksort(BList,BList1),
append(SList1,[Head|Blist1],SortedList),
printlist(SortedList).
partition(_,[],[],[]).
partition(Item,[Head1|Tail1],[Head1|SList],BList) :-
Item > Head1 , ! ,
partition(Item,Tail1,SList,BList).
partition(Item,[Head1|Tail1],SList,[Head1|BList]) :-
partition(Item,Tail1,SList,BList).
append([],List,List).
append([Item|List1],List2,[Item|List3]) :-
append(List1,List2,List3).
printlist([]) :- nl.
printlist([Head|Tail]) :-
write(Head," "),
printlist(Tail).
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.