使用for循环创建金字塔数字

时间:2017-11-12 13:15:49

标签: 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

for i in 0...maxElements {
    print(i * 24 / maxElements)
}

这个简单的for循环将显示24h类型的时间。我错过了一个想法,我怎么能证明它。

2 个答案:

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