Написать программу со списками - Prolog

Формулировка задачи:

Написать программу для сортировки списка методом селекции: из списка выбирается максимальный элемент и переносится в голову результирующего списка, изначально пустого. Процесс повторяется, пока не будут перенесены все элементы списка.

Код к задаче: «Написать программу со списками - Prolog»

textual
domains
int=integer
intl=int*
 
predicates
max_el(int,intl)
del_el(int,intl,intl)
vsort(intl,intl)
 
clauses
max_el(N,[N]).
max_el(N,[P|T]) :- max_el(N,T), N>P.
max_el(P,[P|T]) :- max_el(N,T), N<=P.
 
del_el(_,[],[]).
del_el(N,[N|T],T).
del_el(N,[M|T],[M|Q]):- M<>N,del_el(N,T,Q).
 
vsort([],[]).
vsort(X,[Z|Y]) :- max_el(Z,X), del_el(Z,X,W) , vsort(W,Y).

12   голосов, оценка 4.250 из 5


СОХРАНИТЬ ССЫЛКУ