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