Я разработал алгоритм проверки палиндрома, который просто переворачивает заданный список элементов; используя наивный реверс. Затем программа проверяет, дает ли она тот же список или нет. Но у меня, кажется, проблема, которую я не могу понять. Программа всегда возвращает false. Вот программа, которую я разработал до сих пор...
reverseCurrentList([H|T],ReversedList):-
reverseCurrentList(T,RevT),
append(RevT,[H],ReversedList).
isPalindrome(GivenList):-
reverseCurrentList(GivenList,ReversedList),
GivenList=@=ReversedList.
Изменить: окончательная версия
В итоге остановился на следующем коде:
% A palindrome can be read forward or backward; e.g. [x,a,m,a,x]
% is_palindrome(L) :- L is a palindrome list
is_palindrome(L) :-
reverse(L,L).
reverse
, которая отлично работает. - person lurker   schedule 10.05.2014