簡體   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