Turbo Prolog: создать палиндром с помощью рекурсии - PullRequest
0 голосов
/ 11 декабря 2018

Я написал программу Prolog, чтобы проверить, является ли список палиндромом, и создать палиндром, если это не так.Эта программа переворачивает список и добавляет его к первоначальному палиндрому.

domains
  list = char*

predicates
  rev (list, list, list)
  reverse (list, list)
  palindrome (list, list)
  append (list, list, list)
  del (list, list)

clauses
  rev ([H|T], A, R) :- rev (T, [H|A], R). 
  rev ([], A, A).

  reverse (L, R) :- rev (L, [], R).

  del ([_|L1], L1). 

  palindrome (L, L) :- 
    reverse (L, L).
  palindrome (L, Res) :- 
    reverse (L, R),
    del (R, R1),
    append (L, R1, Res).

  append ([], L, L). 
  append ([X|L1], L2, [X|L3]) :- 
    append(L1, L2, L3).

Но мне нужно заменить предикат palindrome на предикат, который будет использовать рекурсию вместо обращения списка.

...