gpt4 book ai didi

Swift - 给定一个像 30 这样的 Int 如何将范围内的数字乘以 7?

转载 作者:行者123 更新时间:2023-12-02 18:04:38 28 4
gpt4 key购买 nike

假设我有一个像 30 这样的 Int,我如何将范围内的数字乘以 7 并将它们放入 Swift 中的成对列表中?

例如,在这种情况下,它将是 [(1, 7), (8, 14), (15, 21), (22, 28), (29, 30)] 最后一对是 29-30 .

我在 Kotlin 中发现了一段代码可以做到这一点,但我不知道它在 Swift 中是如何实现的,因为我不了解 Kotlin。我发布它以防它有帮助。

val myInt = 28
val list = (1..ceil(myInt/7.0).toInt()).mapIndexed { index, i ->
7*index + 1 to (7*index + 7).coerceAtMost(myInt)
}

print(list)

更新:

到目前为止我试过这段代码:

var days = 30
var daysInt: [Int] = []
var index = 0

for i in 1...days {

if index <= days {
if i == 1 {
index += 1
daysInt.append(index)
index += 6
daysInt.append(index)
} else {
index += 1
daysInt.append(index)
index += 6
daysInt.append(index)
}
}
}

输出是:

  • 0 : 1
    • 1 : 7
    • 2 : 8
    • 3 : 14
    • 4 : 15
    • 5 : 21
    • 6 : 22
    • 7 : 28
    • 8 : 29
    • 9 : 35

没问题,但 35 应该是 30。

我相信有更好的方法。

最佳答案

Kotlin 代码

(1..myInt step 7).map { it to min(it + 6, myInt) }

评论中建议的几乎可以直接翻译成 Swift。

stride()您可以创建序列 1、8、15、...、29,并使用 map()您可以将每个值映射到一个元组:

let days = 30
let list = stride(from: 1, to: days, by: 7).map { ($0, min($0+6, days)) }
print(list)
// [(1, 7), (8, 14), (15, 21), (22, 28), (29, 30)]

关于Swift - 给定一个像 30 这样的 Int 如何将范围内的数字乘以 7?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73579547/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com