我必须使用-/ 2在前两个列表中表示对,并将它们放在第三个列表中。例如:
?- pairstobe([1,2],[a,b],X).
X = [1-a, 2-b].
我已经尝试解决这个问题了相当长的时间,不确定我是否走上了正确的道路。到目前为止,我的代码是:
pairstobe([], [], [])).
pairstobe([H|T],[H1|T1],[J|K]) :- J is [-(H,H1)], pairstobe(T,T1,K).
任何建议都会很棒,因为我是新来的。
解决方案比您预期的要简单。我在下面附上它。
pair1([],[],[]).
pair1([H|T],[H1|T1],[H-H1|Z]):- pair1(T,T1,Z).
输出
?-pair1([1,2,3],[a,b,c],Z).
Z = [1-a, 2-b, 3-c]
?-pair1([1,2,3],[11,22,33],Z).
Z = [1-11, 2-22, 3-33]