I am solving this problem on hacker rank https://www.hackerrank.com/challenges/mini-max-sum/problem
Its asking: Print two space-separated long integers denoting the respective minimum and maximum values that can be calculated by summing exactly four of the five integers. (The output can be greater than 32 bit integer.)
If I am doing string interpolations as in my code below, its giving me an error: Your code did not pass this test case. I know I can't use multiple variables in a single puts/p line.
array = gets.split(" ")
def get_max_and_min_sum(input_array)
return "0 0" if input_array.size < 1
input_array = input_array.map{|i| i.to_i}
input_array = input_array.sort
return "#{sum(input_array[0..3])} #{sum(input_array[1..4])}"
end
def sum(array)
return array.inject(0){|sum,i| sum+=i}
end
p get_max_and_min_sum(array)
My question is how can I print multiple integers in one line separated by one space. I want to print 10 14 and not "10 14"
Your problem is not in the string interpolation but in the method you use to print out the result to stdout. You should use print
or puts
instead of p
since print
and puts
call to_s
which simply converts to string, while p
calls inspect
which shows you more information (like the quotes to indicate that it is a string and in other cases stuff like hidden characters) and is more useful for debugging.
As for the difference between print
and puts
- puts
simply inserts a newline at the end while print
does not and prints exactly what you give it.