module Nmax

Constants

VERSION

Public Class Methods

get_nmax_from_stream(stream, n) click to toggle source
# File lib/nmax.rb, line 5
def self.get_nmax_from_stream(stream, n)
  nmax_numbers = []
  stream.each_line do |line|
    current_line_numbers = get_nmax_from_string(line, n)
    sorted_numbers = (nmax_numbers + current_line_numbers).sort.reverse
    nmax_numbers = sorted_numbers.size >= n ? sorted_numbers[-n, n] : sorted_numbers
  end
  nmax_numbers
end
get_nmax_from_string(string, n) click to toggle source
# File lib/nmax.rb, line 15
def self.get_nmax_from_string(string, n)
  return [] if string.empty? || n.nil? || n.zero?
  numbers = string.scan(/\d{1,1000}/).map(&:to_i)
  sorted_numbers = numbers.sort
  return sorted_numbers[-n, n] if sorted_numbers.size >= n
  sorted_numbers
end
print(nmax_numbers) click to toggle source