Инструкции: Измените прилагаемую программу, чтобы для того, чтобы обезьяна достигла бананов, он должен стоять на маленькой коробке, которую он положил поверх большего. В начале программы ящики должны находиться в двух разных местах в комнате. Отобразите на экране действия обезьяны.Пролог: обезьяна и банан, два ящика
Я читал учебник (Prolog Programming for Artificial Intelligence), и Prolog, безусловно, трудно поднять. В то время как в книге рассматривается, как решить проблему, если есть одна коробка, в ней не упоминается, как начать решать эту проблему, если имеется более одного окна. Любые рекомендации/предложения будут высоко оценены.
move(state(middle, onbox, middle, hasnot), grasp, state(middle, onbox, middle, has)).
move(state(Pos, onfloor, Pos, H), climb, state(Pos, onbox, Pos, H)).
move(state(P1, onfloor, P1, H), push(P1, P2), state(P2, onfloor, P2, H)).
move(state(P1, onfloor, P, H), walk(P1, P2), state(P2, onfloor, P, H)).
canget(state(_ ,_ ,_ , has)).
canget(state1) :-
move(State1, Move, State2),
canget(State2).
Вопрос:
canget(state(atdoor, onfloor, atwindow, hasnot)). % (monkey's horizontal position, monkey's vertical position, position of the box, and whether or not the monkey has the banana).
Единственное, что я могу думать о том, чтобы добавить еще одно поле для каждого пункта для позиции второго бокса, например, состояние (горизонтальная позиция, вертикальная позиция, позиция для box1, pos для box2 и статус банана).
Я думаю, что я [видел эту проблему раньше] (http://stackoverflow.com/q/27674390/2936460) ... – SQB