def is_valid_sudoku(board)
validate(board)
end
def validate(board)
9.times do |i|
return false unless validate_row(board, i)
return false unless validate_column(board, i)
return false unless validate_box(board, 3 (i / 3), 3 (i % 3))
end
true
end
def validate_row(board, row)
seen = Array.new(9, false)
9.times do |col|
value = board[row][col]
return false if value != "." && seen[value.to_i - 1]
seen[value.to_i - 1] = true
end
true
end
def validate_column(board, col)
seen = Array.new(9, false)
9.times do |row|
value = board[row][col]
return false if value != "." && seen[value.to_i - 1]
seen[value.to_i - 1] = true
end
true
end
def validate_box(board, start_row, start_col)
seen = Array.new(9, false)
3.times do |i|
3.times do |j|
value = board[start_row + i][start_col + j]
return false if value != "." && seen[value.to_i - 1]
seen[value.to_i - 1] = true
end
end
true
end