Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.
The Sudoku board could be partially filled, where empty cells are filled with the character
'.'
.
A partially filled sudoku which is valid.
Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
Solution:
class Solution: # @param board, a 9x9 2D array # @return a boolean def isValidSudoku(self, board): for i in range(0,9): row = [] col = [] square = [] for j in range(0,9): row.append(False) col.append(False) square.append(False) for j in range(0,9): if board[i][j] != '.': if board[i][j].isdigit() and int(board[i][j])>0 and int(board[i][j])<=9 and not row[int(board[i][j])-1]: row[int(board[i][j])-1] = True else: return False if board[j][i] != '.': if board[j][i].isdigit() and int(board[j][i])>0 and int(board[j][i])<=9 and not col[int(board[j][i])-1]: col[int(board[j][i])-1] = True else: return False rowSquare = int(i / 3)*3 + int(j / 3); colSquare = (i % 3)*3 + j % 3; if board[rowSquare][colSquare] != '.': if board[rowSquare][colSquare].isdigit() and int(board[rowSquare][colSquare])>0 and int(board[rowSquare][colSquare])<=9 and not square[int(board[rowSquare][colSquare])-1]: square[int(board[rowSquare][colSquare])-1] = True else: return False return True
No comments :
Post a Comment