🧮

論理回路とNANDゲート

2023/03/17に公開

検証

すべての論理回路は NAND ゲートが元なのか Ruby のコードで検証する。

NAND = -> (a, b) { !(a && b) }

NOT  = -> a { NAND[a, a] }
AND  = -> (a, b) { NOT[NAND[a, b]] }
OR   = -> (a, b) { NAND[NOT[a], NOT[b]] }
XOR  = -> (a, b) { NAND[NAND[a, NAND[a, b]], NAND[b, NAND[a, b]]] }

NAND[false, false]  # => true
NAND[false, true]   # => true
NAND[true, false]   # => true
NAND[true, true]    # => false

NOT[false]          # => true
NOT[true]           # => false

AND[false, false]   # => false
AND[false, true]    # => false
AND[true, false]    # => false
AND[true, true]     # => true

OR[false, false]    # => false
OR[false, true]     # => true
OR[true, false]     # => true
OR[true, true]      # => true

XOR[false, false]   # => false
XOR[false, true]    # => true
XOR[true, false]    # => true
XOR[true, true]     # => false

結果は本当だった。

参照

Discussion