class Nmax1000::Nmax

Public Class Methods

new(amount_of_max_numbers) click to toggle source
# File lib/nmax1000.rb, line 6
def initialize(amount_of_max_numbers)
  exit 1 if amount_of_max_numbers < 0
  @amount_of_max_numbers = amount_of_max_numbers
  @max_numbers = []
  @input = $stdin
  result
end

Public Instance Methods

add_number_to_array(num) click to toggle source
# File lib/nmax1000.rb, line 43
def add_number_to_array(num)
  @max_numbers << num.to_i if @max_numbers.empty?

  if @max_numbers.size == @amount_of_max_numbers
    if @max_numbers.first < num.to_i
      @max_numbers.shift
      @max_numbers.unshift(num.to_i)
    end
  else
    @max_numbers << num.to_i
  end
end
print_result() click to toggle source
read_number() click to toggle source
# File lib/nmax1000.rb, line 29
def read_number
  number_string = ''
  char = @input.getc
  until /[^\d-]/.match? char
    next if char.nil?

    number_string += char
    break if @input.eof

    char = @input.getc
  end
  number_string
end
result() click to toggle source
# File lib/nmax1000.rb, line 14
def result
  loop do
    num = read_number
    next if num.empty?

    add_number_to_array(num)
    @max_numbers.sort!.uniq!

    break if @input.eof
  end

  print_result
  exit 0
end