Prolog:简单的日期范围选择规则



我在这个问题上有点卡住了 - 写一个规则,给定两个人AB,一个日期D返回AB在日期D之前交换消息的所有日期的列表。

到目前为止,我

有这个,但我不知道我哪里出错了。

mexchanged(A,B,D) :- message(A,B,D1), D > D1. 

其次,我完全坚持这一点 - 编写一个规则来计算事实数据库中为每个人发送的消息数量。

如何编写这些规则?

编辑:对不起,我之前忘了发布这些;,这些是一些事实。

message(ben, tom, '20-03-2011').
message(kim, james, '17-11-2011').
message(ben, kim, '06-12-2011').
message(harry, jacky, '29-09-2011').
message(barry, chin, '06-01-2011').

你实际上并没有那么远,只是我不知道G在这里代表什么:

message(hunter, user3147584, '12-30-2013').
message(hunter, mom,         '12-29-2013').
message(hunter, user3147584, '12-28-2013').
% predicate to test for exchanged messages
mexchanged(A,B,D) :- message(A,B,D1), D @> D1 ; 
                     message(B,A,D1), D @> D1 .
% example
mexchanged(hunter, user3147584, '12-29-2013').
% output = true

最新更新