Подстановка больших логических выражений - PullRequest
0 голосов
/ 12 апреля 2020

Предположим, у меня есть некоторые логические функции, как указано,

   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 для расширения второго набора выражений из первого набора. Значит, я хочу express C0, C1, C2, C3 в терминах A0, .. A11

1 Ответ

0 голосов
/ 12 апреля 2020

Очень наивное Python решение для вашего конкретного примера c будет

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

Лучшая реализация этого может быть сделана с помощью регулярных выражений.

...