gpt4 book ai didi

swift - 数组与偏移量对自身执行异或

转载 作者:行者123 更新时间:2023-12-05 05:36:10 25 4
gpt4 key购买 nike

尝试实现自相关算法,例如:

let exampleData: [Float] = [1, 2, 3, 4, 5]

试图找到计算 1 ^ 2 + 2 ^ 3 + 3 ^ 4 + 4 ^ 5 的最快方法。

本质上,遍历数组,并且对于每个元素,计算它与相距一定距离的另一个元素之间的异或结果。

问题是,对于许多不同的偏移值也必须这样做。

现在我只有一个嵌套的 for 循环,我不知道如何让它更快......

var data: [Bool]
var result: [Int]

...

for offset in start..<end {
for index in 0..<(end - offset) {
if (data[index] ^ data[index + frequency]) {
result[offset] += 1
}
}
}

最佳答案

听起来你可能想要来自 swift-algorithms 的 windows(ofCount:):

https://github.com/apple/swift-algorithms/blob/main/Guides/Windows.md

这将为您提供一个通过任何集合的滑动窗口,如果您的偏移量相对较小(或者您实际上想要整个窗口,例如做移动平均),那就太好了。

swift-algorithms 的东西很好,因为它比你临时做的任何事情都更优化,而且还提供惰性 eval。

您还可以考虑对齐并zipping 您的序列,然后在其上进行映射,例如:

zip(data, data.dropFirst(offset))
.map { $0 ^ $1 }

...等等

关于swift - 数组与偏移量对自身执行异或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73340323/

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