Class: Hrom512::Nmax::MaxNumbersFinder

Inherits:
Object
  • Object
show all
Defined in:
lib/hrom512/nmax/max_numbers_finder.rb

Overview

Find N maximum numbers in input stream

Constant Summary collapse

MAX_STORE_ELEMENTS =
1_000_000

Instance Method Summary collapse

Constructor Details

#initialize(input_stream, numbers_count) ⇒ MaxNumbersFinder

Returns a new instance of MaxNumbersFinder.



7
8
9
10
# File 'lib/hrom512/nmax/max_numbers_finder.rb', line 7

def initialize(input_stream, numbers_count)
  @input_stream = input_stream
  @numbers_count = numbers_count
end

Instance Method Details

#findObject



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/hrom512/nmax/max_numbers_finder.rb', line 12

def find
  numbers_parser = NumbersParser.new(@input_stream)
  numbers = []

  while (number = numbers_parser.next_number)
    numbers << number
    numbers = max_elements(numbers) if numbers.size > MAX_STORE_ELEMENTS
  end

  max_elements(numbers)
end