我有一个方程组要求解,其中有一些汉明权重方程。汉明权重通常是数字的二进制表示中 1 的数量。我试图在 Z3 SMT Solver 中求解,但它输出一个错误,指出“b'there is no current model”。我试图找到一个具有给定汉明权重和一些方程的 32 位数字。
在下面的示例中,我试图找到一个汉明权重等于 3 的数字(0 到 2^5-1)。
from z3 import *
s = Solver()
K = [BitVec('k%d'%i,5) for i in range(3)]
Eq = [K[0]&0x1 + K[0]&0x2 + K[0]&0x4 + K[0]&0x8 + K[0]&0x10 == 3] #
s.add(Eq)
s.check()
print(s.model())
这给出了错误“b'没有当前模型”。
谁能帮我解决这个问题?
编辑:我把汉明方程弄错了;这将是
Eq = [(K[0]&0x1) + ((K[0]&0x2)>>1) + ((K[0]&0x4)>>2) + ((K[0]&0x8)>>3) + ((K[0]&0x10)>>4) == 3 ]
谢谢