1

制約充足問題を解決する「Computational Intelligence book」から csp.pl をコンパイルしようとしています。これをベースにクロスワードパズルジェネレーターを解いていきたいです。

しかし、コードを実行しようとすると、

 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).

これはコードの一部です...誰でもこの問題を解決するのを手伝ってくれませんか...教科書では一部のプログラムでhvが実行されると主張されているため、コードは実行されるはずです..

助けてください

4

2 に答える 2

3

を使用してlistsライブラリをロードします

:- use_module(library(lists)).

lists:select/3これにより、述語にアクセスできるようになり、choose/3実行すべきことを実行できます。は、引数の順序が異なることを除いて、lists:delete/3ほぼあなたの です。remove/3

于 2010-12-01T13:20:44.090 に答える
1

Prolog ライブラリの一部ではないと思いremoveます - 確かに SWI Prolog ではありません。リスト ライブラリはこちらです。

deleteコードが使用するのと同じことを行う述語がありremoveます。したがって、検索して置換するだけで機能するはずです。

于 2010-12-01T05:43:58.003 に答える