Prolog 计数发生次数知识库


% Knowledgebase
parents (pedro, jose).
parents (pedro, john).
parents (pedro, mary).    
parent (john, leidis).    
parent (john, marten).    
parents (leidis, berta).    
parents (berta, pepe).

它具有上述知识库,父母在其中互动和孩子(第一个要素是父亲和第二个儿子),是发展一个宣扬这一点,因为父母已经归还了许多孩子。根据先前的知识,以下问题的答案是:

? - Cant_hijos (pedro, Cant).
Qty = 3
? - Cant_hijos (john, Cant).
Qty = 2
? - Cant_hijos (leidis, Cant).
Qty = 1
cant_hijos(P, N) :-
   setof(C, parent(P,C), Cs),
   length(Cs, N).

请注意,对于零个子项,它失败了。问是没有意义的:

?- cant_hijos(P, 0).

因为有无数个名字不是父母。