Prolog では、「or」演算子は;
です。または、述語に異なる句を使用することで実現できます。
最初の選択肢が成立した場合に何が起こるか見てみましょう:
cousins( E, F):-
siblings(A, C),
parent( A, E),
parent( B, E),
parent( C, F),
parent( D, F).
または、2 番目が成り立つ場合はどうなりますか?
cousins( E, F) :-
siblings(A, D),
parent( A, E),
parent( B, E),
parent( C, F),
parent( D, F).
3 番目と 4 番目も同様です。
cousins(E, F) :- siblings(B, C),
parent(A, E), parent(B, E), parent(C, F), parent(D, F).
cousins(E, F) :- siblings (B, D),
parent(A, E), parent(B, E), parent(C, F), parent(D, F).
これで、「or」条件が 4 つの句で表現されました。
しかし、多くの重要な詳細を省略したに違いありません。おそらく 2 組の親が必要なので、不等式を追加する必要があります:parent(A, E), parent(B, E), A \= B
など。3節と4節も同様。各ペアの 1 つだけを残すだけで十分です。
しかし、なぜ人の両親を知る必要があるのでしょうか? あなたは本当にそうしません。それが母親であろうと父親であろうと、何が問題なのですか?そうではありません。したがって、最終的には、1 つの句だけで十分です。
cousins( E, F):-
siblings(A, C),
parent (A, E),
parent( C, F).
あなたはまだいくつかの退化したケースをチェックする必要があるので、人を自分のいとこであると宣言することは決してありません.