我有一个关于我做的prolog代码的问题,我需要你的帮助。我写这段代码
picture(1,middle(C,C)).
picture(2,northwest(C,C)).
picture(3,northeast(C,C)).
picture(4,middle(S,S)).
picture(5,northwest(S,S)).
picture(6,northeast(S,S)).
picture(7,southeast(S,S)).
如果我有图片1,3并且我想要它们之间的关系,那么picture1在中间,图片3在东北,并给出第三张图片我想找到第四张图片取决于1和3之间的关系:
find_picture((1,3),(6,P)).
在这种情况下P = 4,因为关系是中间的。那么,我如何从给定的图片中获取函数名称?
答案 0 :(得分:1)
find_picture((A,B),(C,D)) :-
picture(A,P),
picture(B,Q),
picture(C,Q),
picture(D,P).
产量
?- find_picture((1,3),(6,X)).
X = 1 ;
X = 4.
请注意,有2个解决方案 - 您可以排除添加比较
find_picture((A,B),(C,D)) :-
picture(A,P),
picture(B,Q),
picture(C,Q),
picture(D,P),
D\=A.
答案 1 :(得分:0)
这是我认为可能对您有所帮助,但如果没有查找图片的代码,我无法进一步详细说明:
picture(1,middle(C,C)).
?- picture(N, Relation), Relation =.. [Name|_], Name = middle.
N = 1,
Relation = middle(_G22, _G22),
Name = middle.
关系的名称是middle
。