-
Notifications
You must be signed in to change notification settings - Fork 0
/
solver.py
39 lines (29 loc) · 1.11 KB
/
solver.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 helperFunctions import *
def solve(board):
"""Finds a route from the starting Sudoku board to a solved board."""
pos = first_unsolved(board) # get (row, col) indices for first unsolved cell
if pos == (-1, -1): # indicates no unsolved position
return board
else:
return solve_list(neighbours(board))
def solve_list(boards):
"""Finds a route from a list of Sudoku boards to a solved board"""
if len(boards) == 0:
return False
else:
first = solve(boards[0])
if not first == False:
return first
else:
return solve_list(boards[1:])
def get_hint(board):
"""Finds a route from the starting Sudoku board to a solved board."""
pos = first_unsolved(board) # get (row, col) indices for first unsolved cell
if pos == (-1, -1): # indicates no unsolved position
return board, True
else:
for nbr in neighbours(board):
solved_board, is_valid = get_hint(nbr)
if is_valid:
return nbr, True # return the first valid board encountered
return False, False