2017-12-25 27 views
2

の状況ですべての父親を検索:私は、次の事実が含まれているプロローグで家系プログラム持っプロローグ

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人以上の子供がいます。
私は私のプログラムのすべての父親を通って、自分の子供をリストに入れて長さを数えなければならないと思う。> 2ならば、この父親を別のリストに加えるか、

答えて

1

一般的に、少なくともNの子供がいるすべての父親を見つけたい場合は、2人の子供しか扱っていない場合よりもはるかに簡単なアプローチが利用できます。 2人の子供は異なっている。

プロローグでは、このルールは次のようになります。あなたが今やらなければならないことをリストにfather_of_two述語に一致するすべての人々を集めている

father_of_two(X) :- 
    father(X, A), 
    father(X, B), 
    A \= B. 

+0

この場合、Xの名前を知る必要があり、起動ごとに1人しか確認できません。私の場合、私は名前を知らない2人以上の子供を持つすべての父親を書く必要があります。ご提案いただきありがとうございます! – slxvxBatih

+0

@slxvxBatihこれは完全な解決策ではありません。最後の文で述べたことを実行して完全なソリューションを構築するルールです(編集が表示されない場合は、ページをリロードしてください)。 – dasblinkenlight

+0

申し訳ありませんが、私はページをリロードしませんでした。ありがとう! – slxvxBatih

関連する問題