Prolog:迭代列表以创建具有前两个对的第三个列表

问题描述 投票:1回答:1

我必须使用-/ 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).

任何建议都会很棒,因为我是新来的。

prolog swi-prolog
1个回答
0
投票

解决方案比您预期的要简单。我在下面附上它。

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]
© www.soinside.com 2019 - 2024. All rights reserved.