【问题标题】:Does the F# library has a standard function for `argMax`?F# 库是否有 `argMax` 的标准函数?
【发布时间】:2023-03-27 15:13:01
【问题描述】:

我是 F# 的新手,正在编写一些简单的算法来适应该语言,这需要 argMax。标准库是否带有用于搜索最大化功能的列表元素的功能?也就是说,如果有一个行为像这样的现有函数:

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'

【问题讨论】:

    标签: f# argmax


    【解决方案1】:

    是的,但它叫List.maxBy

    这是一个例子:

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

    还有List.minBySeqArray 也有相同的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-13
      相关资源
      最近更新 更多