class Codebreaker::GuessChecker
Constants
- MINUSE
- NONE
- PLUS
Attributes
exact[RW]
inexact[RW]
none[RW]
Public Class Methods
new(code, code_input)
click to toggle source
# File lib/codebreaker/guess_checker.rb, line 11 def initialize(code, code_input) @code = code.chars @code_input = code_input.chars end
Public Instance Methods
check_input()
click to toggle source
# File lib/codebreaker/guess_checker.rb, line 22 def check_input raw_result = mismatched matched_result = matched(raw_result) check_result(matched_result) end
symbols(inexact = MINUSE, exact = PLUS, none = NONE)
click to toggle source
# File lib/codebreaker/guess_checker.rb, line 16 def symbols(inexact = MINUSE, exact = PLUS, none = NONE) @inexact = inexact @exact = exact @none = none end
Private Instance Methods
check_result(result)
click to toggle source
# File lib/codebreaker/guess_checker.rb, line 44 def check_result(result) result = result.chars result = result << @none until result.size == 4 result.join end
matched(result)
click to toggle source
# File lib/codebreaker/guess_checker.rb, line 35 def matched(result) @code_input.each.with_index do |element, index| result.sub!(@inexact, @exact) if element == @code[index] end return result unless result.empty? @none end
mismatched()
click to toggle source
# File lib/codebreaker/guess_checker.rb, line 30 def mismatched inexact = (@code & @code_input).map { |element| [@code.count(element), @code_input.count(element)].min }.sum @inexact * inexact end