TURBO-Prolog プログラムについて助けが必要です。
整数のみを含むリストがあります。リスト要素は 3 つのリスト (X、Y、Z) に分割する必要があります。X リストには (x mod 2 == 0 && x mod 3 == 1) の整数値が含まれている必要があり、Y リストには (x mod 2 == 1 && x mod 3 == 0) の整数値が含まれている必要があります。 Z リストには、他のすべての値が含まれている必要があります。Z リストの値を合計する必要があります。
次のような Prolog プログラムを作成しようとしています。
domains
list=integer*
predicates
sum(integer, list)
append(list, list, list)
split(list, list, list, list, integer)
clauses
append([], Z, Z).
append([X|Y], Z, [X|U]):-append(Y, Z, U).
sum(0, []).
sum(X, [H|T]):-sum(U, T), X = U + H.
split([], [], [], [], 0).
split([H|T], X, Y, Z, Sum):-
H mod 2 = 0,
H mod 3 = 1,
append(X, [H], _),
split(T, X, Y, Z, Sum).
split([H|T], X, Y, Z, Sum):-
H mod 2 = 0,
H mod 3 = 0,
append(Y, [H], _),
split(T, X, Y, Z, Sum).
split([H|T], X, Y, Z, Sum):-
H mod 2 = 1,
H mod 3 = 1,
append(Z, [H], _),
split(T, X, Y, Z, Sum),
sum(Sum, Z).
クエリで:split([4,5,6,7], X, Y, Z, Sum).
適切な結果が得られません (スタック オーバーフロー エラーまたはこのようなもののみ)。非常にまれな Prolog コード バージョンであることはわかっていますが、その形式で本当に必要です。私の問題を管理する方法はありますか?