2012-04-21 2 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

Благодарим вас за ответ, но это не работает для меня. Я использую winog 4.7. – Mahdi

+0

Ну, я использую XSB-Prolog. Какую ошибку вы получаете? –

+0

Он не возвращает никаких ошибок, просто скажите нет – Mahdi

Смежные вопросы