F#为序列中的所有元素查找函数的最低结果

TJ8

我正在努力编写一个函数,它需要一个序列,比如说Hand= {C2; H8; DK; S1},通过第一次删除一个元素来找到最低的整数结果,然后使用我命名为 CalculateScore() 的函数来查找该新序列的分数。它对序列中的所有元素执行此操作,但仅删除该 1 个元素,而不是它之前的元素,因此第一次运行它将删除 C2 并计算分数,然后它将删除 H8(不删除 C2)并计算分数。一旦它计算了所有分数,它就需要找到具有最低值的那个并返回该元素。

这是我所指的一个非常暴力的非 F# 伪代码示例:

Hand= {C2; H8; DK; S1}, i = 0
NewHand = Hand[i].remove
Score = CalculateScore(newHand)
elementIndex = i
i++
NewHand = Hand[i].remove
if Score > CalculateScore(NewHand) 
    then Score = NewHand, elementIndex = i
i++
.........
return elementIndex

我做 F# 的时间不长,我不太擅长创建高阶函数和类似的东西,这就是我挣扎的原因。

放克

当您在处理高阶函数以及如何组合它们时遇到问题时,从写下您希望应用的转换开始通常会有所帮助。

let calcScoreAfterRemovingElement s el =
    s
    |> Seq.filter ((<>) el)
    |> calcScore

这里我们从序列中删除一个元素,然后计算分数。

现在,要将此转换应用于列表中的每个元素并计算最小值,我们可以简单地:

Seq.minBy (calcScoreAfterRemovingElement s) s

这是以下的简写:

Seq.minBy (fun el -> calcScoreAfterRemovingElement s el) s

当我们将元素 => 映射到过滤序列时 => 到它们对应的值并返回最小值。

例如,如果我们使用calcCard函数代替calcScore,我们可以:

let calcScoreAfterRemovingElement s el =
    s
    |> Seq.filter ((<>) el)
    |> Seq.sumBy calcCard

在这里,您删除(当前)元素,将过滤后的序列的元素映射到它们相应的值并将它们相加。

编辑

您可以使用Seq.findIndexor获取索引Seq.tryFindIndex,但这会破坏管道。让我们尝试不同的方法:

Seq.minBy (calcScoreAfterRemovingElement s) s

=

s
|> Seq.map (calcScoreAfterRemovingElement s)
|> Seq.min

获取索引

s
|> Seq.map (calcScoreAfterRemovingElement s)
|> Seq.indexed
|> Seq.minBy snd
|> fst

=

s
|> Seq.mapi (fun i el -> i , calcScoreAfterRemovingElement s el)
|> Seq.minBy snd
|> fst

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使列表中的所有元素均等且成本最低

来自分类Dev

查找列表中的所有最小元素或按函数加权的元素

来自分类Dev

使用usort查找序列中的最低=>多维

来自分类Dev

如何在 mongodb 中为 javascript 数组中的所有元素查找匹配项?

来自分类Dev

查找并替换div中的所有元素

来自分类Dev

查找Angular指令中的所有元素

来自分类Dev

过滤选项序列并收集所有Somes的值。为此,F#中是否有内置函数?

来自分类Dev

在python中查找函数的所有根

来自分类Dev

JS查找数组中的所有序列

来自分类Dev

如何在ajax响应中为所有<a>元素设置jquery函数

来自分类Dev

查找数组的最低元素

来自分类Dev

F#函数查找列表的所有旋转

来自分类Dev

查找div中具有特定类的所有元素

来自分类Dev

这是使用C ++中的函数查找最低数字的最有效方法吗?

来自分类Dev

该函数返回其中field为1的所有元素

来自分类Dev

查询以动态查找 mongoose 中数组中的所有元素

来自分类Dev

从可排序列表中获取所有元素属性

来自分类Dev

在Python / Django中为所有记录器设置全局最低记录级别

来自分类Dev

查找所有以xml开头的元素中包含文本的后代

来自分类Dev

查找容器中的所有可见元素

来自分类Dev

在数组中查找所有匹配的元素-Java

来自分类Dev

在XmlSchemaElement中查找所有无界元素

来自分类Dev

MongoDB:从单个文档中查找所有匹配的数组元素

来自分类Dev

使用jQuery在Json文件中查找所有父元素

来自分类Dev

使用Python按属性查找ElementTree中的所有元素

来自分类Dev

查找属性中包含值的所有元素

来自分类Dev

查找列表中的所有元素相同还是不同?

来自分类Dev

查找访问树的所有节点的最低成本

来自分类Dev

在numpy arra中查找值的所有序列(和最长序列)

Related 相关文章

  1. 1

    使列表中的所有元素均等且成本最低

  2. 2

    查找列表中的所有最小元素或按函数加权的元素

  3. 3

    使用usort查找序列中的最低=>多维

  4. 4

    如何在 mongodb 中为 javascript 数组中的所有元素查找匹配项?

  5. 5

    查找并替换div中的所有元素

  6. 6

    查找Angular指令中的所有元素

  7. 7

    过滤选项序列并收集所有Somes的值。为此,F#中是否有内置函数?

  8. 8

    在python中查找函数的所有根

  9. 9

    JS查找数组中的所有序列

  10. 10

    如何在ajax响应中为所有<a>元素设置jquery函数

  11. 11

    查找数组的最低元素

  12. 12

    F#函数查找列表的所有旋转

  13. 13

    查找div中具有特定类的所有元素

  14. 14

    这是使用C ++中的函数查找最低数字的最有效方法吗?

  15. 15

    该函数返回其中field为1的所有元素

  16. 16

    查询以动态查找 mongoose 中数组中的所有元素

  17. 17

    从可排序列表中获取所有元素属性

  18. 18

    在Python / Django中为所有记录器设置全局最低记录级别

  19. 19

    查找所有以xml开头的元素中包含文本的后代

  20. 20

    查找容器中的所有可见元素

  21. 21

    在数组中查找所有匹配的元素-Java

  22. 22

    在XmlSchemaElement中查找所有无界元素

  23. 23

    MongoDB:从单个文档中查找所有匹配的数组元素

  24. 24

    使用jQuery在Json文件中查找所有父元素

  25. 25

    使用Python按属性查找ElementTree中的所有元素

  26. 26

    查找属性中包含值的所有元素

  27. 27

    查找列表中的所有元素相同还是不同?

  28. 28

    查找访问树的所有节点的最低成本

  29. 29

    在numpy arra中查找值的所有序列(和最长序列)

热门标签

归档