我有包含与属性FOO中的相同类的实例许多可变大小的列表,以及对于每个列表,我必须应用等的规则:如果有一个元件如何检查列表中元素之间的约束/是否约束编程?
- FOO = A不能有在以foo元素[ B,C,d]
- 如果有一个元素富= X必须有由至少一个以foo在[Y,Z]
- 可以有MIN和MAX元件之间富= BAR
结合上述三条规则可能足以表达任何类似的约束我永远需要。这有点像依存性软件包检查,但我有数量和缺乏版本:)
一个幼稚的做法是:
R_CONFLICT={ A: [B,C,D] }
R_DEPENDS ={ X: [ [Y,Z], W, .. } # means: A depends on either Y or Z, and W
R_MIN ={BAR: n, BAZ: m}
R_MAX ={BAR: o, BAZ: p}
# now just loop over lists to check them..
这是Constraint programming一个问题吗?我实际上并不需要解决东西,得到的结果,我需要验证我的名单对一些约束和检查它们是否满意或不满意。你如何分类这个问题,你将如何解决它?
为什么它的价值,我在Python编码,但我欢迎一个泛型编程答案:)如果事实证明我必须深入研究约束编程我可能会开始尝试python-constraint。