Я пытаюсь прочитать список, проверить элемент, если элемент находится в КБ, что-то сделать, и добавить его в другой список, если его нет в КБ затем добавьте его в другой, третий список.Пролог, отделяющий список от двух других списков
Я продолжаю думать о процедурной логике и не могу по-настоящему обвести ее вокруг себя. Это то, что я имеет смысл для меня, - но это не работает ...
//KB
r([a|X],Y,[gone|X]).
r([c|X],Y,[gone|X]).
r([b|X],Y,[known|X]).
r([d|X],Y,[known2|X]).
simplify([X|List],[X|NW],Result) :-
r(List,Nw,NewList),
!,
simplify2(NewList,Nw,Result).
simplify2([W|Words],Nw,[W|NewWords]) :-
simplify2(Words,Nw,NewWords).
simplify2([],[],[]).
Запрос:
- упростить ([а, Ь, с, d, е, е], X , Y).
Я хочу:
X = [e,f]
Y = [gone,known,gone,known2]
но выше дает X = [a|mem_address]
и Y = [d,e]
.
Очень загадочный. Я понимаю, что X - это «неизвестные» элементы. Но что такое Y? –
Btw, мне любопытно, как у вас есть адрес памяти, как хвост списка Prolog! –
Eugene, X неизвестен и Y известен! Я хочу упростить (перевести) известные термины и удалить известные термины шума и оставить список известных терминов, с которыми я могу что-то сделать, и отдельный список неопубликованных терминов, которые я могу «изучить». – Conor