SWI-Prolog: Сортировка списка
Формулировка задачи:
Помогите написать программу:
Сортировка списка. эл-ты с четными индексами по возрастанию, а с нечетными по убыванию.
помогите пожалуйста.
Решение задачи: «SWI-Prolog: Сортировка списка»
textual
Листинг программы
domains int=integer intl=int* predicates split(intl,intl,intl) zip(intl,intl,intl) min(intl,int) max(intl,int) delfirst(intl,int,intl) vsort1(intl,intl) vsort2(intl,intl) task(intl,intl) clauses split([],[],[]). split([H],[H],[]). split([H1,H2|T],[H1|Q1],[H2|Q2]) :- split(T,Q1,Q2). zip([],_,[]):- !. zip(_,[],[]):- !. zip([H|T],[Z|Q],[H,Z|R]) :- zip(T,Q,R). min([H],H). min([H|T],H) :- min(T,Q), H<Q. min([H|T],Q) :- min(T,Q), H>=Q. max([H],H). max([H|T],H) :- max(T,Q), H>Q. max([H|T],Q) :- max(T,Q), H<=Q. delfirst([],_,[]). delfirst([H|T],H,T). delfirst([Q|T],H,[Q|R]) :- Q <> H, delfirst(T,H,R). vsort1([],[]). vsort1(X,[H|Y]) :- min(X,H), delfirst(X,H,Z), vsort1(Z,Y). vsort2([],[]). vsort2(X,[H|Y]) :- max(X,H), delfirst(X,H,Z), vsort2(Z,Y). task(X,R) :- split(X,X1,X2), vsort1(X1,XX1), vsort2(X2,XX2), zip(XX1,XX2,R).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д