微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift - 将输入整数平均分配给正数和负数数组

如何解决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:)

  1. 请注意所需输出数组中的最后一个元素 (end) 始终是 (input - 1) * 0.5。 (您也可以对第一个元素执行此操作,但只需翻转符号即可)
  2. 对于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] 举报,一经查实,本站将立刻删除。