如何解决Swift - 将输入整数平均分配给正数和负数数组
如何从输入的整数中生成均匀分布的正负数数组?
对于奇数,数组必须包含 0 作为“中间”。
对于偶数,数组不能包含 0,而是有 0.5 个步长,例如-0.5 & 0.5.
输入整数不能为负数或 0。因此可以忽略这些输入。
示例:
Input : Output
Int 1 = [0]
Int 2 = [-0.5,0.5]
Int 3 = [-1,1]
Int 4 = [-1.5,-0.5,0.5,1.5]
Int 5 = [-2,-1,1,2]
Int 6 = [-2.5,-1.5,1.5,2.5]
and so on...
是否有一种聪明的方法可以做到这一点,或者是一系列的 for 循环和 if/else 语句?
解决方法
尝试使用 stride(from:through:by:)
。
- 请注意所需输出数组中的最后一个元素 (
end
) 始终是(input - 1) * 0.5
。 (您也可以对第一个元素执行此操作,但只需翻转符号即可) - 对于
stride
的{{1}},只需翻转from
的符号
end
输入:1,输出:[-0.0]
输入:2,输出:[-0.5,0.5]
输入:3,输出:[-1.0,0.0,1.0]
输入:4,输出:[-1.5,-0.5,0.5,1.5]
输入:5,输出:[-2.0,-1.0,1.0,2.0]
输入:6,输出:[-2.5,-1.5,1.5,2.5]
模式似乎是:
Array((1...1).map { Double($0) - (2 * 0.5) })
Array((1...2).map { Double($0) - (3 * 0.5) })
Array((1...3).map { Double($0) - (4 * 0.5) })
一般来说:
func f(_ n: Int) -> [Double] {
(1...n).map { Double($0) - (Double(n + 1) / 2.0) }
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。