我试图用prolog编写以下内容:
如果代理有箭头,则has箭头/0返回true,并在代理执行射击操作后开始返回false。
代理从拥有箭头开始。
我的代码如下:
assert(hasArrow).
hasArrow :- (A = shoot -> false ; assert(hasArrow)).这是正确的吗?
发布于 2022-04-07 02:55:47
您可以按以下方式解决该问题:
:- dynamic(has_arrow/0).
has_arrow.
shoot :- retract(has_arrow).
get_arrow :- assertz(has_arrow).示例:
?- has_arrow.
true.
?- shoot.
true.
?- has_arrow.
false.
?- shoot.
false.
?- get_arrow.
true.
?- has_arrow.
true.
?- shoot.
true.
?- has_arrow.
false.https://stackoverflow.com/questions/71775566
复制相似问题