Swift 使用for循环创建棱锥数字

Swift 使用for循环创建棱锥数字,swift,Swift,我正在尝试用数字创建金字塔: 例如 对于最大元素(循环将执行多少次):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、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循环将显示24小时类型的时间。我失去了一个想法,我怎样才能证明它。

我已经解决了我的问题

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)
}

您可以这样做:

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)
        }
    }
}

我不知道你在问什么。金字塔在哪里,为什么第一个增量是3,第二个增量是2,最后一个增量是1?你能说得更清楚些吗?顺便说一句,你是在解决家庭作业吗:)如果是的话,你的8项数组中没有错误吗?(提示,您只列出了7个元素。)@dfd是,忘记了一个数字。感谢you@AhmadF不,是为了自我教育。尝试使用文本格式化标签以避免许多情况。就像我提到的,我想展示一个时间。这取决于我给出的数字。标签/行的数量取决于“maxElements”的类型。我创建的示例为我提供了24小时风格的时间。从0:00到23:59。我想把它转换成12小时制-上午12点-下午12点。谢谢你的回答!在你发布之前,我已经解决了我的问题。我更新了我的答案,使代码更加紧凑。祝你好运
_ = (0..<maxElements).enumerated().map({ (index, element) in
    index < maxElements / 2 ? generatedArray.append(index * step) : generatedArray.append(24 - index * step)
})