Ruby,如何获取数组中特定百分比的元素

时间:2013-03-26 16:29:11

标签: ruby arrays

在测试环境中,我需要采用特定百分比的数组元素。

我的请求的规范可以在此测试中描述:

def test_percent_elements
  array = [1,2,3,4,5,6,7,8,9,10]

  assert_equal([], array.percent_elements(0))
  assert_equal([1], array.percent_elements(1))
  assert_equal([1], array.percent_elements(10))
  assert_equal([1,2], array.percent_elements(11))
  assert_equal([1,2,3,4,5], array.percent_elements(50))
  assert_equal([1,2,3,4,5,6,7,8,9,10], array.percent_elements(100))
end

哪种方法可以在Ruby中解决这个问题?

2 个答案:

答案 0 :(得分:6)

我写道:

class Array
  def percent_elements(percent)
    take((size * percent / 100.0).ceil)
  end
end

答案 1 :(得分:0)

我的实际做法是:

class Array
  def percent_elements(percent)
    total = self.length
    elements = ((total * percent) / 100.to_f).ceil
    self[0, elements]
  end
end