4

次のように、2 つのリスト 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
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 に答える
4

このリンクを見ることができます: 2 つの順序付けられたリストをマージするプロローグ プログラム

これでは必要な出力が得られませんが、これが始まりです。

いくつかの試行の後、ここに正しい答えがあります。これは、私が提案した元のものよりもはるかに単純です(テスト済みで動作中)。

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 に答える