2014-09-21 105 views
0

鑑於謂詞Prolog的查詢初學者

  • hasAccount(Person,Bank,Amount) - 這個人有一個帳戶在銀行,其餘金額

  • lives(Person,City) - 的人住在城市

  • created(Person,Bank,Month,Year) - 該人在本年度的月份在銀行開立賬戶

你怎麼會找到只用誰的人有最古老的賬戶在同一家銀行下面的「-,<=<>>=not」運營商?我深深地迷失了!

+1

嘗試句話另一種說法:最早的帳戶是以下屬性不支持的帳戶:存在較舊的帳戶(「<」年或「=」年和「<」月)。 – danielp 2014-09-21 04:35:33

+0

我的查詢類似於創建(Who,somebank,Month1,Year1),創建(Someone,somebank,Month2,Year2)和比較Month1&2和Year1&2。這是一個正確的方法嗎? – user1830954 2014-09-21 06:13:53

+0

是的,但您必須否定第二部分(請參閱下面的答案) – danielp 2014-09-22 07:48:13

回答

0

基於您的評論,\+用於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.