我的代码以下列方式逐项合并两个列表列表:
mergeL([[a,b],[c,d]], [[1,2],[3,4]], Result). Result = [[a,b,1,2],[c,d,3,4]]
这是我使用的代码:
mergeL([],[],[]).
mergeL(List, [], List).
mergeL([], List, List).
mergeL([X|Rest],[Y|Rest2], [XY|Res2]) :-
mergeL(Rest, Rest2, Res2),
append(X,Y,XY).
这似乎可行,但如果我用两个相同大小的列表调用它,我会得到三个重复的结果。示例(两个列表都只包含一个元素):
?- mergeL([[a,b]],[[1,2,3]],Q).
Q = [[a, b, 1, 2, 3]] ;
Q = [[a, b, 1, 2, 3]] ;
Q = [[a, b, 1, 2, 3]].
有没有一种干净的方法可以使这个输出只有一个解决方案?