Class: Codebreaker::Gameload

Inherits:
Object
  • Object
show all
Defined in:
lib/codebreaker/gameload.rb

Constant Summary collapse

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(guess, secret_code) ⇒ Gameload

Returns a new instance of Gameload.



12
13
14
15
16
# File 'lib/codebreaker/gameload.rb', line 12

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

Instance Attribute Details

#cluesObject (readonly)

Returns the value of attribute clues.



5
6
7
# File 'lib/codebreaker/gameload.rb', line 5

def clues
  @clues
end

Instance Method Details

#matchObject



18
19
20
21
22
23
24
# File 'lib/codebreaker/gameload.rb', line 18

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

#non_exact_matchObject



26
27
28
29
30
31
32
33
# File 'lib/codebreaker/gameload.rb', line 26

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

#write_to_clues(clue) ⇒ Object



35
36
37
# File 'lib/codebreaker/gameload.rb', line 35

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