我正在尝试用数字创建金字塔:
例如。
表示最大元素(循环的次数):8,12或24我想订购:
8 - 0, 3, 6, 9, 12, 9, 6, 3
12 - 0, 2, 4, 6, 8, 10, 12, 10, 8, 6, 4, 2
24 - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
此示例基于使用AM / PM系统显示时间而不使用Date
个对象。
let maxElements = 8
for i in 0...maxElements {
print(i * 24 / maxElements)
}
这个简单的for循环将显示24h类型的时间。我错过了一个想法,我怎么能证明它。
答案 0 :(得分:1)
你可以这样做:
func generateNumbers(maxElements: Int) {
let step = 24 / maxElements
var generatedArray = [Int]()
for i in 0..<maxElements {
if i < maxElements / 2 {
generatedArray.append(i * step)
} else {
generatedArray.append(24 - i * step)
}
}
}
您还可以使用for
替换map(_:)
循环,使代码更紧凑,如下所示:
_ = (0..<maxElements).enumerated().map({ (index, element) in
index < maxElements / 2 ? generatedArray.append(index * step) : generatedArray.append(24 - index * step)
})
答案 1 :(得分:0)
我已经解决了我的问题。
let maxElements = 8
var tmp = 0
for i in 0...maxElements {
var result = i * 24 / maxElements
if i >= maxElements / 2 {
result = result - tmp * (24 / maxElements * 2)
tmp += 1
}
print(result)
}