Example #1
0
 def test_solution1(self):
     votes = [("C1", "D1"), ("C1", "D1"), ("C1", "D2"), ("D2", "C1")]
     self.assertEqual(3, cvd.solution1(votes))
     self.assertEqual(cvd.brute_force(votes), cvd.solution1(votes))
     votes = [("C1", "D1"), ("C1", "D1"), ("C1", "D2"), ("D2", "C1"), ("D2", "C3")]
     self.assertEqual(3, cvd.solution1(votes))
     self.assertEqual(cvd.brute_force(votes), cvd.solution1(votes))
     votes = [
         ("C1", "D1"),
         ("C1", "D1"),
         ("C1", "D1"),
         ("C1", "D1"),
         ("C1", "D1"),
         ("C1", "D1"),
         ("C1", "D2"),
         ("D2", "C1"),
         ("D2", "C3"),
         ("D3", "C3"),
     ]
     self.assertEqual(cvd.brute_force(votes), cvd.solution1(votes))
Example #2
0
    def test_solution_larger_scale(self):
        # generate a lot of votes, using gaussian distributions
        # run it X times with different sets every time
        X = 10

        # number of votes. 15 factorial is sorta big, takes my wimpy mac a second or two
        N = 15
        for _ in range(X):
            prefixes = ["C", "D"]
            votes = []
            for i in range(N):
                lover = random.randint(0, 1)
                prefix1 = prefixes[lover]
                prefix2 = prefixes[int(not lover)]
                gauss1 = 1 + int(random.gauss(10, 3))
                gauss2 = 1 + int(random.gauss(20, 5))
                vote = ("%s%d" % (prefix1, gauss1), "%s%d" % (prefix2, gauss2))
                votes.append(vote)
            sol = cvd.solution1(votes)
            bf = cvd.brute_force(votes)
            self.assertEqual(bf, sol)
Example #3
0
 def test_brute_force(self):
     votes = [("C1", "D1"), ("D1", "C1")]
     self.assertEqual(1, cvd.brute_force(votes))
     votes = [("C1", "D1"), ("C1", "D1"), ("C1", "D2"), ("D2", "C1")]
     self.assertEqual(3, cvd.brute_force(votes))