🧮
論理回路とNANDゲート
検証
すべての論理回路は 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