やりたい事は、配列(要素数4固定)の値の中で最大値のindex値を取得したいです。
ruby
1ha1 = [200, 250, 350 ,220] 2p ha1.index(ha1.max) #=>2
通常時ならこれで事足りるのですが、仕様上最大値を持っているindexが複数ある場合があります。
複数ある場合は、もう一つの配列ha2(ha1と同要素数:4)を見て最小値を持つindexを返したいです。
(※ha2の配列は同一値が入ることはありません。すべてユニークです。)
ruby
1#ha1で最大なのは420なので3を返す。ha2は無視。 2ha1 = [200, 250, 350 ,420] 3ha2 = [1, 4, 3 ,2] 4-------------------------------------- 5#ha1で最大なのは100(indexは0と2)。 6#ha2[0](1)とha2[2](3)を比較するとha2[0]の方が小さいので0を返す。 7ha1 = [100, 20, 100 ,0] 8ha2 = [1, 2, 3 ,4] 9-------------------------------------- 10#ha1の値がすべて同じ場合もあり得る。 11#ha2の中で1が一番小さいのでindexは2を返す。 12ha1 = [200, 200, 200 ,200] 13ha2 = [2, 4, 1 ,3]
現状のプログラム
ruby
1 ha1 = [100, 20, 100 ,100] 2 ha2 = [3, 2, 1 ,4] 3 tmp = [] 4 for j in 0..3 5 tmp.push(j) if ha1[j] == ha1.max 6 end 7 8 ind = tmp[0] 9 for j in 1..tmp.size - 1 10 ind = tmp[j] if ha2[ind] > ha2[tmp[j]] 11 end 12 p ind #=>2
値がユニークならたった1行で済む事なので、もう少しスマートに書けないかと思っています。
急いではいないので作業の息抜き時にでも回答していただければと思います。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/18 02:34