我有嵌套表示SAT forumlas,像這樣的真值的列表:True + True = 2.優雅地執行布爾算術?
[[[0, True, False], [0, True, False], [0, True, 1]], [[0, True, True], [2, True, True], [3, False, True]], [[1, False, False], [1, False, False], [3, False, True]]]
表示
([x0=0] + [x0=0] + [x0=1]) * ([x0=1] + [x1=1] + [-x2=1]) * ([-x3=0] + [-x3=0] + [-x2=1])
我想計算整個式的真值。第一步是在每個條款中加上文字的真值。
這樣的:
clause_truth_value = None
for literal in clause:
# multiply polarity of literal with its value
# sum over all literals
clause_truth_value += literal[1]*literal[2]
如果clause_truth_value
是True
求和後,該條款是作爲一個整體真實。
但我沒有得到我所期待的:
True + True = 2
這不是如預期
True * True = 1
這是預期
False + False = 0
這是預期
False * False = 0
這是預期
所以...真的只是1和Fals e是0 ...這很糟糕,我期望算術運算符爲布爾代數重載。有沒有一個優雅的方式做布爾運算與布爾變量?
布爾運算符是'|'和'&',而不是'+'和'*' – lejlot
但沒有'+ ='就像'和='。所以...... –
不是使用'x + = y',你可以使用'x = x或y' – recursive