У меня есть домашняя работа по прологу, которая должна работать так:
singles([1,2,3,2,2,4,1], [3,4]).
true
Теперь я понял, что должен проверить, является ли один элемент одним в списке, а затем собрать все элементы вместе ... тогда я записал:
singles(L,SL):-findall(X,isSingle(X,L),SL).
isSingle(X,L):-member(X,L),append(Y,[X|Z],L),not(member(X,L1)),append(Y,Z,L1).
в функции isSingle
X
должен быть в списке L
, но не в новом списке L1
без X
, как 1
в [2,1,3]
, но не в [2,3]
, но, к сожалению, все не работает так, как я думал: (
Я думаю, что проблема в isSingle
части, кто-нибудь может мне помочь?