0
鉴于谓词Prolog的查询初学者
hasAccount(Person,Bank,Amount)
- 这个人有一个帐户在银行,其余金额lives(Person,City)
- 的人住在城市created(Person,Bank,Month,Year)
- 该人在本年度的月份在银行开立账户
你怎么会找到只用谁的人有最古老的账户在同一家银行下面的“-
,
<
=<
>
>=
not
”运营商?我深深地迷失了!
鉴于谓词Prolog的查询初学者
hasAccount(Person,Bank,Amount)
- 这个人有一个帐户在银行,其余金额
lives(Person,City)
- 的人住在城市
created(Person,Bank,Month,Year)
- 该人在本年度的月份在银行开立账户
你怎么会找到只用谁的人有最古老的账户在同一家银行下面的“-
,
<
=<
>
>=
not
”运营商?我深深地迷失了!
基于您的评论,\+
用于not
(不proveable):
created(Who,Somebank,Month1,Year1),
\+ (created(_,Somebank,Month2,Year2), older(Month2,Year2,Month1,Year1))
与older/4
定义为:
older(_Month2,Year2,_Month1,Year1) :- Year2 < Year1.
older(Month2,Year,Month1,Year) :- Month2 < Month1.
尝试句话另一种说法:最早的帐户是以下属性不支持的帐户:存在较旧的帐户(“<”年或“=”年和“<”月)。 – danielp 2014-09-21 04:35:33
我的查询类似于创建(Who,somebank,Month1,Year1),创建(Someone,somebank,Month2,Year2)和比较Month1&2和Year1&2。这是一个正确的方法吗? – user1830954 2014-09-21 06:13:53
是的,但您必须否定第二部分(请参阅下面的答案) – danielp 2014-09-22 07:48:13