Если длина списка нечетна, построить список, поменяв местами левую и правую часть списка - Prolog

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

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

Дан список L. Если длина списка нечетна, построить список L1, поменяв местами левую и правую часть списка, в противном случае оставить список без изменения.

Как я понял,надо сначала создать список L.Потом создать предикат нечетного и после этого мы создаем L1? И как примерно будет выглядит код на SWI-пролог? Заранее благодарен.

Решение задачи: «Если длина списка нечетна, построить список, поменяв местами левую и правую часть списка»

textual
Листинг программы
  1. domains
  2. int=integer
  3. intl=int*
  4.  
  5. predicates
  6. app(intl,intl,intl)
  7. len(intl,int)
  8. head(intl,int,intl)
  9. tail(intl,int,intl)
  10. task(intl,intl)
  11.  
  12. clauses
  13.  
  14. app([],X,X).
  15. app([H|T],X,[H|Y]) :- app(T,X,Y).
  16.  
  17. len([],0).
  18. len([_|T],N) :- len(T,N1),N=N1+1.
  19.  
  20. head(_,0,[]).
  21. head([H|T],N,[H|Z]) :- N1=N-1, head(T,N1,Z).
  22.  
  23. tail(X,0,X).
  24. tail([_|T],N,Q) :- N1=N-1, tail(T,N1,Q).
  25.  
  26. task(X,X) :- len(X,L), L mod 2 = 0.
  27. task(X,Y) :- len(X,L), L mod 2 = 1, K=L div 2, head(X,K,LL), tail(X,K,[H|RR]), app(RR,[H],R1), app(R1,LL,Y).

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


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

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

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

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

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

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