[英]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.