
'''simple docstring'''

from __future__ import annotations

snake_case									=    list[list[int]]

# assigning initial values to the grid
snake_case									=    [
    [3, 0, 6, 5, 0, 8, 4, 0, 0],
    [5, 2, 0, 0, 0, 0, 0, 0, 0],
    [0, 8, 7, 0, 0, 0, 0, 3, 1],
    [0, 0, 3, 0, 1, 0, 0, 8, 0],
    [9, 0, 0, 8, 6, 3, 0, 0, 5],
    [0, 5, 0, 0, 9, 0, 6, 0, 0],
    [1, 3, 0, 0, 0, 0, 2, 5, 0],
    [0, 0, 0, 0, 0, 0, 0, 7, 4],
    [0, 0, 5, 2, 0, 6, 3, 0, 0],
]

# a grid with no solution
snake_case									=    [
    [5, 0, 6, 5, 0, 8, 4, 0, 3],
    [5, 2, 0, 0, 0, 0, 0, 0, 2],
    [1, 8, 7, 0, 0, 0, 0, 3, 1],
    [0, 0, 3, 0, 1, 0, 0, 8, 0],
    [9, 0, 0, 8, 6, 3, 0, 0, 5],
    [0, 5, 0, 0, 9, 0, 6, 0, 0],
    [1, 3, 0, 0, 0, 0, 2, 5, 0],
    [0, 0, 0, 0, 0, 0, 0, 7, 4],
    [0, 0, 5, 2, 0, 6, 3, 0, 0],
]


def        UpperCAmelCase_ (  lowerCamelCase_      ,			lowerCamelCase_      ,			lowerCamelCase_      ,			lowerCamelCase_			):







 """simple docstring"""


 for i in range(9			):
  if grid[row][i] == n or grid[i][column] == n:
   return False

 for i in range(3			):
  for j in range(3			):
   if grid[(row - row % 3) + i][(column - column % 3) + j] == n:
    return False

 return True


def        UpperCAmelCase_ (  lowerCamelCase_			):







 """simple docstring"""


 for i in range(9			):
  for j in range(9			):
   if grid[i][j] == 0:
    return i, j
 return None


def        UpperCAmelCase_ (  lowerCamelCase_			):







 """simple docstring"""


 if location := find_empty_location(lowerCamelCase_			):
  lowerCAmelCase__		,     lowerCAmelCase__     :   int     		=	location
 else:
  # If the location is ``None``, then the grid is solved.
  return grid

 for digit in range(1      ,			1_0			):
  if is_safe(lowerCamelCase_      ,			lowerCamelCase_      ,			lowerCamelCase_      ,			lowerCamelCase_			):
   lowerCAmelCase__     :   str     		=	digit

   if sudoku(lowerCamelCase_			) is not None:
    return grid

   lowerCAmelCase__     :   str     		=	0

 return None


def        UpperCAmelCase_ (  lowerCamelCase_			):







 """simple docstring"""


 for row in grid:
  for cell in row:
   print(lowerCamelCase_      ,			end=" "			)
  print()


if __name__ == "__main__":
     # make a copy of grid so that you can compare with the unmodified grid
     for example_grid in (initial_grid, no_solution):
          print("""\nExample grid:\n""" + """=""" * 20)
          print_solution(example_grid)
          print("""\nExample grid solution:""")
          snake_case									=    sudoku(example_grid)
          if solution is not None:
               print_solution(solution)
          else:
               print("""Cannot find a solution.""")







'''simple docstring'''

def        UpperCAmelCase_ (  lowerCamelCase_			):







 """simple docstring"""


 return number & 1 == 0


if __name__ == "__main__":
     import doctest

     doctest.testmod()





