Перевернуть вторую треть списка. SWI-prolog

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

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

Задан список, длина которого кратна 3. (это проверять не будем). Получить список, в котором элементы второй трети находятся в порядке, обратном заданному. Я догадываюсь, что начать надо с определения индексов второй трети списка
Листинг программы
  1. main(L, L1):-
  2. length(L,N),
  3. K2 is 2 * N/3 + 1,

Решение задачи: «Перевернуть вторую треть списка. SWI-prolog»

textual
Листинг программы
  1. main1(L, L1):-
  2.     length(L,N),
  3.     K2 is N/3+1,
  4.     K3 is 2*N/3+1,
  5.     parts1(L,1,K2,K3,Part1,Part2,Part3),
  6.     reverse(Part2,Part2rev),
  7.     append(Part1, Part2rev, L2),
  8.     append(L2,Part3,L1).
  9.  
  10. parts1([X|Xs],I,K2,K3,[X|P1],P2,P3):-
  11.     I<K2,
  12.     I1 is I+1,
  13.     parts1(Xs,I1,K2,K3,P1,P2,P3).
  14.  
  15. parts1([X|Xs],I,K2,K3,P1,[X|P2],P3):-
  16.     I>=K2,
  17.     I<K3,
  18.     I1 is I+1,
  19.     parts1(Xs,I1,K2,K3,P1,P2,P3).
  20.  
  21. parts1(P3,_,_,_,[],[],P3).

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


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

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

15   голосов , оценка 3.8 из 5

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

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

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