Ошибка при оценке выражения в прологе
Я очень новичок в Прологе. Мне нужно найти все пути от источника до места назначения в лабиринте.
Я написал следующее предложение, чтобы мне не приходилось писать все граничные отношения явно:
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>
Я не понимаю, почему выражение не оценивается.