Аксиома состояния наследника пролога ОШИБКА: вне локального стека

Я пытаюсь сформулировать аксиому государства-преемника для агента, который движется (север, юг, запад, восток) в сетке 4x4. Сетка имеет два препятствия на 1,1 и 2,2, а начальная позиция агента - 3,3. Агент должен добраться до телепортала, который находится в положении 1,2, не сталкиваясь с какими-либо препятствиями. Вот код:

obstacle(1,1).
obstacle(2,3).
teleportal(1,3).
agent(3,3,s0).
agent(X, Y, result(A,S)):-
   (  agent(X,Y,S), 
      (  A = north, (X=0; (obstacle(X2,Y), X2 is X-1)))
      ;
        (A = south, (X=3; (obstacle(X2,Y), X2 is X+1)));
        (A = west, (Y=0; (obstacle(X,Y2), Y2 is Y-1)));
        (A = east, (Y=3; (obstacle(X,Y2), Y2 is Y+1)))) 
        ;
        (agent(X2, Y, S), A = north, X > 0, X2 is X-1);
        (agent(X2, Y, S), A = south, X < 3, X2 is X+1);
        (agent(X, Y2, S), A = west, Y > 0, Y2 is Y-1);
        (agent(X, Y2, S), A = east, Y < 3, Y2 is Y+1).

escaped(S):- agent(X,Y,S), teleportal(X,Y).

Когда я запускаю escape(S), он выдает следующую ошибку: Out of local stack

0 ответов

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