Class: IntelligentBruteForceSolver
- Inherits:
-
Object
- Object
- IntelligentBruteForceSolver
- Defined in:
- lib/mastermind_ruby/solver/intelligent_brute_force_solver.rb
Instance Attribute Summary collapse
-
#code_length ⇒ Object
readonly
Returns the value of attribute code_length.
Instance Method Summary collapse
- #assessment_received(result) ⇒ Object
- #generate_codes ⇒ Object
- #generate_start_codes ⇒ Object
-
#initialize(code_length: 4) ⇒ IntelligentBruteForceSolver
constructor
A new instance of IntelligentBruteForceSolver.
- #request_quess(count) ⇒ Object
Constructor Details
#initialize(code_length: 4) ⇒ IntelligentBruteForceSolver
Returns a new instance of IntelligentBruteForceSolver.
6 7 8 9 10 11 12 |
# File 'lib/mastermind_ruby/solver/intelligent_brute_force_solver.rb', line 6 def initialize(code_length: 4) @code_length = code_length @basic_codes = generate_start_codes @basic_try = -1 @code_try = -1 @existing_chars = [] end |
Instance Attribute Details
#code_length ⇒ Object (readonly)
Returns the value of attribute code_length.
4 5 6 |
# File 'lib/mastermind_ruby/solver/intelligent_brute_force_solver.rb', line 4 def code_length @code_length end |
Instance Method Details
#assessment_received(result) ⇒ Object
25 26 27 28 29 |
# File 'lib/mastermind_ruby/solver/intelligent_brute_force_solver.rb', line 25 def assessment_received(result) unless result == @code_length.times.map { '-' }.join result.count('B').times { @existing_chars << MastermindRuby::Code::AVAILABLE_CHARACTERS[@basic_try] } end end |
#generate_codes ⇒ Object
37 38 39 |
# File 'lib/mastermind_ruby/solver/intelligent_brute_force_solver.rb', line 37 def generate_codes @existing_chars.permutation.to_a.uniq end |
#generate_start_codes ⇒ Object
31 32 33 34 35 |
# File 'lib/mastermind_ruby/solver/intelligent_brute_force_solver.rb', line 31 def generate_start_codes MastermindRuby::Code::AVAILABLE_CHARACTERS.map do |char| char * @code_length end end |
#request_quess(count) ⇒ Object
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/mastermind_ruby/solver/intelligent_brute_force_solver.rb', line 14 def request_quess(count) if @basic_try < 5 @basic_try += 1 MastermindRuby::Code.parse(@basic_codes[@basic_try]) else @code_try += 1 @tryable_codes ||= generate_codes MastermindRuby::Code.new(@tryable_codes[@code_try]) end end |