Class: Sudoku::SolutionSet::Process::Steps::PickUnsatisfiedConstraint

Inherits:
Sudoku::SolutionSet::Process::Step show all
Defined in:
lib/sudoku/solution_set/process/steps/pick_unsatisfied_constraint.rb

Instance Attribute Summary

Attributes inherited from Sudoku::SolutionSet::Process::Step

#output

Instance Method Summary collapse

Methods inherited from Sudoku::SolutionSet::Process::Step

#constraints, #delete_excluded_choices_if, #exclude_choice, #excluded_choices, #include_choice, #included_choices, #initialize, #restore_excluded_choices, #retry?, #revert, #take

Constructor Details

This class inherits a constructor from Sudoku::SolutionSet::Process::Step

Instance Method Details

#revert!Object



24
25
# File 'lib/sudoku/solution_set/process/steps/pick_unsatisfied_constraint.rb', line 24

def revert!
end

#take!(input = nil) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/sudoku/solution_set/process/steps/pick_unsatisfied_constraint.rb', line 6

def take!(input=nil)
  candidates = constraints.select { |constraint|
    included_choices.none? { |included_choice|
      constraint.satisfied_by?(included_choice)
    }
  }

  if candidates.any?
    candidates.min_by { |constraint|
      excluded_choices.select { |excluded_choice|
        constraint.satisfied_by?(excluded_choice)
      }.size
    }
  else
    :solved
  end
end