У меня небольшой вопрос по поводу моего кода: (например, его можно интерпретировать как сетку)
free(1,1).
free(1,3).
free(2,3).
free(2,1).
free(1,5).
free(5,6).
free(5,2).
free(5,4).
busy(5,1,white,pion).
busy(1,2,black,pion).
busy(1,4,black,pion).
busy(1,6,black,pion).
busy(5,3,white,pion).
busy(5,5,white,pion).
%all clauses for move/6
move(X,Y, X2,Y2,white,pion) :-
busy(X,Y,white,pion), free(X2,Y2), X2=X-1, Y2=Y-1.
move(X,Y, X2,Y2,white,pion) :-
busy(X,Y,white,pion), free(X2,Y2), X2=X-1, Y2=Y+1.
move(X,Y, X2,Y2,black,pion) :-
busy(X,Y,black,pion), free(X2,Y2), X2=X+1, Y2=Y-1.
move(X,Y, X2,Y2,black,pion) :-
busy(X,Y,black,pion), free(X2,Y2), X2=X+1, Y2=Y+1.
Когда я выполняю это:
move(1,2,X,Y,black,pion).
в SWI-Prolog это говорит: ложь. тогда как он должен сказать true и вернуть два утверждения:
- X2 = 2, Y2 = 1
- X2 = 2, Y2 = 3
Я делаю не понимаю, почему это не работает, не могли бы вы мне помочь?