在Swift中,我有一个方法可以生成如下的数字集:
86.9238759555414
86.4558606813632
86.4277950105986
86.6055803862833
86.1875587264579
86.7055257286376
86.7445244949838
86.5632505027143
86.7381593407261 // This will trigger a function, because 4 consecutive numbers are within .3 range.
每秒都会将一个数字添加到此集合中。我希望能够检测到4个连续数字何时在彼此的.3范围内。在上面设置的数字中,这将发生在最后一个数字86.7381593407261之后,因为之前的3个数字都在.3之内。
我在swift写作的尝试如下:
var counter = 0
var maxValue = 0.0
var minValue = 0.0
// set max - works properly.
if currentValue > maxValue {
maxValue = currentValue
}
// set min - not working. the min always prints 0.0
if currentValue < currentValue {
minValue = currentValue
}
if maxValue - currentValue <= 0.3 && minValue + currentValue <= 0.3{
//if it passes the previous 2 conditions, increment the counter and update max/min appropriately.
counter += 1
}
// If it doesn't, reset the counter to 0, and reset max and min to the Int min and max values, respectively.
else {
counter = 0
// reset max and min to the Int min and max values, respectively.
minValue = DBL_MAX
maxValue = DBL_MIN
}
if counter == 4 {
// celebrate
}
答案 0 :(得分:1)
以下是解决方案的概要:
count
,代表传递数字的当前“连胜”,max
,表示当前条纹中的最大值,min
,表示当前条纹中的最小值max
,请确保它在0.3
的{{1}}内max
,请确保它在min
分钟内0.3
/ max
。如果没有,请将计数器重置为0,并将min
和max
分别重置为min
最小值和最大值。