Определить, является ли первый список подмножеством второго - Prolog

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

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

Определить, является ли первый список подмножеством второго. Списки не имеют дубликатов. Аргументы: первый список; второй список. ?- pred([a,b,c],[s,a,e,c,d,b]). yes ?-

Решение задачи: «Определить, является ли первый список подмножеством второго»

textual
Листинг программы
domains
ch=char
chl=ch*
 
predicates
is_in(ch,chl)
is_subset(chl,chl)
 
clauses
is_in(_,[]):-fail.
is_in(X,[X|_]):- !.
is_in(X,[Y|T]):- X<>Y, is_in(X,T).
 
is_subset([],_):- !.
is_subset([X|T],Y) :- is_in(X,Y), is_subset(T,Y).

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

  1. domains - определяет типы данных для переменных
  2. predicates - определяет функции, которые будут использоваться в программе
  3. clauses - определяет правила, которые определяют поведение программы
  4. is_in(ch,chl) - функция, которая проверяет, есть ли символ в списке символов
  5. is_subset(chl,chl) - функция, которая проверяет, является ли один список подмножеством другого
  6. is_in(_,[]):-fail.- если пустой список не содержит символ, то возвращается ошибка
  7. is_in(X,[X|_]):- !.- если символ есть в начале списка, то возвращается успех
  8. is_in(X,[Y|T]):- X<>Y, is_in(X,T).- если символ не равен символу в начале списка, то рекурсивно вызывается функция для оставшейся части списка
  9. is_subset([],_):- !.- если пустой список не содержит символов, то возвращается успех
  10. is_subset([X|T],Y) :- is_in(X,Y), is_subset(T,Y).- если символ из первого списка есть во втором списке, то рекурсивно вызывается функция для оставшейся части первого списка

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


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

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

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