class Codebreaker::Marker

Attributes

match[RW]

Public Class Methods

new(guess, secret_code) click to toggle source
# File lib/codebreaker/marker.rb, line 6
def initialize(guess, secret_code)
  @guess = guess
  @secret_code = secret_code
  @match = []
end

Public Instance Methods

find_matches() click to toggle source
# File lib/codebreaker/marker.rb, line 12
def find_matches
  compared_guess = @guess.zip @secret_code
  exact_matches, number_matches = compared_guess.partition { |arr| arr[0] == arr[1] }
  @match << '+' * exact_matches.size
  mark_minusses(number_matches) unless number_matches.size.zero?
end
mark_minusses(number_matches) click to toggle source
# File lib/codebreaker/marker.rb, line 19
def mark_minusses(number_matches)
  secret_code, guess = number_matches.transpose
  guess.each do |number|
    next unless secret_code.include? number
    @match << '-'
    secret_code[secret_code.find_index(number)] = nil
  end
end
result() click to toggle source
# File lib/codebreaker/marker.rb, line 28
def result
  find_matches
  @match.join
end