如何在PROLOG中合并列表?

时间:2013-04-10 12:36:21

标签: prolog

我需要合并两个列表L1 = [1,2,3]和L2 = [a,b],如下所示:M = [1,a,2,b,3]。 我怎么能在PROLOG中做到这一点?

3 个答案:

答案 0 :(得分:8)

你可以尝试

m2([A|As], [B|Bs], [A,B|Rs]) :-
    !, m2(As, Bs, Rs).
m2([], Bs, Bs) :- !.
m2(As, [], As).

答案 1 :(得分: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),!.

答案 2 :(得分:3)

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].