input: Write a python function to solve a Sudoku puzzle. 
  assert solveSudoku([[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]]) == True
  assert solveSudoku([[5, 1, 6, 8, 4, 9, 7, 3, 2], [3, 7, 2, 6, 1, 5, 4, 8, 9], [8, 9, 4, 7, 2, 3, 1, 6, 5], [1, 5, 8, 9, 3, 2, 6, 4, 7], [4, 2, 7, 1, 5, 6, 9, 8, 3], [9, 6, 3, 4, 7, 8, 5, 2, 1], [2, 8, 9, 5, 6, 1, 3, 7, 4], [6, 4, 1, 3, 9, 7, 2, 5, 8], [7, 3, 5, 2, 8, 4, 8, 1, 6]]) == False
output: def solveSudoku(board):
      def is_valid(board, row, col, num):
          for i in range(9):
              if board[row][i] == num or board[i][col] == num:
                  return False
              if board[(row // 3) * 3 + i // 3][(col // 3) * 3 + i % 3] == num:
                  return False
          return True
      
      def solve(board):
          for row in range(9):
              for col in range(9):
                  if board[row][col] == 0:
                      for num in range(1, 10):
                          if is_valid(board, row, col, num):
                              board[row][col] = num
                              if solve(board):
                                  return True
                              board[row][col] = 0
                      return False
          return True
      
      return solve(board)