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

      Комментарии к записи Проверка списка на палиндром отключены

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

  • Автор
    Сообщения
  • #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].

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