在温故数据合并的时候突然想起数电的 卡诺图.
根据合并一位不同的原则, 使用 python 做了一个实现, 感觉和QM算法不太一样:
# 判断两个数是否只有一个二进制不一样
def nor(x1, x2):
return x1^x2
# 判断两个集合是否相邻, 只有一位不同
def is_track(x1, x2):
ts = [nor(x1[i],x2[i]) for i in range(len(x1))]
k = 0
for t in ts: k |= t
if k == 0: return False
k = math.log2(k)
return k == int(k) #
# 将所有数据进行分组和比对
def sfun(xs, ts):
xs_t = [