4

我需要像这样合并两个列表 L1=[1,2,3] 和 L2=[a,b]:M=[1,a,2,b,3]。请问我该如何在PROLOG中做到这一点?

4

3 回答 3

9

你可以试试

m2([A|As], [B|Bs], [A,B|Rs]) :-
    !, m2(As, Bs, Rs).
m2([], Bs, Bs) :- !.
m2(As, [], As).
于 2013-04-10T14:28:05.267 回答
4

你可以看看这个链接:Prolog program to merge two ordered lists

这不会为您提供所需的输出,但这是一个开始。

经过一些尝试,这是正确的答案,比我提出的原始答案(经过测试和工作)简单得多。

mergelist_alternate([],[],[]).
mergelist_alternate([X],[],[X]).
mergelist_alternate([],[Y],[Y]).
mergelist_alternate([X|List1],[Y|List2],[X,Y|List]) :- mergelist_alternate(List1,List2,List).

你可以这样称呼它:

mergelist_alternate([1,2,3],[a,b],L),!.
于 2013-04-10T12:47:43.240 回答
4
merge_list([],L,L ).
merge_list([H|T],L,[H|M]):-
    merge_list(T,L,M).

它会起作用的。100% 测试!

Input: merge_list([1,2],[3,4],M).
Output: M=[1,2,3,4].
于 2014-12-03T02:18:36.640 回答