Class: Mastermind::Processor
- Inherits:
-
Object
- Object
- Mastermind::Processor
- Defined in:
- lib/mastermind/processor.rb
Class Method Summary collapse
- .colors(num_colors) ⇒ Object
- .num_correct_colors(guess, code) ⇒ Object
- .num_correct_pos(guess, code) ⇒ Object
- .secret(length, num_colors) ⇒ Object
- .valid_colors?(guess, valid_colors) ⇒ Boolean
- .valid_length?(guess, code) ⇒ Boolean
- .validate(guess, code, valid_colors) ⇒ Object
Class Method Details
.colors(num_colors) ⇒ Object
14 15 16 |
# File 'lib/mastermind/processor.rb', line 14 def self.colors(num_colors) Mastermind::COLORS.first(num_colors) end |
.num_correct_colors(guess, code) ⇒ Object
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/mastermind/processor.rb', line 33 def self.num_correct_colors(guess, code) non_posd_guess = guess.chars.select.with_index { |letter, i| letter != code[i] } non_posd_code = code.select.with_index { |letter, i| letter != guess.chars[i] } colors = [] non_posd_guess.map do |letter| idx = non_posd_code.find_index { |char| letter == char } colors << non_posd_code.delete_at(idx) if idx end colors.length end |
.num_correct_pos(guess, code) ⇒ Object
44 45 46 |
# File 'lib/mastermind/processor.rb', line 44 def self.num_correct_pos(guess, code) guess.chars.zip(code).count { |comp| comp[0] == comp[1] } end |
.secret(length, num_colors) ⇒ Object
6 7 8 9 10 11 12 |
# File 'lib/mastermind/processor.rb', line 6 def self.secret(length, num_colors) secret = [] length.times do secret << colors(num_colors).sample end secret end |
.valid_colors?(guess, valid_colors) ⇒ Boolean
26 27 28 29 30 31 |
# File 'lib/mastermind/processor.rb', line 26 def self.valid_colors?(guess, valid_colors) validity = guess.split("").map do |char| valid_colors.any? { |color| color == char } end !validity.any? { |char| char == false } end |
.valid_length?(guess, code) ⇒ Boolean
22 23 24 |
# File 'lib/mastermind/processor.rb', line 22 def self.valid_length?(guess, code) guess.length == code.length end |
.validate(guess, code, valid_colors) ⇒ Object
18 19 20 |
# File 'lib/mastermind/processor.rb', line 18 def self.validate(guess, code, valid_colors) valid_length?(guess, code) && valid_colors?(guess, valid_colors) end |