Module: DigitsSolver::Strategies::BruteForce
- Includes:
- Base
- Defined in:
- lib/digits_solver/strategies/brute_force.rb
Constant Summary
Constants included from Base
DigitsSolver::Strategies::Base::OPERATIONS
Instance Method Summary collapse
Instance Method Details
#solve(problem_statement) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/digits_solver/strategies/brute_force.rb', line 8 def solve(problem_statement) solutions = [] draw = problem_statement.draw possible_operations = possible_operations_for_ordered_draw problem_statement.max_operations_number # DigitsSolver.logger.debug possible_operations.inspect attempts_count = 0 draw.permutation.map do |ordered_draw| DigitsSolver.logger.debug "Testing #{ordered_draw.inspect} for all possible chains of operations" possible_operations.each do |operations_chain| attempts_count += 1 begin apply_operations_chain_to_ordered_draw(operations_chain, ordered_draw, problem_statement) do |valid_solution| solutions << valid_solution end rescue DigitsSolver::Strategies::Base::OperationError => e DigitsSolver.logger.debug "#{ordered_draw.inspect} => #{operations_chain.inspect} is discarded because #{e.}" end end end DigitsSolver.logger.debug "Found #{solutions.count} solutions." [solutions, attempts_count] end |