Class: Codebreaker::Gameload
- Inherits:
-
Object
- Object
- Codebreaker::Gameload
- Defined in:
- lib/codebreaker/gameload.rb
Constant Summary collapse
- CLUES =
{ exact: :exact, non_exact: :non_exact }.freeze
Instance Attribute Summary collapse
-
#clues ⇒ Object
readonly
Returns the value of attribute clues.
Instance Method Summary collapse
-
#initialize(guess, secret_code) ⇒ Gameload
constructor
A new instance of Gameload.
- #match ⇒ Object
- #non_exact_match ⇒ Object
- #write_to_clues(clue) ⇒ Object
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
#clues ⇒ Object (readonly)
Returns the value of attribute clues.
5 6 7 |
# File 'lib/codebreaker/gameload.rb', line 5 def clues @clues end |
Instance Method Details
#match ⇒ Object
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_match ⇒ Object
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 |