Ошибка при оценке выражения в прологе

Я очень новичок в Прологе. Мне нужно найти все пути от источника до места назначения в лабиринте.

Я написал следующее предложение, чтобы мне не приходилось писать все граничные отношения явно:

neighbour(X,Y) :-
   (  X =:= Y+1
   ;  Y =:= X+1
   ;  X =:= Y+6
   ;  Y =:= X+6
   ).

Далее для нахождения пути я делаю следующее:

path(Source,Source,_).
path(Source,Destination,PathList) :-
    neighbour(Source,Z),                % find a neighbour of Source
    not(member(Z,PathList)),            % that is not already in the list
    % and see if there is a path from Z to Destination
    path(Z,Destination,[Source|PathList]). 

Во время работы я запросил следующее:

?- path(1,2,[]).    % "Is there a path from 1 to 2?"

Это дает мне следующую ошибку:

ERROR: Arguments are not sufficiently instantiated
ERROR: In:
ERROR:   [10] 1=:=_26424+1
ERROR:    [9] neighbour(1,_26452) at /Users/sujitkumar/Desktop/this sem/PL/2.pl:3
ERROR:    [8] path(1,2,[]) at /Users/sujitkumar/Desktop/this sem/PL/2.pl:30
ERROR:    [7] <user>

Я не понимаю, почему выражение не оценивается.

0 ответов

Другие вопросы по тегам