def test_dmux(self): "Defines a truth table for dmux" a, b = dmux(zero, zero) self.assertFalse(a) self.assertFalse(b) a, b = dmux(zero, one) self.assertFalse(a) self.assertFalse(b) a, b = dmux(one, zero) self.assertTrue(a) self.assertFalse(b) a, b = dmux(one, one) self.assertFalse(a) self.assertTrue(b)
def expand_winner(winner_list, s): if len(winner_list) == num_outputs: return winner_list if len(winner_list) == 1: index = 0 else: index = int(math.log(len(winner_list), 2)) winners = [dmux(winner, s[index]) for winner in winner_list] # Split winners using dmux winners = [instance for sublist in winners for instance in sublist] # Collapse list return expand_winner(winners, s)