Sha256: 923a29b10831768b1eaaa7184ba9dbf2733091a07fb22442463c1bd185837076

Contents?: true

Size: 815 Bytes

Versions: 2

Compression:

Stored size: 815 Bytes

Contents

# frozen_string_literal: true

module Codebreaker
  class Gameload
    attr_reader :clues

    CLUES = {
      exact: :exact,
      non_exact: :non_exact
    }.freeze

    def initialize(guess, secret_code)
      @secret_code = secret_code
      @guess = guess
      @clues = []
    end

    def match
      collected = @secret_code.zip(@guess).delete_if { |code, guess| write_to_clues(CLUES[:exact]) if code == guess }
      @secret_code, @guess = collected.transpose
      return unless @guess

      non_exact_match
    end

    def non_exact_match
      @guess.compact.each do |num|
        next unless @secret_code.any?(num)

        write_to_clues(CLUES[:non_exact])
        @secret_code[@secret_code.index(num)] = nil
      end
    end

    def write_to_clues(clue)
      @clues.push(clue)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
codebreaker_manfly-0.1.1 lib/codebreaker/gameload.rb
codebreaker_manfly-0.1.0 lib/codebreaker/gameload.rb