boolean - 大型布尔表达式的替换
问题描述
假设我有一些给定的布尔函数,
b0 = a0*a1*a2 + !a1*a3
b1 = a4*!a5*a6 + !a4*!a7 + a5*a7
b2 = a8*!a9 + a9*!a10*!a11
b3 = !a0*!a4*a8 + a0*!a10
c0 = b0*b1*b2 + !b1*b3
c1 = b1*!b0*b3 + !b1*!b3 + b0*b2
c2 = b1*!b3 + b2*!b0*!b1
c3 = !b0*!b2*b3 + b1*!b3
是否有任何工具或 python 脚本可以从第一组扩展第二组表达式。表示我想用 A0, .. A11 来表达 C0,C1,C2,C3
解决方案
对于您的特定示例,一个非常天真的 Python 解决方案是
expressions = {
'b0': 'a0*a1*a2 + !a1*a3',
'b1': 'a4*!a5*a6 + !a4*!a7 + a5*a7',
'b2': 'a8*!a9 + a9*!a10*!a11',
'b3': '!a0*!a4*a8 + a0*!a10'
}
def expand(expression: str) -> str:
result = expression
for key, value in expressions.items():
result = result.replace(key, f"({value})")
return result
使用正则表达式可以更好地实现这一点。
推荐阅读
- javascript - 使选择选项依赖于先前的选择选项
- ios - CMMotionActivityManager Activities Not Printing When Calling
- flutter - 在 Flutter 中定位 Stack 子级
- javascript - 在下拉列表中选择的 puppeteer 返回值
- php - 销售线已经存在。标识字段和值:Document Type='',Document No.='',Line No.=''
- node.js - Angular 10 不允许我在本地安装 Angular 6 - package.json 被忽略
- python - Keras:使功能模型接受 LSTM 的多个批次
- three.js - 是否可以更改 meshNormalMaterial 默认 x、y、z 颜色?
- npm - 如何在不修改 package.json 的情况下执行“npm update”?
- python - 如何对数据框的两列进行分组并将其他列转换为以列标题为键的dict