class Kudo::Validator
Constants
- SUDOKU_RANGE
Public Class Methods
check_complete(sudoku)
click to toggle source
# File lib/kudo/validator.rb, line 12 def check_complete(sudoku) Operator.get_empty_cells(sudoku).empty? end
check_solved(sudoku)
click to toggle source
# File lib/kudo/validator.rb, line 8 def check_solved(sudoku) check_complete(sudoku) && check_valid(sudoku) end
check_valid(sudoku)
click to toggle source
# File lib/kudo/validator.rb, line 16 def check_valid(sudoku) check_rows(sudoku) && check_columns(sudoku) && check_subgrids(sudoku) end
Private Class Methods
check_columns(sudoku)
click to toggle source
# File lib/kudo/validator.rb, line 28 def check_columns(sudoku) SUDOKU_RANGE.all? { |i| check_unique(Operator.get_column(sudoku, i)) } end
check_rows(sudoku)
click to toggle source
# File lib/kudo/validator.rb, line 24 def check_rows(sudoku) SUDOKU_RANGE.all? { |i| check_unique(Operator.get_row(sudoku, i)) } end
check_subgrids(sudoku)
click to toggle source
# File lib/kudo/validator.rb, line 32 def check_subgrids(sudoku) SUDOKU_RANGE.all? do |i| SUDOKU_RANGE.all? do |j| check_unique(Operator.get_subgrid(sudoku, i, j)) end end end
check_unique(array)
click to toggle source
# File lib/kudo/validator.rb, line 40 def check_unique(array) non_zero_arr = array.reject(&:zero?) non_zero_arr.size == non_zero_arr.to_set.size end