返回Ruby中2d数组的最大数字索引

时间:2012-12-16 22:33:12

标签: ruby multidimensional-array

我试图在ruby中返回数组数组的最大值

对于1d数组这是有效的

arr = [99, 3, 14, 11, 1, 12]
position = arr.each_index.max

如何在ruby

中实现多维数组的相同功能
arr = [[99, 3, 14], [11, 1, 12], [1.....]

我尝试使用flatten然后找到max的索引并尝试计算出列和行但是没有得到正确的结果并且感觉不对,有没有一种干净的方法来实现这个与ruby?感谢。

2 个答案:

答案 0 :(得分:1)

这应该有效

arr.map(&:max).max

要查找索引,请尝试:

1.9.3p125 :018 > arr = [[99, 3, 14], [11, 1, 12], [1,10]]
 => [[99, 3, 14], [11, 1, 12], [1, 10]] 
1.9.3p125 :019 > arr.map{|sub| sub.each_with_index.max}.each_with_index.max_by{|sub_max| sub_max[0]}
 => [[99, 0], 0]

答案 1 :(得分:1)

首先获得最大值:

m = arr.flatten.max
#=> 99

然后听起来你要么想要包含m:

的数组的索引
arr.index{|x| x.include? m}
#=> 0

或该索引加上该数组中的m索引

[i = arr.index{|x| x.include? m}, arr[i].index(m)]
#=> [0, 0]