/
runner.py
42 lines (31 loc) · 1.01 KB
/
runner.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from sudoku_loader import SudokuLoader
from sudoku_solver import SudokuSolver
from datetime import datetime
from puzzle import Puzzle
from multiprocessing import Pool
# correct = 0
def solve_puzzle(puzzle_strings):
puzzle_id = puzzle_strings[0]
solve_set = set()
puzzle = Puzzle(puzzle_strings[1][0], solve_set)
solution = Puzzle(puzzle_strings[1][1])
solver = SudokuSolver(puzzle, solve_set)
solver.solve()
if solver.puzzle == solution:
print("Puzzle",puzzle_id, "Complete!")
return 1
else:
print("Bad Solution for",puzzle_id)
return 0
if __name__ == "__main__":
# Load the puzzles
loader = SudokuLoader()
print(loader.puzzle_count, "puzzles loaded")
now = datetime.now()
limit = 10000
# solve them
workers = Pool(16)
jobs = enumerate(loader.get_strings(limit))
result = workers.map(solve_puzzle, jobs)
print("Correctly Completed:", sum(result), "out of", limit)
print("Took ", datetime.now()-now, "to solve", limit)