当前位置: 首页 > 知识库问答 >
问题:

Ruby在一行中打印两个整数而不使用字符串插值

赫连琦
2023-03-14

我正在黑客排名https://www.hackerrank.com/challenges/mini-max-sum/problem上解决这个问题

如果我在下面的代码中进行字符串插值,它会给我一个错误:您的代码没有通过这个测试用例。我知道我不能在一个put/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)

我的问题是如何在一行中用一个空格分隔打印多个整数。我想打印10 14而不是“10 14”

共有1个答案

米承嗣
2023-03-14

您的问题不在于字符串内插,而在于将结果打印到stdout的方法。您应该使用printputs,而不是p,因为printputs调用to_s,它只是转换为字符串,而p调用inspect,它会显示更多信息(如引号指示它是字符串,在其他情况下是隐藏字符),对调试更有用。

至于printputs-puts之间的区别,puts只是在末尾插入一个换行,而print不插入换行,并打印您给出的内容。

 类似资料:
  • 所以我一直在努力完成这个任务,我必须写一个java代码来将两个二进制数相乘为一个字符串。我不知道如何将它们相乘并保存在单独的字符串中,这样我就可以在最后添加它们。有人能给我一些提示吗?我必须用给定的字符串做乘法,但不能将它们转换为整数。我知道如何在纸上做乘法,但不知道如何将其转换为代码。这是我目前为止的代码。

  • 问题内容: 我正在编写一个程序,该程序将以字符串形式输出唯一字符(通过扫描仪输入)。我创建了一个方法来尝试实现此目的,但我一直在获取不重复的字符,而不是字符串中唯一的一个(或多个)字符。我只想要唯一的字母。 这是我的代码: 这是上面代码的示例输出: 预期的输出将是: 问题答案: 根据所需的输出,当以后重复时,必须替换最初已经添加的字符,因此:

  • 问题内容: 今天才开始学习Java,似乎无法弄清楚。我正在学习Learnjavaonline.org上的教程,该教程教您一些知识,然后要求您编写代码来完成特定的事情,然后检查输出以查看其正确性。问题是,如果它不正确,则不会说出原因,也不会给出正确代码的示例。 它希望我使用所有原语输出一个字符串,说“ H3110 w0r1d 2.0 true” 我想出了这个 } 但它输出 我怎样才能使它不将所有整数

  • 问题内容: 标题怎么说。我有一个骰子程序,它会打印骰子IE 我希望能够打印多个骰子,所以它看起来像这样: 我已经尝试过了,但是仍然将它们打印在彼此下面。我当时也在考虑创建一个函数,该函数会打印每个对象的顶行,但是我不知道该怎么做。有任何想法吗? 问题答案: 这样就可以打印了。数字在1到6(含)之间随机分配。用作命令行参数的骰子数。因此,在我的情况下./roll 6会打印6个骰子,随机数最多为6。

  • 问题内容: 是否有一种简单的方法可以在Go中格式化字符串而不打印字符串? 我可以: 但是我希望返回格式化的字符串而不是打印出来的字符串,以便我可以进一步处理它。 我也可以做类似的事情: 但这在格式字符串很复杂时很难阅读,而在一个或多个部分不是字符串而必须首先转换的时候(例如, 有没有更简单的方法可以做到这一点? 问题答案: Sprintf是您想要的。 例 您还可以在“ 错误”示例中看到它在使用中,

  • 问题内容: 我对此表示怀疑。 输出: 但是我想让它打印M2而不是M11。我无法对++进行编号,因为该变量与for循环有关,如果这样做,则会给我不同的结果,并且由于输出格式更改,因此无法使用其他print语句进行打印。 请您帮助我如何正确打印它。 问题答案: 试试这个: 换行符在哪里