【问题标题】:How to write a Prolog program如何编写 Prolog 程序
【发布时间】:2018-09-20 23:35:39
【问题描述】:

我不知道如何为以下场景编写 Prolog 程序。

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

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

like(gardener,sun).

请帮我解决。

【问题讨论】:

    标签: prolog


    【解决方案1】:

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

    Head :- Goal1, ..., GoalN.
    

    意味着(大致),“Head 持有 如果 Goal1, ..., GoalN 全部持有”。

    反过来说,“如果 Goal1, ..., GoalN 全部成立,那么 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) 的最自然编码简单地统一为X = Y,这相当于您编写的事实。事实是没有实体的规则。

    【讨论】:

    • 非常感谢您的支持。再次感谢您提供所要求的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多