gpt4 book ai didi

ios - 如何比较 CGPoint 数组的成对元素以确定哪个具有更大的 x 位置

转载 作者:行者123 更新时间:2023-11-28 06:36:12 24 4
gpt4 key购买 nike

我有一个 CGPoint 数组(按特定顺序排列)[A1, A2,...,AN]。如何比较成对的两个元素以确定哪个元素具有更大的 x 位置?例如比较A1.xA2.xA2.xA3.xA3.xA4.x 一直到 AN.xA1.x(比较元素按特定顺序)。

最佳答案

我编写了扩展函数 pairwiseCompare(index: Self.Index?) -> Bool?,它获取元素的索引并将该元素与下一个元素(或与第一个元素,如果它是最后一个)进行比较:

extension CollectionType where Generator.Element == CGPoint {
func pairwiseCompare(index: Self.Index?) -> Bool? {
guard let index = index where startIndex.distanceTo(index) >= 0 && index.distanceTo(endIndex) > 0 else {
return nil
}
let secondIndex = index.successor() == endIndex ? startIndex : index.successor()
return self[index].x > self[secondIndex].x
}
func pairwiseCompare() -> [Bool] {
var result = [Bool]()
for index in startIndex..<endIndex {
result.append(pairwiseCompare(index)!)
}
return result
}
}

用法:

let array = [CGPoint(x: 1, y: 1), CGPoint(x: 2, y: 1), CGPoint(x: 5, y: 1)]
print(array.pairwiseCompare(-1)) // nil
print(array.pairwiseCompare(0)) // Optional(false)
print(array.pairwiseCompare(1)) // Optional(false)
print(array.pairwiseCompare(2)) // Optional(true)
print(array.pairwiseCompare(3)) // nil

print(array.pairwiseCompare()) // [false, false, true]

关于ios - 如何比较 CGPoint 数组的成对元素以确定哪个具有更大的 x 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39042709/

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