Предикат, составляющий список символов, которые входят одновременно в обе данных строки - Prolog

Узнай цену своей работы

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

Создайте предикат, составляющий список символов, которые входят одновременно в обе данных строки.

Решение задачи: «Предикат, составляющий список символов, которые входят одновременно в обе данных строки»

textual
Листинг программы
predicates
isin(char,string)
intersect(string,string,string)
 
 
clauses
isin(_,"") :- fail.
isin(C,S) :- frontchar(S,C,_),!.
isin(C,S) :- frontchar(S,_,RS),isin(C,RS).
 
intersect("",_,"").
intersect(A,B,R) :- frontchar(A,A1,RA), isin(A1,B), intersect(RA,B,RR), frontchar(R,A1,RR), !.
intersect(A,B,R) :- frontchar(A,_,RA), intersect(RA,B,R).
 
goal
intersect("asdfg","kjhgfd",R),write(R),nl.

Объяснение кода листинга программы

  1. isin(char,string) - проверяет, содержится ли символ в строке. Если да, то возвращает символ, если нет - возвращает пустую строку.
  2. intersect(string,string,string) - находит пересечение трех строк. Если строки пустые, возвращает пустую строку.
  3. isin(_,``) :- fail. - если первая строка пустая, то возвращает ошибку.
  4. isin(C,S) :- frontchar(S,C,_),!. - если первый символ строки S совпадает с C, то возвращает C, иначе возвращает вызов функции isin для оставшейся части строки S.
  5. isin(C,S) :- frontchar(S,_,RS),isin(C,RS). - если первый символ строки S не совпадает с C, то возвращает вызов функции isin для оставшейся части строки S.
  6. intersect(``,_,``) - если первая строка пустая, то возвращает пустую строку.
  7. intersect(A,B,R) :- frontchar(A,A1,RA), isin(A1,B), intersect(RA,B,RR), frontchar(R,A1,RR), !. - если первый символ строки A совпадает с символом в строке B, то возвращает этот символ, иначе возвращает вызов функции intersect для оставшейся части строки A.
  8. intersect(A,B,R) :- frontchar(A,_,RA), intersect(RA,B,R). - если первый символ строки A не совпадает с символом в строке B, то возвращает вызов функции intersect для оставшейся части строки A.
  9. intersect(asdfg,kjhgfd,R),write(R),nl. - выводит пересечение строк asdfg и kjhgfd.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы