You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何获取数组最小8个值并计算其平均值?

解决方案

要从最近20杆成绩中筛选出最低8杆并计算平均值,你可以按照排序→取前N个→求和→计算平均值的步骤实现,下面是修改后的完整代码:

var scores: Array = [98, 99, 87, 86, 88, 92, 88, 87, 84, 98, 85, 84, 80, 99, 100, 101, 94, 96, 79, 99, 92, 94, 87, 99, 80]

// 获取最近20杆成绩,转换为数组以便后续操作
var lastTwentyScores = Array(scores.suffix(20))
// 对成绩从小到大排序,取前8个最低分
var lowestEightScores = lastTwentyScores.sorted().prefix(8)
// 计算最低8杆的总和
var totalLowestEight = lowestEightScores.reduce(0, +)
// 计算平均值
var avgLowestEight = Double(totalLowestEight) / 8
// 计算高尔夫指数
var index = avgLowestEight - 72

泛化问题:计算数组中最小N个值的总和

通用实现步骤:

  • 将数组从小到大排序(sorted()默认按升序排列)
  • 取排序后数组的前N个元素(使用prefix(N)方法)
  • 对这N个元素求和(使用reduce(0, +)累加)

示例代码(以取数组中最小3个值的总和为例):

let numbers = [5, 2, 9, 1, 5, 6]
let n = 3
let sumOfSmallestN = numbers.sorted().prefix(n).reduce(0, +)
// 最终结果为 1+2+5=8

给高尔夫爱好者的说明:本次练习假设用户仅在标准杆为72的球场打球,我知道若标准杆改变,当前程序将无法正常运行。

内容的提问来源于stack exchange,提问作者Jackfin321

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 23:40:26