还是把剩下的也完成了吧, 不然好像不对, 要直观展示出来才行. 于是耽搁中午半个小时,调式出来了, 完整代码我放在gitee上供大家参考.
# est_all 是上面计算的分组信息
# ti 通过输入计算的最少逻辑位数
# 打印
team_syms = []
for i, t in enumerate(est_all):
team_sym = []
for e in t:
# 找到被切换的
ts_e = list(ts[e])
t = ts_e[0]
tn = 0
for n in ts_e[1:]:
tn |= t ^ n
item_sym = ''
for b in range(ti-1,-1,-1):
if (1<<b & tn) != 0: continue
t_sym = chr(ord('A')+ti-b-1)
if (1<<b & t) != 0: item_sym+=f'{t_sym}'
else: item_sym+=f'\overline{{{t_sym}}}'
team_sym.append(item_sym)
team_syms.append(team_sym)
for i, t in enumerate(team_syms):
print(f'分组{i+1} : ${" + ".join(t)}$')
# 输出是这样的
分组1 : $\overline{A}B\overline{C}E + \overline{A}BC\overline{D} + \overline{B}DE + \overline{C}D + AD$
分组2 : $\overline{A}B\overline{D}E + \overline{A}BC\overline{D} + \overline{B}DE + \overline{C}D + AD$
通过latex展示是这样的:
分组1 :
A
‾
B
C
‾
E
+
A
‾
B
C
D
‾
+
B
‾
D
E
+
C
‾
D
+
A
D
\overline{A}B\overline{C}E + \overline{A}BC\overline{D} + \overline{B}DE + \overline{C}D + AD
ABCE+ABCD+BDE+CD+AD
分组2 :
A
‾
B
D
‾
E
+
A
‾
B
C
D
‾
+
B
‾
D
E
+
C
‾
D
+
A
D
\overline{A}B\overline{D}E + \overline{A}BC\overline{D} + \overline{B}DE + \overline{C}D + AD
ABDE+ABCD+BDE+CD+AD
这是博客的第3部分, 前两部分为
[python] 卡诺图化简
[python] 卡诺图化简 2
ps: 现在就舒服多了, 当然代码还可以优化, 比如脚本输入或者命令行参数输入,输出的格式应该在不同用途做写调整, 代码模块化也还没有做.
不过这只是一个思路, 本来就没那么完美,也就是一个参考, 工程化的东西还是大家根据自己的场景再做优化吧.