Sha256: a3d2a319b5ab7abb3415817c856535d1e3613549cb104d8c246a84bf5f9437b4

Contents?: true

Size: 850 Bytes

Versions: 2

Compression:

Stored size: 850 Bytes

Contents

# frozen_string_literal: true

require_relative 'config'

module CodebreakerDiz
  class Matcher
    def initialize(secret_code, user_code)
      @secret_code = secret_code.clone
      @user_code = user_code

      @exact_matches = 0
      @number_matches = 0
    end

    def matches
      calculate_matches

      EXACT_MATCH_SIGN * @exact_matches << NUMBER_MATCH_SIGN * @number_matches
    end

    private

    def calculate_matches
      @secret_code.zip(@user_code).each do |secret_code_number, user_code_number|
        next unless @secret_code.include? user_code_number

        if secret_code_number == user_code_number     then @exact_matches   += 1
        elsif @secret_code.include? user_code_number  then @number_matches  += 1
        end

        @secret_code.delete_at(@secret_code.index(user_code_number))
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
codebreaker_diz-0.2.5 lib/codebreaker_diz/matcher.rb
codebreaker_diz-0.2.4 lib/codebreaker_diz/matcher.rb