【问题标题】:Printing array of multi-digit elements in reverse order in ruby在ruby中以相反的顺序打印多位元素的数组
【发布时间】:2016-03-09 15:10:03
【问题描述】:

如何以相反的顺序打印一个元素数组,不仅是一位数字,还有多位数字。

[2, 5, 6 7]

它应该以相反的顺序将数组元素打印为7 6 5 2,每个数字后面都有一个空格。

我已经为此编写了代码。

   puts "Enter the array elements"
    arr = gets.strip
    arr = arr.split(' ').map(&:to_i)
    x = arr.reverse_each {|f| }
    z = x.join(" ")
    print z.reverse

单个数字很酷,我如何反转用户输入给出的输入数组中的多位数字,例如:

[45, 76, 87 ] # this should reverse the array as `87 76 45`


[556, 674, 878 ] # this should reverse the array as `878 674 556`
[8797, 7347, 9374 ] # this should reverse the array as `9374 7374 8797`

【问题讨论】:

  • 什么是n?上述代码中从未使用过。
  • n 仅用于了解数组包含的许多元素。但是,我在上面的代码中没有使用n。也许我应该删除该代码。!
  • 我没有时间发布答案,但这里有一个提示:两个 Ruby 核心类有一个 reverse 方法,ArrayString。您使用的是后者。
  • puts gets.strip.split(' ').map(&:to_i).reverse.inspect
  • 感谢您的点击。我得到了相同的输出 [34, 54,76] => [67, 45, 43]' with both reverse` 方法 reverse_eachreverse 这不是我想要的。

标签: arrays ruby


【解决方案1】:

如果你喜欢单行:

gets.strip.split(' ').reverse.join(' ')

这将接受输入 1 2 3 45 678 9 并将其转换为 "9 678 45 3 2 1"

【讨论】:

  • #优化代码。这就像一个魅力!谢谢。
  • 不应该是9 876 54 3 2 1 吗?而不是您发布的输出9 678 45 3 2 1
  • 没有。如果您反转字符串,它将是9 876 54 3 2 1。在我的解决方案中,reversesplit 的输出上被调用,这是一个数组。这会反转数组中元素的顺序,但不会反转元素本身的内容。
【解决方案2】:

输入:[8797, 7347, 9374 ]

输出:"9374 7374 8797"

arr = gets.chomp
arr = arr.split(' ').map(&:to_i)
x = arr.reverse.join(' ')
print x

使用 reversejoin 链接,它应该返回一个 String 类型,该类型加入了您的反向数组。

【讨论】:

  • 请下次使用“编辑”来修改/更新/更正已经发布的答案,而不是删除旧答案并将新版本作为单独的答案发布。另外,对Array#reverse 的引用很有帮助。
  • @mudasobwa 很抱歉,下次一定会这样做
  • @philip yoo,完美的解决方案。谢谢。
  • @Packer 嘿,看看 Scott 的解决方案。我意识到您不需要将它们更改为 Integer 类型,而只需拆分、反转,然后再次加入。 :)
猜你喜欢
  • 2019-06-25
  • 2017-05-29
  • 2016-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
相关资源
最近更新 更多