def get_2_bit_adder_rules_for_bit(self, bit):
     rules = [[[0, 0, 0, 0], [0, 0, 0]],  # 0 + 0 = 0
              [[0, 0, 0, 1], [0, 0, 1]],  # 0 + 1 = 1
              [[0, 0, 1, 0], [0, 1, 0]],  # 0 + 2 = 2
              [[0, 0, 1, 1], [0, 1, 1]],  # 0 + 3 = 3
              [[0, 1, 0, 0], [0, 0, 1]],  # 1 + 0 = 1
              [[0, 1, 0, 1], [0, 1, 0]],  # 1 + 1 = 2
              [[0, 1, 1, 0], [0, 1, 1]],  # 1 + 2 = 3
              [[0, 1, 1, 1], [1, 0, 0]],  # 1 + 3 = 4
              [[1, 0, 0, 0], [0, 1, 0]],  # 2 + 0 = 2
              [[1, 0, 0, 1], [0, 1, 1]],  # 2 + 1 = 3
              [[1, 0, 1, 0], [1, 0, 0]],  # 2 + 2 = 4
              [[1, 0, 1, 1], [1, 0, 1]],  # 2 + 3 = 5
              [[1, 1, 0, 0], [0, 1, 1]],  # 3 + 0 = 3
              [[1, 1, 0, 1], [1, 0, 0]],  # 3 + 1 = 4
              [[1, 1, 1, 0], [1, 0, 1]],  # 3 + 2 = 5
              [[1, 1, 1, 1], [1, 1, 0]]]  # 3 + 3 = 6
     bitNRules = [[rule[0], rule[1][2 - bit]] for rule in rules]
     self.gates.append([circuits.Or, circuits.Or])
     self.gates.append([circuits.Xor, circuits.Xor])
     self.sources.append(
         [lambda l, r: circuits.Source('C', self.inputs),
          circuits.Source])
     self.sources.append(
         [lambda l, r: circuits.Source('D', self.inputs),
          circuits.Source])
     return bitNRules
Exemplo n.º 2
0
 def setUpClass(cls):
     cls.inputs = dict()
     cls.gates = [[circuits.And, circuits.And],
                  [lambda i1, i2: circuits.Not(i1), circuits.Not]]
     cls.sources = [[
         lambda i1, i2: circuits.Source('B', cls.inputs), circuits.Source
     ], [lambda i1, i2: circuits.Source('A', cls.inputs), circuits.Source]]
Exemplo n.º 3
0
 def test_generate_myCsv(self):
     rules = pd.read_csv("truth_table.csv")
     
     self.gates.append([circuits.Or, circuits.Or])
     self.gates.append([circuits.Xor, circuits.Xor])
     
     self.sources.append(
         [lambda l, r: circuits.Source('C', self.inputs),
          circuits.Source])
     self.sources.append(
         [lambda l, r: circuits.Source('D', self.inputs),
          circuits.Source])
     self.sources.append(
         [lambda l, r: circuits.Source('E', self.inputs),
          circuits.Source])
     self.sources.append(
         [lambda l, r: circuits.Source('F', self.inputs),
          circuits.Source])
     self.sources.append(
         [lambda l, r: circuits.Source('G', self.inputs),
          circuits.Source])
     self.sources.append(
         [lambda l, r: circuits.Source('H', self.inputs),
          circuits.Source])
     self.sources.append(
         [lambda l, r: circuits.Source('I', self.inputs),
          circuits.Source])
     self.sources.append(
         [lambda l, r: circuits.Source('J', self.inputs),
          circuits.Source])
     
     self.find_circuit(rules, 12)
Exemplo n.º 4
0
 def get_2_bit_adder_rules_for_bit(self, bit):
     rules = [[[0, 0, 0, 0], [0, 0, 0]], [[0, 0, 0, 1], [0, 0, 1]],
              [[0, 0, 1, 0], [0, 1, 0]], [[0, 0, 1, 1], [0, 1, 1]],
              [[0, 1, 0, 0], [0, 0, 1]], [[0, 1, 0, 1], [0, 1, 0]],
              [[0, 1, 1, 0], [0, 1, 1]], [[0, 1, 1, 1], [1, 0, 0]],
              [[1, 0, 0, 0], [0, 1, 0]], [[1, 0, 0, 1], [0, 1, 1]],
              [[1, 0, 1, 0], [1, 0, 0]], [[1, 0, 1, 1], [1, 0, 1]],
              [[1, 1, 0, 0], [0, 1, 1]], [[1, 1, 0, 1], [1, 0, 0]],
              [[1, 1, 1, 0], [1, 0, 1]], [[1, 1, 1, 1], [1, 1, 0]]]
     bitNRules = [[rule[0], rule[1][2 - bit]] for rule in rules]
     if not [circuits.Xor, circuits.Xor] in self.gates:
         self.gates.append([circuits.Xor, circuits.Xor])
     if not [lambda l, r: circuits.Source('D', self.inputs), circuits.Source] \
       in self.sources:
         self.sources.append([lambda l, r: circuits.Source('D', self.inputs), \
          circuits.Source])
     return bitNRules
Exemplo n.º 5
0
 def test_generate_2_AxBxC(self):
     rules = [[[False, False, False], False], [[False, False, True], True],
              [[False, True, False], True], [[False, True, True], False],
              [[True, False, False], True], [[True, False, True], False],
              [[True, True, False], False], [[True, True, True], True]]
     self.sources.append(
         [lambda l, r: circuits.Source('C', self.inputs), circuits.Source])
     self.gates.append([circuits.Or, circuits.Or])
     self.find_circuit(rules, 12)