我在python中有一个像这样的整数列表:
myList = [97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57]
我想让Z3输出所有都是myList成员的数字集或列表...本质上,我想使用Z3获得所有存在于myList中但以各种不同顺序排列的数字列表。换句话说,我想从Z3获取各种输出,这些输出包含上面的myList集合中的数字。
我在使用Z3py进行操作时遇到了麻烦,因为在调用s.model()
并假设s = Solver()
的情况下,我不知道z3如何返回列表或集合作为模型。
答案 0 :(得分:1)
testWidgets('me testing', (WidgetTester tester) async {
await tester.pumpWidget(
Builder(
builder: (BuildContext context) {
var actual = sut.myMethodName(context, ...);
expect(actual, something);
// The builder function must return a widget.
return Placeholder();
},
),
);
});
请注意,这将打印from z3 import *
myList = [97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57]
s = Solver ()
pick = []
for (i, v) in enumerate(myList):
b = Bool ('pick_%d' % i)
s.add(b == b)
pick += [(b, v)]
while (s.check() == sat):
m = s.model()
chosen = []
block = []
for (p, v) in pick:
if m.eval(p, model_completion=True):
chosen += [v]
block.append(Not(p))
else:
block.append(p)
print chosen
s.add(Or(block))
个解决方案,其中2^n
是列表中元素的数量;因此,如果n
大,则需要一段时间才能完成!