リストのみを使用して、Pythonの積和形式(SOP)でブール式を表現しようとしています。
たとえば、ブール式があります
ABC+DE(FG+IH)
上記の式に相当するリストを見つける必要があるため、リストまたはネストされたリストを読み取り、特定の規則に従ってリストを読み取ることにより、リストを読み取るプログラム/プログラマーはそれをブール式に変換することができます。
これを行うために私が考えた 1 つの方法は、ネストされたリストを構築することです。従うべき 2 つのルール:
- 同じリスト内の要素は AND で結合されます
- リストは互いに並列であるため、一緒に ORed します。
したがって、上記の例では、次のように変換されます。
[[A,B,C],[D,E,[[F,G],[I,H]]]]
しかし、この一連のルールは、場合によっては矛盾します。たとえば、[[E,F],[D,C]] が指定された場合、[E,F] と [D,C] は同じリストにあるため、AND を使用する必要があるため、EF+DC または EFDC のいずれかを意味します。 、しかしリストは並列であるため、それらも OR する必要があります。
上記の 2 つのルールの間に優先順位を設定するか、別のルールを追加してより明確にする必要があると思います。
ご意見やご提案は大歓迎です。また、宿題ではなく、ただの楽しみです。前もって感謝します!!