0

I want to write a program that deletes any occurrence of a member in a given list, as bellow:

deleteall(1,[1,2,3,1,3,2,5],Out)                
Out= [2,3,3,2,5]

How can I do that? This is my attempt:

deleteall(X,[],[]).                
deleteall(X,[H1|T1],[H2|T2]) :- deleteall (X,T1,T2).
false
  • 10,533
  • 12
  • 98
  • 192
Mahdi
  • 871
  • 3
  • 17
  • 30

1 Answers1

0

Please try the following. You were missing a condition in your original program.

deleteall(_,[],[]).
deleteall(X,[X|T1],T2) :- deleteall(X,T1,T2).
deleteall(X,[H1|T1],[H1|T2]) :- not(X=H1), deleteall(X,T1,T2).
Chetter Hummin
  • 6,427
  • 8
  • 31
  • 44