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

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

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

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

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

textual
Листинг программы
  1. domains
  2. ch=char
  3. chl=ch*
  4.  
  5. predicates
  6. is_in(ch,chl)
  7. is_subset(chl,chl)
  8.  
  9. clauses
  10. is_in(_,[]):-fail.
  11. is_in(X,[X|_]):- !.
  12. is_in(X,[Y|T]):- X<>Y, is_in(X,T).
  13.  
  14. is_subset([],_):- !.
  15. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы