たとえば、次のように並べ替える必要があります。
?- mergesort([8,1,[4,6,3],2],Sorted).
結果は次のようになります。
Sorted = [1, 2, 8, [3, 4, 6]]
残念ながら、どうすればよいかわかりません。自分で答えを見つけようとしましたが、解決策が見つかりませんでした。現在、結果は次のとおりです。
Sorted = [1, 2, 8, [4, 6, 3]]
私のコード:
mergesort([],[]).
mergesort([A],[A]).
mergesort([A,B|R],S) :-
split([A,B|R],L1,L2),
mergesort(L1,S1),
mergesort(L2,S2),
merge(S1,S2,S).
split([],[],[]).
split([A],[A],[]).
split([A,B|R],[A|Ra],[B|Rb]) :- split(R,Ra,Rb).
merge(A,[],A).
merge([],B,B).
merge([A|Ra],[B|Rb],[A|M]) :- A @=< B, merge(Ra,[B|Rb],M).
merge([A|Ra],[B|Rb],[B|M]) :- A @> B, merge([A|Ra],Rb,M).
よろしくお願いします!