# 若一个词以小写字母开头,它就是一个原子(atom);若以大写字母或下划线开头,那么它就是一个变量。变量的值可以改变,但原子不可以。
#找朋友
likes(wallace, cheese). # 事实
likes(grommit, cheese). # 事实
likes(wendolene, sheep). # 事实
friend(X,Y) :- \+(X = Y), likes(X, Z), likes(Y, Z). # 规则,\+是取反
实际操作:
# 递归
father(zeb, john_boy_sr).
father(john_boy_sr, john_boy_jr).
ancestor(X,Y) :- father(X,Y).
ancestor(X,Y) :- father(X,Z), ancestor(Z,Y).
# 数独
valid([]).
valid([Head|Tail]) :- fd_all_different(He