【发布时间】:2016-08-26 11:14:14
【问题描述】:
狗可以执行 以下动作:在地板上行走;爬上箱子(如果它已经在箱子上);如果站在肉正下方的盒子上,则抓住肉。但是当我运行下面的代码但我得到一个错误
程序“(A:-B)”不存在可从:
swish_trace:swish_call((开始:-canget(状态(atdoor,onfloor,atwindow,hasmeat)))) '$嗖嗖 wrapper'((start:-canget(state(atdoor,onfloor,atwindow,hasmeat))),A)
move(state(middle,onbox,middle,has_no_meat),state(middle,onbox,middle,has_meat)).
/*climbing the box*/
move(state(middle_floor, onfloor, middle_floor,has_no_meat), climb,
state(middle_floor,onbox, middle_floor,has_meat)).
/*pushing the box to the middle of the room*/
move(state(atwindow,onfloor,atwindow,has_box),
push(atwindow,middle_floor),
state(middle_floor,onfloor,middle_floor,has_box)).
/*dog walks from the door to the window*/
move(state(atdoor,onfloor,box,has_not), walk(atdoor,atwindow),
state(atwindow,onfloor,box,has_box)).
canget(state(_, _, _, has_meat)).
canget(State1) :- move(State1, Move, State2), canget(State2).
【问题讨论】:
标签: prolog swi-prolog