-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSudoku
More file actions
137 lines (127 loc) · 4.18 KB
/
Sudoku
File metadata and controls
137 lines (127 loc) · 4.18 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
def sudoku_valid(puzzle, row, col, num):
for i in range(9):
if puzzle[row][i] == num:
return False
for i in range(9):
if puzzle[i][col] == num:
return False
# Check sub-grid
subgrid_row = (row // 3) * 3
subgrid_col = (col // 3) * 3
for i in range(subgrid_row, subgrid_row+3):
for j in range(subgrid_col, subgrid_col+3):
if puzzle[i][j] == num:
return False
return True
def solve_sudoku(puzzle):
for row in range(9):
for col in range(9):
if puzzle[row][col] == 0:
for num in range(1, 10):
if is_valid(puzzle, row, col, num):
puzzle[row][col] = num
if solve_sudoku(puzzle):
return True
puzzle[row][col] = 0
return False
return True
# Get input from user
puzzle = [[0 for i in range(9)] for j in range(9)]
for i in range(9):
for j in range(9):
num = input(f"Enter number for row {i+1}, column {j+1} (0 for empty space): ")
puzzle[i][j] = int(num)
# Print initial puzzle
print("Initial puzzle:")
for row in puzzle:
print(row)
# Solve puzzle
if solve_sudoku(puzzle):
print("Solved puzzle:")
for row in puzzle:
print(row)
else:
print("No solution exists.")
# Compute sum for each group
group_sums = []
for i in range(0, 9, 3): # iterate over group rows
for j in range(0, 9, 3): # iterate over group columns
group_sum = 0
for k in range(i, i+3): # iterate over rows in group
for l in range(j, j+3): # iterate over columns in group
group_sum += puzzle[k][l]
group_sums.append(group_sum)
return group_sums
puzzle = [[0 for i in range(9)] for j in range(9)]
for i in range(9):
for j in range(9):
num = input(f"Enter number for row {i+1}, column {j+1} (0 for empty space): ")
puzzle[i][j] = int(num)
# Solve puzzle and get group sums
group_sums = solve_sudoku(puzzle)
# Print solved puzzle and group sums
if group_sums:
print("Solved puzzle:")
for row in puzzle:
print(row)
print("Group sums:")
for i, group_sum in enumerate(group_sums):
print(f"Group {i+1}: {group_sum}")
else:
print("No solution exists.")
def check():
box1 = []
for i in range(3): # iterate over rows 1-3
for j in range(3): # iterate over columns 1-3
box1.append(sudoku[i][j])
sum1 = sum(box1)
box2 = []
for i in range(3): # iterate over rows 1-3
for j in range(4, 7): # iterate over columns 4-6
box2.append(sudoku[i][j])
sum2 = sum(box2)
box3 = []
for i in range(3): # iterate over rows 1-3
for j in range(7, 10): # iterate over columns 7-9
box3.append(sudoku[i][j])
sum3 = sum(box3)
box4 = []
for i in range(4, 7): # iterate over rows 4-6
for j in range(3): # iterate over columns 1-3
box4.append(sudoku[i][j])
sum4 = sum(box4)
box5 = []
for i in range(4, 7): # iterate over rows 4-6
for j in range(4, 7): # iterate over columns 4-6
box5.append(sudoku[i][j])
sum5 = sum(box5)
box6 = []
for i in range(4, 7): # iterate over rows 4-6
for j in range(7, 10): # iterate over columns 7-9
box6.append(sudoku[i][j])
sum6 = sum(box6)
box7 = []
for i in range(7, 10): # iterate over rows 7-9
for j in range(3): # iterate over columns 1-3
box7.append(sudoku[i][j])
sum7 = sum(box7)
box8 = []
for i in range(7, 10): # iterate over rows 7-9
for j in range(4, 7): # iterate over columns 4-6
box8.append(sudoku[i][j])
sum8 = sum(box8)
box9 = []
for i in range(7, 10): # iterate over rows 7-9
for j in range(7, 10): # iterate over columns 7-9
box9.append(sudoku[i][j])
sum9 = sum(box9)
boxes = [box1, box2, box3, box4, box5, box6, box7, box8, box9]
for i, box in enumerate(boxes):
if set(box) == set(range(1, 10)):
print(f"Box {i+1} is valid.")
else:
print(f"Box {i+1} is invalid.")
if sum1 == sum2 == sum3 == sum4 == sum5 == sum6 == sum7 == sum8 == sum9:
print("All sub-boxes have the same sum")
else:
print("Not all sub-boxes have the same sum")