Объяснение готового задания (вычисление "разности множеств") - Prolog

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

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

Помогите, пожалуйста, разобраться с задачей. Заданы s1 и s2 - "множества с повторяющими элементами". Необходимо определить предикат p(+S1,+S2,?S), который вычисляет "разность множеств". Например p([ 1, 2, 1, 2, 1, 3], [5, 3, 3, 1, 2, 2], S) должен давать результат S=[1, 1]; Вот есть код, но не совсем понятно что именно делает каждая строка(особенно во 2 части программы). Объясните пожалуйста, кому не сложно)
Листинг программы
  1. r(L,[],L).
  2. r(L,[H|Tail],Ans):-del(L,H,Temp),r(Temp,Tail,Ans).
  3. del([],_,[]).
  4. del([H|Tail],H,Tail):- !.
  5. del([H|Tail],X,[H|NewTail]):-del(Tail,X,NewTail).

Решение задачи: «Объяснение готового задания (вычисление "разности множеств")»

textual
Листинг программы
  1. del([],_,[]). % Если что угодно удалять из пустого списка, будет пустой список
  2. del([H|Tail],H,Tail):- !. % Если голова списка совпадает с удаляемым элементом, ответом будет хвост списка
  3. del([H|Tail],X,[H|NewTail]):-del(Tail,X,NewTail). % Иначе голова переносится в ответ, а хвосты списков обрабатываются рекурсивно

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


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

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

8   голосов , оценка 4.25 из 5

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

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

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