Pertanyaan Apakah pustaka F # memiliki fungsi standar untuk `argMax`?


Saya baru mengenal F # dan menulis beberapa algoritme sederhana agar terbiasa dengan bahasa yang dibutuhkan argMax. Apakah pustaka standar dilengkapi dengan fungsi untuk mencari elemen daftar yang memaksimalkan fungsi? Yaitu, jika ada fungsi yang ada yang berperilaku seperti ini:

let argMax f xs =
  let rec go a fa zs =
    match zs with
      | [] -> a
      | z :: zs' ->
        let fz = f z
        if fz > fa
        then go z fz zs'
        else go a fa zs'
  match xs with
    | []       -> invalidArg "xs" "empty"
    | x :: xs' -> go x (f x) xs'

5
2017-10-04 18:40


asal


Jawaban:


Ya, tapi namanya List.maxBy.

Inilah contohnya:

let f x = -(x * x) + 100 * x + 1000
List.maxBy f [0..1000]
// val it : int = 50

f 50
// val it : int = 3500

Ada juga List.minBy dan fungsi yang sama tersedia untuk Seq dan Array.


9
2017-10-04 18:56