搜索所有有条件的父亲在Prolog
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搜索所有有条件的父亲在Prolog相关的知识,希望对你有一定的参考价值。
我在Prolog中有一个包含下一个事实的家谱计划:
male(alex).
male(david).
male(peter).
etc
...
female(sofia).
etc
....
parent(alex, peter).
parent(sofia, peter).
etc
....
和一些规则,如:
father(X, Y) :- parent(X, Y), male(X).
mother(X, Y) :- parent(X, Y), female(X).
etc
....
我需要找到所有有两个或更多孩子的父亲。 我想我需要在我的程序中经历所有父亲,让他们的孩子列出并计算它的长度,然后如果> = 2我将这个父亲添加到另一个列表或者只是打印他并进一步。
答案
虽然在一般情况下,当你想要找到所有至少有N
孩子的父亲时,你的方法是必需的,当你只和两个孩子打交道时,可以采用一种更简单的方法:找两个孩子,看看这两个孩子是不是不同。
在Prolog中,此规则如下所示:
father_of_two(X) :-
father(X, A),
father(X, B),
A = B.
您现在需要做的就是将所有匹配father_of_two
谓词的人收集到一个列表中。
以上是关于搜索所有有条件的父亲在Prolog的主要内容,如果未能解决你的问题,请参考以下文章