我在这个问题上有点卡住了 - 写一个规则,给定两个人A
和B
,一个日期D
返回A
和B
在日期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