2010-12-01 19 views
1

J'essaie de compiler csp.pl à partir de "Computational Intelligence book" qui résout le problème de satisfaction de contraintes. Je veux l'utiliser comme base pour résoudre le générateur de mots croisés.remove: prolog

Mais lorsque je tente d'exécuter le code lui donne je pense

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

supprimer n'est pas un prédicat

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

intégré Ceci est la partie du code ... Quelqu'un peut-il s'il vous plaît aidez-moi à résoudre ce problème ... Le code devrait s'exécuter puisque dans le manuel il est prétendu que hv fonctionne sur certains programmes ..

S'il vous plaît aider

Répondre

1

Je ne pense pas remove fait partie d'une bibliothèque Prolog - certainement pas SWI Prolog. La bibliothèque de listes est here.

Il existe un prédicat delete qui fait la même chose que le code utilise remove pour. Il suffit donc de trouver et remplacer et cela devrait fonctionner.

3

Chargez le lists library en utilisant

:- use_module(library(lists)). 

Cela vous donne accès au prédicat lists:select/3, qui fait ce que votre choose/3 devrait faire. lists:delete/3 est presque votre remove/3, sauf avec les arguments dans un ordre différent.