SWI Prolog: составить второй список из элементов первого так, чтобы элементы не повторялись

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

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

Прошу помогите!!! я перепробовала множество вариантов, но никак не могу исправить ошибку. Задача составить произвольный список (первый), (второй список) составить из элементов первого списка, но так чтобы элементы не повторялись. На эту задачу есть решение, но где -то ошибка:
Дело в том, что когда я пишу в прологе так:p([a, b, c, d, d, a], [a, b, c, d]). либо :p([n,n,l,l,k,k])=p([n,l,k]) выдает false p(n,l,k)=p(n,l,k). только на это true

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

textual
Листинг программы
% membercount(Elem, Count, List):- истина если Elem встречается в List ровно Count раз
membercount(_,0,[]).
membercount(Elem, CountNew,[OtherElem|List]) :-
       membercount(Elem, CountPrev, List),
       ((Elem == OtherElem, CountNew is CountPrev + 1);
       (Elem \== OtherElem, CountNew is CountPrev)).
% se(A,B,C) - истенен, если список C соответсвует сп ску после удаления всех вхождений элемента A
se(_,[].[]).
se(A,[A1|L1],L2):- se(A,L2,Lres), ( ( A == A1, L2 = Lres) : ( A\ ==A1, L2=[A1|Lred]) ).

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


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

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

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