David Haley - 1 year ago 127
Ruby Question

# High & Low Numbers From A String (Ruby)

Good evening,

I'm trying to solve a problem on Codewars:

In this little assignment you are given a string of space separated numbers, and have to return the highest and lowest number.

Example:

``````high_and_low("1 2 3 4 5")  # return "5 1"
high_and_low("1 2 -3 4 5") # return "5 -3"
high_and_low("1 9 3 4 -5") # return "9 -5"
``````

Notes:

All numbers are valid Int32, no need to validate them.
There will always be at least one number in the input string.
Output string must be two numbers separated by a single space, and highest number is first.

I came up with the following solution however I cannot figure out why the method is only returning "542" and not "-214 542". I also tried using #at, #shift and #pop, with the same result.

Is there something I am missing? I hope someone can point me in the right direction. I would like to understand why this is happening.

``````def high_and_low(numbers)
numberArray = numbers.split(/\s/).map(&:to_i).sort
numberArray[-1]
numberArray[0]
end

high_and_low("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6")
``````

EDIT

I also tried this and receive a failed test "Nil":

``````def high_and_low(numbers)
numberArray = numbers.split(/\s/).map(&:to_i).sort
puts "#{numberArray[-1]}" + " " + "#{numberArray[0]}"
end
``````

When omitting the `return` statement a function will only return the result of the last expression within its body. To return both as an Array write:
``````def high_and_low(numbers)