Я пытаюсь совершить путешествие по лабиринтам. Длина лаборатории. 20x20 и имеет два входа и два восточных.Путешествие через лабиринт 20x20 с 2 входами и 2 выходами
entrance(1,3).
east(4,5).
enter1(20,8).
enter2(15,4).
exit1(14,2).
exit2(2,8).
wall(1,1).
wall(1,2).
wall(1,4).
wall(1,5).
wall(2,2).
wall(2,2).
wall(2,4).
wall(2,5).
wall(3,1).
wall(3,2).
wall(3,5).
wall(4,1).
wall(4,2).
wall(4,3).
wall(5,1).
wall(5,2).
wall(5,3).
wall(5,4).
wall(4,5).
member(X,[X|_]).
member(X,[_|T]) :- member(X,T) .
go(ZX,ZY,CZ,ZY) :- CX is ZX + 1, not(wall(CX,ZY)), CX < 21, CX > 0.
go(ZX,ZY,CZ,ZY) :- CX is ZX - 1, not(wall(CX,ZY)), CX < 21, CX > 0.
go(ZX,ZY,ZX,CY) :- CY is ZY + 1, not(wall(ZX,CY)), CY < 21, CY > 0.
go(ZX,ZY,ZX,CY) :- CY is ZY - 1, not(wall(ZX,CY)), CY < 21, CY > 0.
find_way(a(X,Y) , a(X,Y) , P) :-
write(P).
find_way(a(X,JY) , a(I,J) , P) :-
go(X,Y,NI,NJ) ,
not(member(a(NI, NJ) , P) ,
find_way(a(NI,NJ) , a(I,J) , [a(NI,NJ),P]).
way :-
entrance(X,Y) ,
east(S,K) ,
find_way(a(X,Y) , a(S,K) , [ ]) .
У меня есть это:
find_way(enter1(20,8),exit1(14,2), P).
но когда я использую его, он выходит из строя. Может ли кто-нибудь сказать мне, как я могу заставить его работать, пожалуйста?
Начнем с того, 'member' принимает 2 аргумента ... –
Что означает«два входит и 2 выходы «Как должен выглядеть ваш путь? Когда начать? – false
Да, где начинать и заканчивать –