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]) ).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д