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