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

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

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

Задан список, длина которого кратна 3. (это проверять не будем). Получить список, в котором элементы второй трети находятся в порядке, обратном заданному. Я догадываюсь, что начать надо с определения индексов второй трети списка

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

textual
Листинг программы
main1(L, L1):-
    length(L,N),
    K2 is N/3+1,
    K3 is 2*N/3+1,
    parts1(L,1,K2,K3,Part1,Part2,Part3),
    reverse(Part2,Part2rev),
    append(Part1, Part2rev, L2),
    append(L2,Part3,L1).
 
parts1([X|Xs],I,K2,K3,[X|P1],P2,P3):-
    I<K2,
    I1 is I+1,
    parts1(Xs,I1,K2,K3,P1,P2,P3).
 
parts1([X|Xs],I,K2,K3,P1,[X|P2],P3):-
    I>=K2,
    I<K3,
    I1 is I+1,
    parts1(Xs,I1,K2,K3,P1,P2,P3).
 
parts1(P3,_,_,_,[],[],P3).

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


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

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

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