【发布时间】:2016-02-12 15:48:20
【问题描述】:
我在 SICStus Prolog 中有一个运行以下约束的程序:
processList([Elem1,Elem2|_], X) :-
(Elem1 #= 0 #/\ Elem2 #= X) #\/
Elem1 #= X.
但我需要动态设置它
processList([Elem1,Elem2,Elem3|_], X) :-
(Elem1 #= 0 #/\ Elem2 #= 0 #/\ Elem3 #= X) #\/
(Elem1 #= 0 #/\ Elem2 #= X) #\/
Elem1 #= X.
如果我用 4 个元素调用它,我会有更大的限制,但模式总是一样的。
我已经查看了表谓词(tuples_in/2,在 SWI-Prolog 中),但这需要我计算所有可能的有效值组合。
有没有其他方法可以做到这一点?
【问题讨论】:
标签: prolog restriction clpfd