Skip to content

Commit 29d563c

Browse files
authored
Add files via upload
1 parent 731aec2 commit 29d563c

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

Diff for: sudoku.py

+81
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
def print_grid(arr):
2+
for i in range(9):
3+
for j in range(9):
4+
print (arr[i][j], end = " ")
5+
print()
6+
7+
def find_empty_location(arr, l):
8+
for row in range(9):
9+
for col in range(9):
10+
if arr[row][col] == 0:
11+
l[0] = row
12+
l[1] = col
13+
return True
14+
return False
15+
16+
def used_in_row(arr, row, num):
17+
for i in range(9):
18+
if (arr[row][i] == num):
19+
return True
20+
return False
21+
22+
def used_in_col(arr, col, num):
23+
for i in range(9):
24+
if (arr[i][col] == num):
25+
return True
26+
return False
27+
28+
def used_in_box(arr, row, col, num):
29+
for i in range(3):
30+
for j in range(3):
31+
if (arr[i + row][j + col] == num):
32+
return True
33+
return False
34+
35+
def check_location_is_safe(arr, row, col, num):
36+
return not used_in_row(arr, row, num) and not used_in_col(arr, col, num) and not used_in_box(arr, row - row % 3, col - col % 3, num)
37+
38+
39+
def solve_sudoku(arr):
40+
41+
l = [0, 0]
42+
43+
if (not find_empty_location(arr, l)):
44+
return True
45+
46+
row = l[0]
47+
col = l[1]
48+
49+
for num in range(1, 10):
50+
51+
if (check_location_is_safe(arr, row, col, num)):
52+
arr[row][col] = num
53+
54+
if (solve_sudoku(arr)):
55+
return True
56+
57+
arr[row][col] = 0
58+
59+
return False
60+
61+
62+
if __name__=="__main__":
63+
64+
# creating a 2D array for the grid
65+
grid =[[0 for x in range(9)]for y in range(9)]
66+
67+
grid =[[3, 0, 6, 5, 0, 8, 4, 0, 0],
68+
[5, 2, 0, 0, 0, 0, 0, 0, 0],
69+
[0, 8, 7, 0, 0, 0, 0, 3, 1],
70+
[0, 0, 3, 0, 1, 0, 0, 8, 0],
71+
[9, 0, 0, 8, 6, 3, 0, 0, 5],
72+
[0, 5, 0, 0, 9, 0, 6, 0, 0],
73+
[1, 3, 0, 0, 0, 0, 2, 5, 0],
74+
[0, 0, 0, 0, 0, 0, 0, 7, 4],
75+
[0, 0, 5, 2, 0, 6, 3, 0, 0]]
76+
77+
78+
if(solve_sudoku(grid)):
79+
print_grid(grid)
80+
else:
81+
print("No solution exists")

0 commit comments

Comments
 (0)