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]) ).

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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