Проверка списка на палиндром

В этой теме 3 ответа, 2 участника, последнее обновление  Васильев Владимир Сергеевич 3 года/лет, 4 мес. назад.

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)
  • Автор
    Сообщения
  • #1748

    questioner
    Участник

    Помогите, пожалуйста, с задачей. На SWI-Prolog нужно написать программу, которая определяет, является ли список палиндромом. Сделать надо через инверсию, но никак не получается

    #1749

    Сделать нужно на SWI-Prolog, но ведь в нем есть встроенный предикат reverse, выполняющий переворот списка.
    Список является палиндромом если совпадает с перевернутым собой, т.е. можно написать так:

    check_reverse(List):-
      reverse(List, List).

    Вряд-ли задача стоит таким образом, поясните.

    #1750

    questioner
    Участник

    Это не совсем то, что нужно. Требуется, чтобы он выдавал список в обратном порядке, а потом уже проверял.

    #1751

    В любом случае не пойму в чем проблема. Встроенный предикат reverse возвращает перевернутый список. Если вам нужно написать функцию reverse самостоятельно — посмотрите ее в статье с теорией по спискам — она там разобрана по кусочкам.

    Если же все-таки надо использовать встроенную функцию и проблема лишь в том, что надо вывести, а потом проверить:

    List = [1,2,3,2,1], reverse(List, Reverse), write(Reverse), List = Reverse.
    [1,2,3,2,1]
    L = [1, 2, 3, 2, 1],
    R = [1, 2, 3, 2, 1].

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)

Для ответа в этой теме необходимо авторизоваться.