-2

rubyの配列の配列の最大値を返そうとしています

1Dアレイの場合、これは機能します

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

ルビーの多次元配列で同じことをどのように達成できますか

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

flattenを使用して最大のインデックスを見つけ、列と行を計算しようとしましたが、正しい結果が得られず、間違っていると感じました。rubyでこれを達成するためのクリーンな方法はありますか?ありがとう。

4

2 に答える 2

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]
于 2012-12-17T01:03:21.353 に答える
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]
于 2012-12-16T22:53:37.033 に答える