繁体   English   中英

如何编写Prolog程序

[英]How to write a Prolog program

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

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

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

like(gardener,sun).

请帮我解决。

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

Head :- Goal1, ..., GoalN.

意思是(大致上)“ 如果 Goal1 ,..., GoalN都成立, Head保持不变”。

把其他方式这意味着,“ 如果 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 ,这等效于您编写的事实。 事实是没有依据的规则。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM