0

最小値が最大値よりも低いインデックス位置にある配列の最小/最大値のみを返す方法はありますか?

たとえば、次のようなものがあるとします。

array = [10, 12, 5, 3, 20, 1, 9]

この配列で .minmax を実行すると、次のようになります。

array.minmax
=> [1, 20]

ただし、この場合、最大値よりも低いインデックスを持つ最小値を取得することにのみ関心があります。

=> [3, 20]

これを行うためのさまざまな方法を考えてみましたが、あまり運がありませんでした。2つの差が負の値を返す最小/最大値を取得する方法を見つけようとしましたが、それを行う方法を見つけることができませんでした.

編集:明確にするために、これは基本的にストックピッカーであることを意図しています。配列要素は、毎日の株価です。配列の最小値と最大値の差を最大化することに関心があります (在庫 = 3 の日に購入し、在庫 = 15 の日に販売します)。値は、絶対的な最小値または最大値ではない場合があります。

4

1 に答える 1

0

私は試してみます:

array[0..array.index(array.max)].minmax

したがって、配列の最初の要素と最大値のインデックスの間の要素に minmax を適用するだけです。

インデックス値を返すには、 map を使用して minmax 配列を反復処理し、新しい配列でインデックスを取得します。

array         = [10, 12, 5, 3, 20, 1, 9]
min_max_array = array[0..array.index(array.max)].minmax
min_max_index = min_max_array.map{|v| array.index(v)}
于 2015-08-12T16:13:14.407 に答える