Ruby 在一行中打印两个整数而不使用字符串插值
Ruby Print two integers in one line without using string interpolations
我正在黑客等级上解决这个问题https://www.hackerrank.com/challenges/mini-max-sum/problem
它的要求:打印两个 space 分隔的长整数,分别表示可以通过将五个整数中的四个恰好相加来计算的最小值和最大值。 (输出可以大于32位整数。)
如果我在下面的代码中进行字符串插值,它会给我一个错误:你的代码没有通过这个测试用例。我知道我不能在单个 puts/p 行中使用多个变量。
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)
我的问题是如何在一行中打印多个整数,中间用一个 space 分隔。
我想打印 10 14 而不是 "10 14"
问题是 p
和 print
之间的区别:
irb(main):003:0> p "1 2"
"1 2"
irb(main):005:0> print "1 2"
1 2
使用 print 应该可以解决你的问题
您的问题不在于字符串插值,而在于您将结果打印到标准输出的方法。您应该使用 print
或 puts
而不是 p
因为 print
和 puts
调用 to_s
只是转换为字符串,而 p
调用 inspect
显示更多信息(比如引号表明它是一个字符串,在其他情况下是隐藏字符之类的东西)并且对调试更有用。
至于 print
和 puts
之间的区别 - puts
只是在末尾插入一个换行符,而 print
则不会,并且会准确打印您提供的内容。
给出
str = "21 4 8 13 11"
计算
arr = str.split.map(&:to_i)
#=> [21, 4, 8, 13, 11]
smallest, largest = arr.minmax
#=> [4, 21]
tot = arr.sum
#=> 57
print "%d %d" % [tot-largest, tot-smallest]
36 53
如果要打印回车 return,则将最后一行的 print
更改为 puts
。
我正在黑客等级上解决这个问题https://www.hackerrank.com/challenges/mini-max-sum/problem
它的要求:打印两个 space 分隔的长整数,分别表示可以通过将五个整数中的四个恰好相加来计算的最小值和最大值。 (输出可以大于32位整数。)
如果我在下面的代码中进行字符串插值,它会给我一个错误:你的代码没有通过这个测试用例。我知道我不能在单个 puts/p 行中使用多个变量。
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)
我的问题是如何在一行中打印多个整数,中间用一个 space 分隔。 我想打印 10 14 而不是 "10 14"
问题是 p
和 print
之间的区别:
irb(main):003:0> p "1 2"
"1 2"
irb(main):005:0> print "1 2"
1 2
使用 print 应该可以解决你的问题
您的问题不在于字符串插值,而在于您将结果打印到标准输出的方法。您应该使用 print
或 puts
而不是 p
因为 print
和 puts
调用 to_s
只是转换为字符串,而 p
调用 inspect
显示更多信息(比如引号表明它是一个字符串,在其他情况下是隐藏字符之类的东西)并且对调试更有用。
至于 print
和 puts
之间的区别 - puts
只是在末尾插入一个换行符,而 print
则不会,并且会准确打印您提供的内容。
给出
str = "21 4 8 13 11"
计算
arr = str.split.map(&:to_i)
#=> [21, 4, 8, 13, 11]
smallest, largest = arr.minmax
#=> [4, 21]
tot = arr.sum
#=> 57
print "%d %d" % [tot-largest, tot-smallest]
36 53
如果要打印回车 return,则将最后一行的 print
更改为 puts
。