Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #--------------------------------------------------------------------------------------
- def srt(mass, m, n):
- for x in mass[n]:
- if x in m: m.remove(x)
- return m
- def sudoku(p):
- c = 0
- for x in p: c += x.count(0)
- while c > 0:
- for y in range(len(p)):
- for x in range(len(p)):
- mass = []
- idx = 0
- idy = 0
- while len(mass) < len(p):
- tm = []
- for i in range(idy, idy+3):
- for j in range(idx, idx+3):
- tm.append(p[i][j])
- mass.append(tm)
- if idy+3 == len(p):
- idy = 0
- idx += 3
- continue
- idy += 3
- if p[y][x] == 0:
- m = [h for h in range(1,10)]
- if 0 <= x <= 2:
- if 0 <= y <= 2: m = srt(mass, m, 0)
- if 3 <= y <= 5: m = srt(mass, m, 1)
- if 6 <= y <= 8: m = srt(mass, m, 2)
- if 3 <= x <= 5:
- if 0 <= y <= 2: m = srt(mass, m, 3)
- if 3 <= y <= 5: m = srt(mass, m, 4)
- if 6 <= y <= 8: m = srt(mass, m, 5)
- if 6 <= x <= 8:
- if 0 <= y <= 2: m = srt(mass, m, 6)
- if 3 <= y <= 5: m = srt(mass, m, 7)
- if 6 <= y <= 8: m = srt(mass, m, 8)
- for xx in range(len(p)):
- if p[y][xx] in m: m.remove(p[y][xx])
- for yy in range(len(p)):
- if p[yy][x] in m: m.remove(p[yy][x])
- if len(m) == 1:
- p[y][x] = m[0]
- c -= 1
- return p
- #--------------------------------------------------------------------------------------
- puzzle = [[5,3,0,0,7,0,0,0,0],
- [6,0,0,1,9,5,0,0,0],
- [0,9,8,0,0,0,0,6,0],
- [8,0,0,0,6,0,0,0,3],
- [4,0,0,8,0,3,0,0,1],
- [7,0,0,0,2,0,0,0,6],
- [0,6,0,0,0,0,2,8,0],
- [0,0,0,4,1,9,0,0,5],
- [0,0,0,0,8,0,0,7,9]]
- print(sudoku(puzzle))
Add Comment
Please, Sign In to add comment