以前、Scala の Seq が関数であることを書きましたが、

ym.hatenadiary.jp

これを利用して、最大値のインデックスを取得する関数を簡潔に実装することが出来ます。

val seq = scala.util.Random.shuffle(1 to 10)
seq.indices.maxBy(seq)

美しいですね。

maxBy は高階関数で、数式記号で言うところの argmax に相当します。ここでは、seq のインデックスを seq(という関数)で seq の中の実際の値に変換して、その値が最大になるようなインデックスを返しています。

Seq の拡張メソッドとして実装したい場合は以下のようにすればOK。

argmax in Scala