2012-04-21 3 views
0

上のいくつかの基本にしてくださいヘルプ:私は怒鳴るように、与えられたリストのメンバーの任意の発生を削除し、プログラムを書きたいプロローグ

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

はどのように私はそれを行うことができますか?これは私の試みです:

deleteall(X,[],[]).     
deleteall(X,[H1|T1],[H2|T2]) :- deleteall (X,T1,T2). 
+1

ようこそ!私たちは助けたいと思っていますが、あなたが最初に試してみたいと思っています。あなたは何を試していますか、どこにいらっしゃいますか? –

+0

が、私はそれを忘れて、今私はそれを参照してください – Mahdi

+0

変更[この回答](http://stackoverflow.com/questions/6441527/simple-prolog-delete-from-list/6441803#6441803) – false

答えて

0

以下を試してください。元のプログラムの条件が不足していました。スタックオーバーフローへ

deleteall(_,[],[]). 
deleteall(X,[X|T1],T2) :- deleteall(X,T1,T2). 
deleteall(X,[H1|T1],[H1|T2]) :- not(X=H1), deleteall(X,T1,T2). 
+0

ご返信いただきありがとうございます、それは私のためには機能しません。私はwin prolog 4.7を使用しています。 – Mahdi

+0

さて、私はXSB-Prologを使用しています。あなたはどんなエラーを出していますか? –

+0

それはすべてのエラーをバックアップしません、ただ何 – Mahdi