次のような一連の記号ブール式を解く必要があります。
>>> solve(x | y = False)
(False, False)
>>> solve(x & y = True)
(True, True)
>>> solve (x & y & z = True)
(True, True, True)
>>> solve(x ^ y = False)
((False, False), (True, True))
そのような変数の数が多い (~200) ため、ブルート フォース戦略は不可能です。Web を検索したところ、SympyとSageには記号操作機能があることがわかりました (特にthisとthisが役立つ可能性があります)。どうやってやるの?
編集:私は主にそのようなものを操作しようとしました:
>>> from sympy import *
>>> x=Symbol('x', bool=True)
>>> y=Symbol('y', bool=True)
>>> solve(x & y, x)
になりますNotImplementedError。次に、 solve(x * y, x)どちらが与えられたかを試してみました[0](それが何を意味するのかわかりません)、solve(x * y = True, x)結果はSyntaxErrorにsolve(x * y, True, x)なりsolve(x & y, True, x)、AttributeError. 他に何を試せばいいのかわからない!
EDIT(2):私もこれを見つけました、役に立つかもしれません!