可変長のリストを順番に 3 つの偶数のリストに分割する関数を作成しようとしています。以下はそれを 3 つに分割しますが、プロセスはそれらを一度に 1 つずつ各リストに挿入します。
私が欲しいものの例は次のとおりです。
[1, 2, 3, 4, 5] -> [1, 2], [3, 4], [5]
別の例は次のとおりです。
[8, 7, 6, 5, 4, 3, 2, 1] -> [8, 7, 6], [5, 4, 3], [2, 1].
次のコードは、一度に 1 つずつ各リストに挿入して分割します。
div([], [], [], []).
div([X], [X], [], []).
div([X,Y], [X], [Y], []).
div([X,Y,Z|End], [X|XEnd], [Y|YEnd], [Z|ZEnd]):-
div(End, XEnd, YEnd, ZEnd).
このコードは次を出力します。
[1, 2, 3, 4, 5] -> [1, 4], [2, 5], [3]
この問題を解決するにはどうすればよいですか?