1
让说我有一个英文表达,说:英文解释,以Prolog的
日是晚上8点前,上午8点
后,如果我想在序言中表示这是我可以做这样的事情:
day(X) :- X<=2000,X>=800.
2000 = 8pm
800 = 8am
但这不会工作。有没有更好的方式来表达上述英语表达?
让说我有一个英文表达,说:英文解释,以Prolog的
日是晚上8点前,上午8点
后,如果我想在序言中表示这是我可以做这样的事情:
day(X) :- X<=2000,X>=800.
2000 = 8pm
800 = 8am
但这不会工作。有没有更好的方式来表达上述英语表达?
首先在Prolog中较小的等于运算符是=<
而不是<=
。此外,上述代码不起作用,因为运营商=
已被使用。如果你要实现的目标是约束晚上8点与价值2000等一个简单的方法是使窗体的事实:
fact(2000, 8-pm).
fact(800, 8-am).
,并用它喜欢:
day(X) :- fact(Y,8-pm),fact(Z,8-am),X=<Y,X>=Z.
例子:
?- day(500).
false.
?- day(900).
true ;
false.
注意上面不查询,如day(X)
期待回答上,工作下限X的
我会在夜间做同样的事吗?假设我想说的是,晚上在晚上9点之后,但是在凌晨4点之前 –
是的,当然,但你应该在晚上9点和凌晨4点用数字匹配...注意,如果你在晚上9点和N1号一起,凌晨4点用N2,那么[N1,N2 ]和[800,2000]不应该重叠,以便日夜不同。 – coder