try 实现自相关算法,例如:
let exampleData: [Float] = [1, 2, 3, 4, 5]
试图找到判断1 ^ 2 + 2 ^ 3 + 3 ^ 4 + 4 ^ 5
的最快方法.
本质上,迭代数组,对于每个元素,计算它与设置距离之外的另一个元素之间的XOR结果.
问题是,对于许多不同的偏移量,也必须这样做.
现在我只有一个嵌套的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
}
}
}