真理値表から論理式を求める。
概要
sympyで真理値表から論理式を求める。
全加算器の真理値表
0 キャリー入力
1 入力
2 入力
7 出力
6 キャリー
サンプルコード
import sympy as sym
print (sym.SOPform(['a', 'b', 'c'], [[0, 1, 1], [1, 0, 1], [1, 1, 0], [1, 1, 1]]))
print (sym.SOPform(['a', 'b', 'c'], [[0, 0, 1], [0, 1, 0], [1, 0, 0], [1, 1, 1]]))
print (sym.POSform(['a', 'b', 'c'], [[0, 1, 1], [1, 0, 1], [1, 1, 0], [1, 1, 1]]))
print (sym.POSform(['a', 'b', 'c'], [[0, 0, 1], [0, 1, 0], [1, 0, 0], [1, 1, 1]]))
実行結果
Or(And(a, b), And(a, c), And(b, c))
Or(And(Not(a), Not(b), c), And(Not(a), Not(c), b), And(Not(b), Not(c), a), And(a, b, c))
And(Or(a, b), Or(a, c), Or(b, c))
And(Or(Not(a), Not(b), c), Or(Not(a), Not(c), b), Or(Not(b), Not(c), a), Or(a, b, c))
import sympy as sym
print (sym.SOPform(['a', 'b', 'c'], [[0, 1, 1], [1, 0, 1], [1, 1, 0], [1, 1, 1]]))
print (sym.SOPform(['a', 'b', 'c'], [[0, 0, 1], [0, 1, 0], [1, 0, 0], [1, 1, 1]]))
print (sym.POSform(['a', 'b', 'c'], [[0, 1, 1], [1, 0, 1], [1, 1, 0], [1, 1, 1]]))
print (sym.POSform(['a', 'b', 'c'], [[0, 0, 1], [0, 1, 0], [1, 0, 0], [1, 1, 1]]))
Or(And(a, b), And(a, c), And(b, c))
Or(And(Not(a), Not(b), c), And(Not(a), Not(c), b), And(Not(b), Not(c), a), And(a, b, c))
And(Or(a, b), Or(a, c), Or(b, c))
And(Or(Not(a), Not(b), c), Or(Not(a), Not(c), b), Or(Not(b), Not(c), a), Or(a, b, c))
以上。
Author And Source
この問題について(真理値表から論理式を求める。), 我々は、より多くの情報をここで見つけました https://qiita.com/ohisama@github/items/99c02eaaa4fd8c524281著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .