我正在尝试在 Prolog 中编写一个关系拆分,它采用整数 N、整数列表 L 和其他参数,列表 L 是平坦的。如果列表 L 可以分为三个子集,则关系拆分返回 true,使得每个子集中的整数之和严格小于 N。否则,关系返回 false。这是迄今为止我走得最远的:
split(list, list, list, list)
split([],[],[],[]).
list_sum([],0).
split([X|L], [X|L1], [X|L2], L3):-
list_sum([Head + Tail]),
list_sum>N,
!,
split(N, L,L1, L2, L3).
?- 错误:顶层:未定义过程:list_sum/2(DWIM 无法纠正目标)非常感谢任何帮助和解释。