次のような一連の記号ブール式を解く必要があります。
>>> 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):私もこれを見つけました、役に立つかもしれません!