Я создаю что-то, но это не сработало. В упражнении говорилось, что нужно удалить письмо. Пример ([c, o, m, k, p, u, t, e, r]) k должен быть устранен.
den([c,o,m,p,u,t,e,r]).
den([n,e,t,w,o,r,k]).
den([p,r,o,g,r,a,m]). % (c) delete(X,L1,L2):-
% append(A,[X,T],L1),
% append(A,T,L2).% <------------------ L -------------------->
% +-----------------------------------------+
% |<-> A <-> | X | <-> B <-> | Y | <-> C <->|
% +-----------------------------------------+
% <--------- F --------->
% +-------------------------------------+
% |<-> A <-> | <-> B <-> | Y | <-> C <->|
% +-------------------------------------+
% <-------------- CL --------------->
% +---------------------------------+
% |<-> A <-> | <-> B <-> | <-> C <->|
% +---------------------------------+delete_extra(Word, CorrectWord) :-
append(Begin, [Letter1|Ypoloipo], Word),
append(Middle, [Letter2|End], Ypoloipo),
word(CorrectWord),
append(Begin, YpoloipoCW, CorrectWord),
append(Middle, End, YpoloipoCW),
Letter1 \= Letter2.
Может ли быть так просто, как:
Пример вызова:
Предикат
select/3
является фактическим стандартным предикатом библиотеки над списками, которые не детерминистически выбирают элемент из списка, возвращая его и остальную часть списка.