配列が増加しているかどうかを確認する方法があるかどうか疑問に思っていますか?
これが私の解決策ですが、私はもっと美しい方法を探しています:
n = - 1
@arr.flatten.each { |e|
return false if e < n
n = e
}
配列が増加しているかどうかを確認する方法があるかどうか疑問に思っていますか?
これが私の解決策ですが、私はもっと美しい方法を探しています:
n = - 1
@arr.flatten.each { |e|
return false if e < n
n = e
}
次のことができます。
> arr = [1, 4, 5, 6]
> arr.each_cons(2).all? { |a, b| (a <=> b) <= 0 }
=> true
配列クラスに追加できます
class Array
def is_sorted?
each_cons(2).all? { |a, b| (a <=> b) <= 0 }
end
end
これを試して、
if @arr.sort.uniq == @arr
# array is increasing
else
# array not increasing
end
これにより、配列が並べ替えられ、重複する値が削除されてから、元の配列と比較されます。
元の配列が常に増加している場合は、並べ替えられ、複製が解除された配列と一致する必要があります。
編集:
このソリューションは望ましい結果をもたらしますが、これは最善のソリューションではありません(以下のコメントを参照)。代わりに、tochのソリューションを使用することをお勧めします。