如何编写Prolog程序

时间:2018-09-20 14:57:41

标签: prolog

在以下情况下,我不知道如何编写Prolog程序。

1. If any two person having same hobby then  they like each other.
2. Every gardener likes the Sun.

我这样做了,但我不知道它是否正确。

like(gardener,sun).

请帮助我解决它。

1 个答案:

答案 0 :(得分:3)

Prolog规则遵循“ reversed-IF”模板:

Head :- Goal1, ..., GoalN.

(大致)表示“如果{em> Head,...,Goal1全部成立,则GoalN持有”。

用另一种方法表示“ if Goal1,...,GoalN全部成立,然后 then {{1} }也成立”。

这正好适合您的第一句话,因此可以将其编码为规则:

Head

第二句话也适合同一模板:

likes(A, B) :-                   % Head :-
    hobby( A, HobbyA),           %   Goal1,
    hobby( B, HobbyB),           %   Goal2,
    same( HobbyA, HobbyB),       %   Goal3,
    dif( A, B).                  %   Goal4.
    % different persons, not the same one

使用likes(A, sun) :- isA(A, gardner). 的最自然的编码作为统一的isA( X, Y),这等同于您编写的事实。事实是没有根据的规则。