我需要一些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代码版本,但我真的需要它的形式。任何解决方案如何管理我的问题?