M = [1, a, 2, b, 3]과 같이 두 개의 목록 L1 = [1,2,3]과 L2 = [a, b]를 병합해야합니다. PROLOG에서 어떻게 할 수 있습니까? Prolog program to merge two ordered listsPROLOG에서 목록을 병합하는 방법은 무엇입니까?
이 당신에게 당신이 필요로하는 출력을 제공하지 않습니다, 그러나 그것은 시작이다 :
M = [1, a, 2, b, 3]과 같이 두 개의 목록 L1 = [1,2,3]과 L2 = [a, b]를 병합해야합니다. PROLOG에서 어떻게 할 수 있습니까? Prolog program to merge two ordered listsPROLOG에서 목록을 병합하는 방법은 무엇입니까?
이 당신에게 당신이 필요로하는 출력을 제공하지 않습니다, 그러나 그것은 시작이다 :
당신이 그것을 작동
m2([A|As], [B|Bs], [A,B|Rs]) :-
!, m2(As, Bs, Rs).
m2([], Bs, Bs) :- !.
m2(As, [], As).
당신은이 링크에서 볼 수 있습니다.
일부 시도가 끝나면 나에게 제안 된 원본 (테스트 및 작동)보다 훨씬 간단한 정답입니다.
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),!.
테스트되지 않은 코드는 작동하지 않습니다. –
코드를 검토하고 다시 작성하여 테스트했습니다. – racribeiro
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].
이것은 물어 본 것이 아닙니다. – AndrewB
이것은 작동합니다. 그리고 저에게 총 15 점을 줄 수있는 평판 포인트를주지 못하면,이 답에 +1을 줄 수도 있습니다. :)하지만 '!' 제발? –
그것은 (in) 유명한 ** 컷 **입니다. 시간은 전에 어느 정도 - 프롤로그 실행을 제어하는 유일한 (!) 방법이었습니다. 그것은 선택을 커밋합니다. – CapelliC