Sha256: a09bf229967647b0d8131ed9faed26c9dce49ef1c6fcb2f7bcc74a49e65ca174

Contents?: true

Size: 883 Bytes

Versions: 16

Compression:

Stored size: 883 Bytes

Contents

# frozen_string_literal: true

module Codebreaker
  module Entities
    class Processor
      MATCHED_DIGIT_CHAR = '+'
      UNMATCHED_DIGIT_CHAR = '-'

      attr_reader :guess, :code, :result

      def secret_code_proc(code, guess)
        @code = code.split('')
        @guess = guess.split('')
        handle_matched_digits.join + handle_matched_digits_with_wrong_position.join
      end

      private

      def handle_matched_digits
        code.map.with_index do |_, index|
          next unless code[index] == guess[index]

          @guess[index], @code[index] = nil
          MATCHED_DIGIT_CHAR
        end
      end

      def handle_matched_digits_with_wrong_position
        guess.compact.map do |number|
          next unless @code.include?(number)

          @code.delete_at(code.index(number))
          UNMATCHED_DIGIT_CHAR
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
codebreaker_marian-0.2.6 lib/codebreaker_marian/entities/processor.rb
codebreaker_marian-0.2.5 lib/codebreaker_marian/entities/processor.rb
codebreaker_marian-0.2.4 lib/codebreaker_marian/entities/processor.rb
codebreaker_marian-0.2.3 lib/codebreaker_marian/entities/processor.rb
codebreaker_marian-0.2.2 lib/codebreaker_marian/entities/processor.rb
codebreaker_marian-0.2.1 lib/codebreaker_marian/entities/processor.rb
codebreaker_marian-0.2.0 lib/codebreaker_marian/entities/processor.rb
codebreaker_marian-0.1.9 lib/codebreaker_marian/entities/processor.rb
codebreaker_marian-0.1.8 lib/codebreaker_marian/entities/processor.rb
codebreaker_marian-0.1.7 lib/codebreaker_marian/entities/processor.rb
codebreaker_marian-0.1.6 lib/codebreaker_marian/entities/processor.rb
codebreaker_marian-0.1.5 lib/codebreaker/entities/processor.rb
codebreaker-yeroshek-0.1.5 lib/codebreaker/entities/processor.rb
codebreaker-yeroshek-0.1.4 lib/codebreaker/entities/processor.rb
codebreaker-yeroshek-0.1.3 lib/codebreaker/entities/processor.rb
codebreaker-yeroshek-0.1.2 lib/codebreaker/entities/processor.rb