GPbl3YH

3kyu13052021

May 13th, 2021 (edited)
351
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.36 KB | None | 0 0
  1. #--------------------------------------------------------------------------------------
  2.  
  3. def srt(mass, m, n):
  4.     for x in mass[n]:
  5.         if x in m: m.remove(x)
  6.     return m
  7.  
  8. def sudoku(p):
  9.     c = 0
  10.     for x in p: c += x.count(0)
  11.  
  12.     while c > 0:
  13.         for y in range(len(p)):
  14.             for x in range(len(p)):
  15.                 mass = []
  16.                 idx = 0
  17.                 idy = 0
  18.                 while len(mass) < len(p):
  19.                     tm = []
  20.                     for i in range(idy, idy+3):
  21.                         for j in range(idx, idx+3):
  22.                             tm.append(p[i][j])
  23.                     mass.append(tm)
  24.                     if idy+3 == len(p):
  25.                         idy = 0
  26.                         idx += 3
  27.                         continue
  28.                     idy += 3
  29.  
  30.  
  31.                 if p[y][x] == 0:
  32.                     m = [h for h in range(1,10)]
  33.                     if 0 <= x <= 2:
  34.                         if 0 <= y <= 2: m = srt(mass, m, 0)
  35.                         if 3 <= y <= 5: m = srt(mass, m, 1)
  36.                         if 6 <= y <= 8: m = srt(mass, m, 2)
  37.                    
  38.                     if 3 <= x <= 5:
  39.                         if 0 <= y <= 2: m = srt(mass, m, 3)
  40.                         if 3 <= y <= 5: m = srt(mass, m, 4)
  41.                         if 6 <= y <= 8: m = srt(mass, m, 5)
  42.                    
  43.                     if 6 <= x <= 8:
  44.                         if 0 <= y <= 2: m = srt(mass, m, 6)
  45.                         if 3 <= y <= 5: m = srt(mass, m, 7)
  46.                         if 6 <= y <= 8: m = srt(mass, m, 8)
  47.  
  48.  
  49.                     for xx in range(len(p)):
  50.                         if p[y][xx] in m: m.remove(p[y][xx])
  51.                     for yy in range(len(p)):
  52.                         if p[yy][x] in m: m.remove(p[yy][x])                    
  53.  
  54.  
  55.                     if len(m) == 1:
  56.                         p[y][x] = m[0]
  57.                         c -= 1
  58.     return p
  59.            
  60. #--------------------------------------------------------------------------------------
  61.  
  62. puzzle = [[5,3,0,0,7,0,0,0,0],
  63.           [6,0,0,1,9,5,0,0,0],
  64.           [0,9,8,0,0,0,0,6,0],
  65.           [8,0,0,0,6,0,0,0,3],
  66.           [4,0,0,8,0,3,0,0,1],
  67.           [7,0,0,0,2,0,0,0,6],
  68.           [0,6,0,0,0,0,2,8,0],
  69.           [0,0,0,4,1,9,0,0,5],
  70.           [0,0,0,0,8,0,0,7,9]]
  71.  
  72. print(sudoku(puzzle))
Add Comment
Please, Sign In to add comment