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

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

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

Прошу помогите!!! я перепробовала множество вариантов, но никак не могу исправить ошибку. Задача составить произвольный список (первый), (второй список) составить из элементов первого списка, но так чтобы элементы не повторялись. На эту задачу есть решение, но где -то ошибка:
Листинг программы
  1. p([],[]).
  2. p([L],[L]).
  3. p(L,[L|M],M).
  4. p(L,[L|M],[L|Q]):-p(L,M,Q).
Дело в том, что когда я пишу в прологе так: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
Листинг программы
  1. % membercount(Elem, Count, List):- истина если Elem встречается в List ровно Count раз
  2. membercount(_,0,[]).
  3. membercount(Elem, CountNew,[OtherElem|List]) :-
  4.        membercount(Elem, CountPrev, List),
  5.        ((Elem == OtherElem, CountNew is CountPrev + 1);
  6.        (Elem \== OtherElem, CountNew is CountPrev)).
  7. % se(A,B,C) - истенен, если список C соответсвует сп ску после удаления всех вхождений элемента A
  8. se(_,[].[]).
  9. se(A,[A1|L1],L2):- se(A,L2,Lres), ( ( A == A1, L2 = Lres) : ( A\ ==A1, L2=[A1|Lred]) ).

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


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

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

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

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

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

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