class Nmax::SeekerIntegers
@example
Nmax::SeekerIntegers.new
(input_data
: 'Hello Worlld 2020', count_numbers
: 5).seek
Constants
- MAX_COUNT_DIGIT
Attributes
count_numbers[R]
input_data[R]
Public Class Methods
new(input_data:, count_numbers:)
click to toggle source
# File lib/nmax.rb, line 18 def initialize(input_data:, count_numbers:) raise EmptyInputData if input_data.to_s.chomp.empty? raise CountNumbersZero if count_numbers.to_i.zero? raise CountNumbeMustBePositive if count_numbers.to_i.negative? @input_data = input_data @count_numbers = count_numbers end
Public Instance Methods
search()
click to toggle source
@return [Array]
# File lib/nmax.rb, line 28 def search # select all numbers from a string numbers = @input_data.scan(/\d+/).select do |number| number.to_i.is_a?(Integer) && !number.to_i.zero? end.map(&:to_i).uniq numbers.each { |number| raise InvalidInput if num_digits(number.to_i) > MAX_COUNT_DIGIT } raise NotContainNumbers if numbers.length.zero? numbers.sort!.reverse! # return largest n numbers numbers[0..count_numbers - 1] end
Private Instance Methods
num_digits(digit)
click to toggle source
# File lib/nmax.rb, line 46 def num_digits(digit) Math.log10(digit).to_i + 1 end