【发布时间】:2020-06-23 13:47:29
【问题描述】:
我有一组(最多 40 个)组件 ['c1','c2','c3','c4','c5',...] 和:
- 我需要生成一个包含 r = 2、3 和 4 组合的新数组
- 但某些特定组件永远不能在同一个组合中。
我有一个函数可以通过查询数据库表来verify_combination(component1,component2)。如果它是一个被禁止的组合,它将返回False。如果我假设禁止组合 (c1,c3) 以及 (c4,c5),最后我会得到这样的结果:
combinations = [(c1,c2),(c1,c4),(c1,c5),(c2,c3),(c2,c4),(c2,c5),(c3,c4),(c3,c5), (c1,c2,c4),(c1,c2,c5),(c2,c3,c4),(c2,c3,c5)]
# (I believe that's right)
# (In this case no valid combinations of r=4 would be produced)
我对 python 和编程的整体经验不是很丰富,而且我严重缺乏数学技能来模拟这种与标准或条件的组合。在过去的几个小时里,我一直在尝试这样做,试图找到已经在网络上编写的类似代码,并且还尝试使用 itertools,但甚至没有接近解决方案。
【问题讨论】:
-
有用的说法是“带有 约束,即 (c1,c3) 和 (c4,c5) 不能组合”
标签: python arrays constraints combinations