Циклическая перестановка элементов - Prolog

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

Всем привет! Являюсь новичком, "пытаюсь" понять азы языка, использую SWI-Prolog, поэтому буду крайне признателен за совет. Задача "Напишите предикат p(+L, -S) - истинный тогда и только тогда, когда список S есть циклическая перестановка элементов списка L, например, p([f, g, h, j], [g, h, j, f]) -истина." Моя идея решения простая: определить голову и хвост, переставить голову в хвост. С реализацией проблемы. Во-первых, не могу понять, где в моем коде ошибка:
append([],L,S)
append([H|T], L, [T|L]):
      append(L,H,S).

Код к задаче: «Циклическая перестановка элементов - Prolog»

textual
    append([], List2, List2):-!.
    append([Head|Tail], List2, [Head|TailResult]):-
        append(Tail, List2, TailResult).
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

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


СДЕЛАЙТЕ РЕПОСТ