布尔代数:如何补全缺失的表达式

Boolean algebra how to complete missing expressions

提问人:ageow 提问时间:12/24/2021 最后编辑:Dave2eageow 更新时间:10/10/2022 访问量:236

问:

例如,和 .当用户输入时,我怎样才能找到丢失的字母并给它简化之前的形式?实际上,我们需要做的是将缺失的字母和缺失的(非)字母与当前表达式相乘。例如。AB + AB' = AABC + ABC' = ABABA * (B + B')

其他例子

  • ABC + A'C'(缺少 B)=>(A'C' * (B + B')) + ABC

  • ABCD + AD'(缺少 B 和 C)=>((AD' * (B+B')) * (C + C')) + ABCD

我们假设用户按顺序输入字母。输出应该是相应的。首先是“A”,然后是“B”,然后是“C”,然后是“D”,最多达到 D。 我们如何用python解决这个问题?

Python 算法 boolean-logic boolean-expression boolean-algebra

评论

3赞 John Gordon 12/24/2021
你知道如何在没有python的情况下解决这个问题,即只用铅笔和纸吗?
0赞 itprorh66 12/24/2021
欢迎来到 Stack Overflow。请注意,此站点可以帮助解决特定的技术问题,而不是开放式请求。请编辑您的问题以显示您到目前为止尝试过的内容。请参阅“如何提出一个好问题”和“如何提出和回答家庭作业问题”页面,了解如何最好地帮助我们为您提供帮助。
0赞 chepner 12/24/2021
有很多可能的表达式等价于 ,甚至将自己限制为必须包含所有一组术语的表达式。AB
0赞 md2perpe 12/24/2021
您目前是否对字符串进行任何解析?
0赞 Community 1/2/2022
请澄清您的具体问题或提供其他详细信息,以准确说明您的需求。正如目前所写的那样,很难确切地说出你在问什么。

答:

0赞 md2perpe 12/24/2021 #1

下面是一些可能有帮助的代码:

def split_into_terms(formula: str) -> list[str]:
    return [ t.strip() for t in formula.split('+') ]

def variables_in_term(term: str) -> set[str]:
    return set( c for c in term if c != "'" )

def missing_variables_in_term(term: str, all_variables: set[str]) -> set[str]:
    return all_variables.difference(variables_in_term(term))



if __name__ == '__main__':
    for term in split_into_terms("ABCD + AD'"):
        print(f"Missing variables in term {term}: {''.join(missing_variables_in_term(term, set('ABCD')))}")