コード例 #1
0
 def test_unsat(self: TestClause):
     clause = Clause([-6, 5, -4, 3, -2, 1])
     a1 = Assignment(set([1, 2, 3, 4, 5, 6]))
     a1.add_assignment(0, 6, 1, None)
     clause.assign(a1)
     a1.add_assignment(1, 5, 0, None)
     a1.add_assignment(2, 3, 0, None)
     a1.add_assignment(2, 4, 1, None)
     a1.add_assignment(2, 1, 0, None)
     a1.add_assignment(2, 2, 1, None)
     clause.assign(a1)
     self.assertEqual(clause.get_state(a1), (Clause.UNSATISFIED, 1, 1))
     self.assertEqual(clause.get_assigned_vars(a1), [6, 5, 4, 3, 2, 1])
コード例 #2
0
 def test_backtrack(self: TestClause):
     clause = Clause([-6, 5, -4, 3, -2, 1])
     a1 = Assignment(set([1, 2, 3, 4, 5, 6]))
     a1.add_assignment(0, 5, 0, None)
     a1.add_assignment(1, 3, 0, None)
     clause.assign(a1)
     a1.add_assignment(1, 6, 1, None)
     a1.add_assignment(1, 4, 1, None)
     a1.add_assignment(2, 1, 0, None)
     a1.add_assignment(2, 2, 1, None)
     clause.assign(a1)
     self.assertEqual(clause.get_state(a1), (Clause.UNSATISFIED, 1, 1))
     self.assertEqual(clause.get_assigned_vars(a1), [6, 5, 4, 3, 2, 1])
     clause.backtrack(1)
     a1.backtrack(1)
     self.assertEqual(clause.get_state(a1), (Clause.UNRESOLVED, 2, 1))
     self.assertEqual(clause.get_assigned_vars(a1), [6, 5, 4, 3])
     clause.backtrack(0)
     a1.backtrack(0)
     self.assertEqual(clause.get_state(a1), (Clause.UNRESOLVED, 6, 1))
     self.assertEqual(clause.get_assigned_vars(a1), [5])