不确定该示例(也不是实际用例)是否符合 NP-Complete 的条件,但我想知道最 Pythonic 的方式来执行以下操作,假设这是可用的算法。
说你有:
class Person:
def __init__(self):
self.status='unknown'
def set(self,value):
if value:
self.status='happy'
else :
self.status='sad'
... blah . Maybe it's got their names or where they live or whatev.
以及一些需要一组人员的操作。(这里的关键值是 Person 是快乐还是悲伤。)
因此,给定 PersonA、PersonB、PersonC、PersonD - 我想最终列出可能的 2**4 个悲伤和快乐人物组合的列表。IE
[
[ PersonA.set(true), PersonB.set(true), PersonC.set(true), PersonD.set(true)],
[ PersonA.set(true), PersonB.set(true), PersonC.set(true), PersonD.set(false)],
[ PersonA.set(true), PersonB.set(true), PersonC.set(false), PersonD.set(true)],
[ PersonA.set(true), PersonB.set(true), PersonC.set(false), PersonD.set(false)],
etc..
有没有一种很好的 Pythonic 方式来做到这一点?我在考虑列表推导(并修改对象以便您可以调用它并返回两个对象,true 和 false),但我看到的推导格式需要我提前知道 Persons 的数量。我想独立于人数来做到这一点。
编辑:假设我要运行的那个操作是一个更大的问题集的一部分——我们需要测试给定集的所有 Person 值以解决我们的问题。(即我知道这现在看起来不是 NP-complete =))有什么想法吗?
谢谢!