Skip to content

Commit 07c2e52

Browse files
Split solve.py->solver.py,driver.py to be the lib & main resp.
1 parent b9de438 commit 07c2e52

File tree

4 files changed

+47
-44
lines changed

4 files changed

+47
-44
lines changed

sudoku/BUILD

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,18 @@ load("@rules_python//python:python.bzl", "py_binary", "py_test")
2323

2424

2525
py_library(
26-
name = "solve",
27-
srcs = ["solve.py"],
26+
name = "solver",
27+
srcs = ["solver.py"],
2828
deps = [
2929
"@vaticle_typedb_client_python//:client_python",
3030
]
3131
)
3232

3333
py_binary(
34-
name = "solver",
35-
srcs = ["solve.py"],
34+
name = "driver",
35+
srcs = ["driver.py"],
3636
deps = [
37-
"solve",
37+
"solver",
3838
"@vaticle_typedb_client_python//:client_python"
3939
],
4040
data = [
@@ -52,7 +52,7 @@ py_test(
5252
name = "test",
5353
srcs = ["test.py"],
5454
deps = [
55-
"solve",
55+
"solver",
5656
"@vaticle_typedb_client_python//:client_python"
5757
],
5858
data = [

sudoku/driver.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import timeit
2+
from sys import argv
3+
4+
from solver import Solver
5+
from typedb.client import TypeDB
6+
7+
HOST = TypeDB.DEFAULT_ADDRESS
8+
DATABASE_NAME = "sudoku6x6"
9+
10+
def main():
11+
if len(argv) != 2:
12+
print("Usage:")
13+
print("python3 %s setup: Loads required schema & data" % argv[0])
14+
print("python3 %s <sudoku_file>: Reads & solves the sudoku in <sudoku_file>" % argv[0])
15+
return
16+
17+
solver = Solver(HOST, DATABASE_NAME)
18+
if argv[1] == "setup":
19+
solver.setup(force=True)
20+
return
21+
22+
solver.setup()
23+
sudoku = solver.read_sudoku(argv[1])
24+
25+
print("Solving:")
26+
print(solver.format_sudoku(sudoku), "\n")
27+
28+
time_start = timeit.default_timer()
29+
solution = solver.solve(sudoku)
30+
time_taken_ms = int((timeit.default_timer() - time_start) * 1000 + 1)
31+
if solution:
32+
print("Found solution in " + str(time_taken_ms) + " ms:")
33+
print(solver.format_sudoku(solution))
34+
else:
35+
print("No solution (took " + str(time_taken_ms) + " ms)")
36+
37+
solver.cleanup()
38+
39+
if __name__=="__main__": main()

sudoku/solve.py renamed to sudoku/solver.py

Lines changed: 1 addition & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,11 @@
1919
# under the License.
2020
#
2121

22-
import timeit
23-
from sys import argv
22+
2423
from typing import List
2524

2625
from typedb.client import TypeDB, TypeDBOptions, SessionType, TransactionType
2726

28-
HOST = TypeDB.DEFAULT_ADDRESS
29-
DATABASE_NAME = "sudoku6x6"
30-
3127
class Solver:
3228
SCHEMA_FILE = "sudoku/sudoku6x6_schema.tql"
3329
DATA_FILE = "sudoku/sudoku6x6_data.tql"
@@ -107,35 +103,3 @@ def solve(self, sudoku: List[List[int]]):
107103
return [ [result[0].get("v%d%d"%(i,j)).get_value() for j in range(1,7)] for i in range(1,7) ]
108104
else:
109105
return None
110-
111-
112-
def main():
113-
if len(argv) != 2:
114-
print("Usage:")
115-
print("python3 %s setup: Loads required schema & data" % argv[0])
116-
print("python3 %s <sudoku_file>: Reads & solves the sudoku in <sudoku_file>" % argv[0])
117-
return
118-
119-
solver = Solver(HOST, DATABASE_NAME)
120-
if argv[1] == "setup":
121-
solver.setup(force=True)
122-
return
123-
124-
solver.setup()
125-
sudoku = solver.read_sudoku(argv[1])
126-
127-
print("Solving:")
128-
print(solver.format_sudoku(sudoku), "\n")
129-
130-
time_start = timeit.default_timer()
131-
solution = solver.solve(sudoku)
132-
time_taken_ms = int((timeit.default_timer() - time_start) * 1000 + 1)
133-
if solution:
134-
print("Found solution in " + str(time_taken_ms) + " ms:")
135-
print(solver.format_sudoku(solution))
136-
else:
137-
print("No solution (took " + str(time_taken_ms) + " ms)")
138-
139-
solver.cleanup()
140-
141-
if __name__=="__main__": main()

sudoku/test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
from typedb.client import TypeDB
2626

27-
from solve import Solver
27+
from solver import Solver
2828

2929

3030
class Test(unittest.TestCase):

0 commit comments

Comments
 (0)