F# 列表中所有其他元素的总和

标签 f# functional-programming

假设我有一个像这样的函数定义:

let sum (numbers: int list) =
    // code here

有哪些可能的方法来计算数字列表中所有其他元素的总和?因此,如果输入是 [3;5;3;7] 结果是 [(3, 15); (5, 13); (3, 15); (7, 11)].

我实际上对任何解决方案都很感兴趣,尤其是那些使用函数式方法的解决方案。

谢谢

最佳答案

您可以通过对列表求和然后为列表中的每个元素 x 返回一个 (x, sum - x) 元组来简单地完成此操作:

let sum (numbers: int list) : (int * int) list = 
    let s = List.sum numbers
    numbers |> List.map(fun x -> (x, s-x))

let nums = [3;5;3;7]
printfn "%A" (sum nums) // [(3, 15); (5, 13); (3, 15); (7, 11)]

关于F# 列表中所有其他元素的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44568080/

相关文章:

visual-studio-2013 - 为什么 F# 库没有 dll 版本?

json - 使用 System.Text.Json 序列化 Record 成员

functional-programming - 为什么.array 必须在.group 之后才能使用.sort?

list - 在 Erlang 中获取衍生函数的结果

F#:我可以在调用基类的构造函数中使用 try/with 吗?

f# - 为什么 F# 编译器会与 seq{0L..-5L..-10L} 发生冲突?

html - 你能提出一种更优雅的方法来将 'tokenize' c# 代码用于 html 格式化吗?

java - Guava 函数根据对列表中每个项目的应用条件将项目添加到结果集合中

functional-programming - 在 nim 中传递函数

swift - 在 Swift 3 中实现教堂数字时出现非转义错误