检查阵列是否正在增加

时间:2013-03-25 12:00:03

标签: ruby

我只是想知道是否有办法检查阵列是否在增加?

这是我的解决方案,但我正在寻找更美丽的方式:

n = - 1

@arr.flatten.each { |e| 
    return false if e < n
    n = e
}

2 个答案:

答案 0 :(得分:5)

您可以执行以下操作:

> arr = [1, 4, 5, 6]
> arr.each_cons(2).all? { |a, b| (a <=> b) <= 0 }
 => true

您可以将其添加到Array类

class Array
  def is_sorted?
    each_cons(2).all? { |a, b| (a <=> b) <= 0 }
  end
end

答案 1 :(得分:3)

试试这个,

if @arr.sort.uniq == @arr
  # array is increasing
else 
  # array not increasing
end

这将对数组进行排序并删除重复值,然后将其与原始数组进行比较。

如果原始数组总是在增加,它应该与已排序的重复数据删除数组匹配。

修改

虽然此解决方案提供了所需的结果,但这不是最佳解决方案(请参阅下面的评论)。我建议改用toch的解决方案。