Professional Documents
Culture Documents
Semester : 5th
import numpy as np
class ConstraintSatisfaction(object):
#solver function
coords = []
if sudoku.puzzle[x][y] == 0:
coords.append((x, y))
# Backtrack algorithm
coords_after = coords[1:]
# Recursive approach, updating puzzle board as needed
puzzle[row_after, column_after] = x
puzzle[row_after, column_after] = 0
class Sudoku(object):
# Initial values
self.puzzle = puzzle
self.constraint_approach = constraint_approach
def solver(self):
coords = []
coords.append((x, y))
return self.constraint_approach.solver(self)
line = []
if axis == 0:
line = puzzle[index, :]
elif axis == 1:
return is_valid
line = []
for x in range(0,3):
is_valid = self.checkLine(line)
return is_valid
if axis == 0:
if (puzzle[axis_index][x] == num):
return True
elif axis == 1:
if (puzzle[x][axis_index] == num):
return True
return False
for x in range(3):
for y in range(3):
return True
return False
return False
return False
row = (int(x / 3)) * 3
column = (x % 3) * 3
return False
if (0 not in puzzle):
return False
return True
conflict_set = set()
for x in range(9):
if puzzle[row][x] == num:
conflict_set.add((row + (x * 8)))
for x in range(9):
if puzzle[x][column] == num:
for x in range(3):
for y in range(3):
conflict_set.add(row + (8 * column))
return conflict_set
def printBoard(board):
print("---------------")
for x in range(len(board)):
if (x % 3 == 0) and (x != 0):
print('---------------')
for y in range(len(board[0])):
if (y % 3 == 0) and (y != 0):
if y == 8:
print(board[x][y])
else :
if __name__ == '__main__':
board = []
with open(FILENAME) as f:
for line in f:
board.append(temp_list)
board = np.array(board)
final = ((sudoku.solver()[1:])[0]).tolist()
printBoard(final)
Input Puzzle:
6,0,8,7,0,2,1,0,0
4,0,0,0,1,0,0,0,2
0,2,5,4,0,0,0,0,0
7,0,1,0,8,0,4,0,5
0,8,0,0,0,0,0,7,0
5,0,9,0,6,0,3,0,1
0,0,0,0,0,6,7,5,0
2,0,0,0,9,0,0,0,8
0,0,6,8,0,5,2,0,3
Output:
Input Puzzle:
0,7,0,0,4,2,0,0,0
0,0,0,0,0,8,6,1,0
3,9,0,0,0,0,0,0,7
0,0,0,0,0,4,0,0,9
0,0,3,0,0,0,7,0,0
5,0,0,1,0,0,0,0,0
8,0,0,0,0,0,0,7,6
0,5,4,8,0,0,0,0,0
0,0,0,6,1,0,0,5,0
Output: