Search code examples
rubyalgorithmprintingputs

Ruby Print two integers in one line without using string interpolations


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"

enter image description here


Solution

  • 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.