私は、CoreMotionのGyroDataを使用して、デバイスの動きのZ方向を決定しています。これは私に二倍の配列を返します。前向きに前進、後向きに後退。私は、デバイスが一方向に何回動くかを数えたいと思っています。反対方向への移動は1カウントになります。アレイとカウントの変化を負から正に反復する(逆も同様)
私は値が正の値から負の値に変化するか、または負の値から配列の中に何回変化するかを数えようとしています。これが配列の場合、カウントは3になります。
let array = [1, 2, 3, 4, -1, -1, -2, -3, 1, 2, 3, -1, -2]
これは1行で行うことはできますか?私は完全にこのコードで物事を複雑にかけてるような気がします:
var count = 0
var isPositive = false
for (index, value) in array.enumerated() {
if isPositive == false {
if value > 0 {
isPositive = true
count += 1
}
} else {
if value < 0
isPositive = false
count += 1
}
}
}
感謝!!
この質問はここではなく[codereview](http://codereview.stackexchange.com)には適しています – Honey
あなたは「肯定的な値から負の値まで」と言います。それは2回だけではなく、3であると言います。 '4' - > '-1'と' 3' - > '-1' – erkanyildiz
0は何をプラスかマイナスかと見なしますか? – matt