【发布时间】:2018-01-27 02:59:00
【问题描述】:
我能够使用 Swift 3 Playgrounds 找到数组的平衡点。现在,我正在尝试创建一个方法(func),它将遍历数组并应用我的代码。这是我来自 Swift 3 Playgrounds 的代码:
import Foundation
let myArray = [1, 2, 5, 8, 4, 4]
let divSum = myArray.reduce(0, {$0 + $1}) / 2
print (divSum)
var myBalancePoint = Int()
if myArray[0] + myArray[1] >= divSum {
myBalancePoint = myArray[1]
} else {
if myArray[0] + myArray[1] + myArray[2] >= divSum {
myBalancePoint = myArray[2]
} else {
if myArray[0] + myArray[1] + myArray[2] + myArray[3] >= divSum {
myBalancePoint = myArray[3]
} else {
if myArray[0] + myArray[1] + myArray[2] + myArray[3] + myArray[4] >= divSum {
myBalancePoint = myArray[4]
} else {
if myArray[0] + myArray[1] + myArray[2] + myArray[3] + myArray[4] + myArray[5] >= divSum {
myBalancePoint = myArray[5]
}
}
}
}
}
print (myBalancePoint)
【问题讨论】:
-
平衡点是数组元素还是元素的index?
-
在 Swift 3 Playgrounds 中,我上面的代码打印出平衡点 8。8 是数组索引 [4] 的值或元素。请记住,在 Swift 中,索引从索引 [0] 开始。换句话说,myArray 有六个索引或索引。
-
您能否添加您对“平衡点”的精确定义?为什么您的代码打印
5作为[1, 2, 5, 1, 4, 4]的平衡点?[1, 2, 3, 4]的预期输出是什么,为什么?数字可以是零还是负数? –(感谢您的提醒,但我碰巧知道 Swift 索引是如何工作的 :) -
平衡点是索引的整数值,其左侧的索引整数值之和等于其右侧的整数值之和。 [1, 2, 3, 4] 没有平衡点。 [1, 2, 5, 1, 4, 4] 将 5 显示为平衡点,因为数组的除和 (divSum) 为 8.5,即 Double。请记住,我将数组的总和除以 2。Swift 将数组的除和从 8.5 的双倍向下舍入到 8,因为我们正在处理 Ints。
-
因为 Swift 将 8.5 的 double 向下舍入为 8 的 Int,因此数组的总和表示为 16。平衡点位于 myArray 的第三个索引中,其值为 Integer 5 . Integer 5 的值是正确的,因为 16 / 2 = 8。如果你添加 myArray 的前三个索引,你会得到 8。
标签: arrays swift methods swift-playground