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,264
  • 13
  • 101
  • 209
Mahdi
  • 967
  • 4
  • 18
  • 34

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,687
  • 8
  • 32
  • 44