KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Trying to write a procedure that given a value and a list, it deletes all the occurence of that value in the list a wrote: delMember(X, [], []) :- !. delMember(X, [X|Xs], Y) :- !, delMember(X, Xs, Y). delMember(X, [T|Xs], Y) :- !, delMember(X, Xs, Y2), append([T], Y2, Y). Since the cut this code cannot answer correctly queries like: delMember(Y, [1,2,3,1,2,3,1,2,3], [1, 2, 1, 2, 1, 2 ]). If I delete the cuts: delMember(X, [], []). delMember(X, [X|Xs], Y) :- delMember(X, Xs, Y). delMember(X, [T|Xs], Y) :- delMember(X, Xs, Y2), append([T], Y2, Y). it fail in queries like: delMember(Y, [1,2,3,1,2,3,1,2,3], [1,2,3,1,2,3,1,2,3]). (returns true , when the correct answer is false ). How can I make it works in both situations? Maybe I can check that X is not T in the third line of code, I tried: delMember(X, [T|Xs], Y) :- not(X = T), delMember(X, Xs, Y2), append([T], Y2, Y). but it does not work.
Tags (comma-separated)
Save Edits
Cancel