2010-12-01 10 views
1

私は制約満足問題を解決する "Computational Intelligence book"からcsp.plをコンパイルしようとしています。私はクロスワードパズルジェネレータを解決するための基礎としてこれを使用したいと思います。remove:プロローグ

しかし、私はそれが

Existence error in user:remove/3 
! procedure user:remove/3 does not exist 
! goal: user:remove([1,2,3,4],3,_127) 
| ?- :- 

を与えるのコードを実行しようとすると、私は、removeこれはコードの一部です...誰もできビルトイン述語

% select(E,L,L1) selects the first element of 
% L that matches E, with L1 being the remaining 
% elements. 
select(D,Doms,ODoms) :- 
    remove(D,Doms,ODoms), !. 

% choose(E,L,L1) chooses an element of 
% L that matches E, with L1 being the remaining 
% elements. 
choose(D,Doms,ODoms) :- 
    remove(D,Doms,ODoms). 

はないと思いますこの問題を解決するのを手助けしてください... コードが教科書で実行されているため、いくつかのプログラムで実行されていることがあります。

助けてください

答えて

1

私はremoveはPrologライブラリの一部だとは思わない - 確かにSWI Prologではない。リストライブラリはhereです。

コードにremoveを使用するのと同じことを行う述語deleteがあります。だからちょうど見つけて、置き換えて、それは動作するはずです。これはあなたのchoose/3は何をすべきかを行いlists:select/3述語、にアクセスすることができます

:- use_module(library(lists)). 

使用

3

ロードlists librarylists:delete/3は、ほとんどあなたのremove/3ですが、引数の順序が異なります。