class AlexCodebreaker::Comparison

Public Class Methods

new(user_input, secret_code_for_comparison) click to toggle source
# File lib/alex_codebreaker/comparison.rb, line 3
def initialize(user_input, secret_code_for_comparison)
  @user_input = user_input
  @secret_code_for_comparison = secret_code_for_comparison
  @matching = { place: 0, presence: 0 }
end

Public Instance Methods

response() click to toggle source
# File lib/alex_codebreaker/comparison.rb, line 9
def response
  place_matches
  presence_matches
  format_response
end

Private Instance Methods

format_response() click to toggle source
# File lib/alex_codebreaker/comparison.rb, line 36
def format_response
  AlexCodebreaker::Modules::Settings::MATCHING[:place] * @matching[:place] +
    AlexCodebreaker::Modules::Settings::MATCHING[:presence] * @matching[:presence]
end
place_matches() click to toggle source
# File lib/alex_codebreaker/comparison.rb, line 17
def place_matches
  @user_input.each_with_index do |value, index|
    next unless value == @secret_code_for_comparison[index]

    @secret_code_for_comparison[index] = nil
    @user_input[index] = nil
    @matching[:place] += 1
  end
end
presence_matches() click to toggle source
# File lib/alex_codebreaker/comparison.rb, line 27
def presence_matches
  @user_input.compact.each do |value|
    if @secret_code_for_comparison.include?(value)
      @matching[:presence] += 1
      @secret_code_for_comparison.delete_at(@secret_code_for_comparison.index(value))
    end
  end
end