-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathShikakuSolver.py
39 lines (30 loc) · 1.01 KB
/
ShikakuSolver.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
from Shikaku import *
from time import *
import hashlib
class ShikakuSolver:
def __init__(self, problem, maxTime, visualizer=None):
self._problem = problem
self._maxTime = maxTime
self._time = time()
self._visualizer = visualizer
self._numExpansions = 0
self._backTracks = 0
if self._visualizer:
self._visualizer.setup(self._problem)
def timeRemaining(self):
return time() < self._time + self._maxTime
def solution(self):
self._time = time()
solution = self.solve()
solutionTime = time() - self._time
print('Solution key =', hashlib.md5(str(solution).encode()).hexdigest())
print('Number of nodes expanded =', self._numExpansions)
print('Number of backtracks =', self._backTracks)
if self._numExpansions > 0:
print('Search time per node =', solutionTime / self._numExpansions)
print('Time =', solutionTime)
return solution
def solve(self, state=None):
pass
def getPuzzle(self):
return self._problem