Вопрос

Я пытаюсь скомпилировать CSP.PL из «Книги вычислительного интеллекта», которая решает проблему удовлетворенности ограничения. Я хочу использовать это в качестве базы для решения генератора кроссвордов.

Но когда я пытаюсь запустить код, он дает

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

Я думаю, что удалить не встроенный предикат

% 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 работает на некоторых программах.

Пожалуйста помоги

Это было полезно?

Решение

Я не думаю remove является частью любой библиотеки Prolog - конечно, не Swi Prolog. Библиотека списков здесь.

Есть предикат delete что делает то же самое, что использует код remove за. Так что просто найти и заменить, и это должно работать.

Другие советы

Загрузить lists библиотека с использованием

:- use_module(library(lists)).

Это дает вам доступ к lists:select/3 предикат, который делает то, что вы choose/3 следует сделать. lists:delete/3 почти ваш remove/3, кроме как с аргументами в другом порядке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top