Перевернуть вторую треть списка. 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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д