我必须说我根本不懂这种语言,但我想通过例子来学习它,所以请理解我。我必须写出所有人 已经借用至少两件物品(按这些人的身份证和信件)。
这是简单的数据库:)
person(1,"A").
person(2,"B").
person(3,"C").
person(4,"D").
person(5,"E").
person(6,"F").
borrowed(1001,1).
borrowed(1002,1).
borrowed(2001,1).
borrowed(1004,2).
borrowed(1005,4).
borrowed(2003,4).
borrowed(2005,5).
borrowed(2006,5).
答案 0 :(得分:0)
假设您的person/2
被定义为person( unique-id , name )
且您的borrowed/2
代表borrowed( id-of-borrowed-item , person-id-of-borrower )
,那么这样的事情应该是这样的:
borrower_by_count( Name , N ) :-
person(Id,Name) , % find the person
findall(X,borrowed(X,Id),Xs) , % find all the items they've borrowed
length(Xs,N). % check the length:
这适用于任何N值。像borrower_by_count( Name , 3 ).
这样的东西应该返回
Name = "A"
和borrower_by_count( Name , 2 ).
应该返回(当你回溯到它时):
Name = "D"
Name = "E'
它也有另一种方式:borrowed( "A" , N )
应该返回
N = 3.
如果两个论点都没有约束,它应该连续列举每个人和他们借来的项目数。