2016-03-09 43 views
0

如何以相反顺序打印元素数组,不仅是单个数字编号,也是多位数字。在ruby中以相反顺序打印多位数元素的数组

[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` 
+0

什么是'N'?它在上面的代码中从未使用过。 – Stefan

+0

'n'只是用来了解数组中包含的许多元素。但是,我没有在上面的代码中使用'n'。也许我应该删除该代码。 – Packer

+0

我没有时间发布答案,但这里有个提示:两个Ruby核心类有一个'reverse'方法,'Array'和'String'。你正在使用后者。 – Stefan

回答

5

如果你喜欢的俏皮话:

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

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

+0

#感恩的代码。这工作像一个魅力!谢谢。 – Packer

+0

不应该是'9 876 54 3 2 1'吗?而不是你的发布输出'9 678 45 3 2 1' – Packer

+0

不会。如果你颠倒了字符串,它将会是'9 876 54 3 2 1'。在我的解决方案中,在数组“split”的输出中调用“reverse”。这颠倒了数组中元素的顺序,但不是元素本身的内容。 –

4

输入:[8797, 7347, 9374 ]

输出:"9374 7374 8797"

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

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

+0

请下次使用“编辑”修改/更新/更正已发布的答案,而不仅仅是删除旧的答案,并将新版本作为单独答案发布。此外,对['Array#reverse']的引用(http://ruby-doc.org/core-2.2.0/Array.html#method-i-reverse)很有帮助。 – mudasobwa

+0

@mudasobwa很抱歉,下次肯定会这么做 –

+0

@philip yoo,完美的解决方案。谢谢。 – Packer