Method: MaxAmount::Seeker#search

Defined in:
lib/max_amount/seeker.rb

#searchObject

Raises:



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/max_amount/seeker.rb', line 28

def search
  # берем из строки только целые неотрицательные числа
  numbers = input_data.scan(/\d+/).select do |num|
    num.to_i.is_a?(Integer) && num.to_i.positive?
  end.map(&:to_i).uniq

  # длина каждого числа не может превышать заданную величину "MAX_SIZE_DIGITAL"
  numbers.each { |num| raise InvalidDigitInput if number_length(num.to_i) > MAX_SIZE_DIGITAL }

  # числа должны быть
  raise NotContainZero if numbers.size.zero?

  numbers.sort!.reverse!

  # вывод наибольших целых чисел в количестве "count_numbers" штук
  numbers[0..count_numbers - 1]
end