【发布时间】:2017-04-23 15:30:41
【问题描述】:
我有两个序列,一个叫做 Hand 有 5 个元素,另一个叫做 Deck,有一些 n 大小。我需要首先将 Deck 的第一个元素附加到 Hand(创建大小为 6 的新 Seq)然后在该新序列上运行一个函数以获得分数,例如 50。然后我需要将 Deck 的第二个元素附加到 Hand (再次是大小为 6 的新 Seq)并运行该函数以获得 25 分。
这需要对 Deck 中的所有元素都进行,这样我就有了一堆分数。这些分数是否保存到列表中或以其他方式保存都没有关系。然后我需要找到所有这些结果的平均值并返回该值。
这是我所追求的伪代码示例-
Hand = {S2; C5; HK; D9; C1}, Deck = {...a bunch of cards...}
score[0] = CalcScore (Hand.append Deck[0]) //e.g. CalcScore ({S2; C5; HK; D9; C1; HJ})
score[1] = CalcScore (Hand.append Deck[1]) //e.g. CalcScore ({S2; C5; HK; D9; C1; D2})
score[n] = CalcScore (Hand.append Deck[n]) //e.g. CalcScore ({S2; C5; HK; D9; C1; SQ})
return averageScore = score.average
我知道如果我可以创建一个包含每个单独分数的列表或序列,我可以使用 Seq.average/List.average 但我不确定如何通过附加和运行函数来完成第一部分分别为每个元素保存该值。
我很难理解如何创建高阶函数,而且 F# 对我来说是新事物,与我所掌握的少数几种语言完全不同。
任何指导或信息都会有很大帮助,谢谢!
【问题讨论】:
-
基本上,做一些类似于你上一个问题的事情,但使用averageby
-
不同之处在于该问题只有 1 个序列,它使用 2 个序列,要求一个序列的元素分别附加到另一个序列并运行一个函数,这是我不明白的主要事情.
标签: function f# append sequence elements