Yes, sure...
sudoku = [[' ',' ',' ','2','1',' ',' ',' ',' '], [' ',' ','7','3',' ',' ',' ',' ',' '], [' ','5','8',' ',' ',' ',' ',' ',' '], ['4','3',' ',' ',' ',' ',' ',' ',' '], ['2',' ',' ',' ',' ',' ',' ',' ','8'], [' ',' ',' ',' ',' ',' ',' ','7','6'], [' ',' ',' ',' ',' ',' ','2','5',' '], [' ',' ',' ',' ',' ','7','3',' ',' '], [' ',' ',' ',' ','9','8',' ',' ',' ']] def printSUDOKU(matrix): for row in range(9): print("|-----------------------------------|") for col in range(9): print("| " + matrix[row][col] + " ",end='') print("|") print("|-----------------------------------|") def consistent(matrix, row, col, value): for i in range(9): if matrix[row][i]==value: return False if matrix[i][col]==value: return False rowStart = row - row%3 colStart = col - col%3 for m in range(3): for k in range(3): if matrix[rowStart+k][colStart+m]==value: return False return True def solve(num): if num==81: print("Solution found!") printSUDOKU(sudoku) return True else: row = int(num / 9) col = num % 9 if sudoku[row][col]!=' ': solve(num+1) else: for value in range(1,10): if consistent(sudoku, row, col, str(value)): sudoku[row][col] = str(value) if solve(num+1): return True sudoku[row][col]=' ' return False printSUDOKU(sudoku) solve(0)