Prolog stackoverflow

时间:2016-04-24 21:18:29

标签: prolog turbo-prolog

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

0 个答案:

没有答案