SWI-Prolog: Сортировка списка

Узнай цену своей работы

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

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

Решение задачи: «SWI-Prolog: Сортировка списка»

textual
Листинг программы
  1. domains
  2. int=integer
  3. intl=int*
  4.  
  5. predicates
  6. split(intl,intl,intl)
  7. zip(intl,intl,intl)
  8. min(intl,int)
  9. max(intl,int)
  10. delfirst(intl,int,intl)
  11. vsort1(intl,intl)
  12. vsort2(intl,intl)
  13. task(intl,intl)
  14.  
  15. clauses
  16. split([],[],[]).
  17. split([H],[H],[]).
  18. split([H1,H2|T],[H1|Q1],[H2|Q2]) :- split(T,Q1,Q2).
  19.  
  20. zip([],_,[]):- !.
  21. zip(_,[],[]):- !.
  22. zip([H|T],[Z|Q],[H,Z|R]) :- zip(T,Q,R).
  23.  
  24. min([H],H).
  25. min([H|T],H) :- min(T,Q), H<Q.
  26. min([H|T],Q) :- min(T,Q), H>=Q.
  27.  
  28. max([H],H).
  29. max([H|T],H) :- max(T,Q), H>Q.
  30. max([H|T],Q) :- max(T,Q), H<=Q.
  31.  
  32. delfirst([],_,[]).
  33. delfirst([H|T],H,T).
  34. delfirst([Q|T],H,[Q|R]) :- Q <> H, delfirst(T,H,R).
  35.  
  36. vsort1([],[]).
  37. vsort1(X,[H|Y]) :- min(X,H), delfirst(X,H,Z), vsort1(Z,Y).
  38.  
  39. vsort2([],[]).
  40. vsort2(X,[H|Y]) :- max(X,H), delfirst(X,H,Z), vsort2(Z,Y).
  41.  
  42. task(X,R) :- split(X,X1,X2), vsort1(X1,XX1), vsort2(X2,XX2), zip(XX1,XX2,R).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут