Beispiel #1
0
        # count how many of the assignments satisfy the puzzle
        cnt, last_solution = 0, None
        for values in assignments:
            for rule in self.puzzle.rules:
                ok = rule.eval_rule(values)
                if not ok:
                    break
            else:
                cnt += 1
                last_solution = values
        return cnt, last_solution


if __name__ == "__main__":
    puzzle = Puzzle(5)
    puzzle.add_rules([
        "B+A=6",
        "E+B=C",
        "E+C+B=8",
    ])
    bfs = BruteForceSolver(puzzle)
    cnt, _ = bfs.solve()
    cnt, _ = bfs.solve(possible_values={
        "A": {1, 2, 3, 4, 5},
        "B": {1, 2, 3},
        "C": {3, 4, 5},
        "D": {1, 2, 3, 4, 5},
        "E": {1, 2, 3},
    })
    print(cnt)