说我有一个整数数组:
arr = [0,5,7,8,11,16]
我有另一个整数:
n = 6
我需要一个向下舍入到数组中最接近的数字的函数:
foo(n) #=> 5
如您所见,数字没有固定的模式。这是一种优雅的方式吗?
由于
答案 0 :(得分:15)
arr = [0,5,7,8,11,16]
puts arr.select{|item| item < 6}.max
结果:
5
这是以线性时间运行的,不需要对数组进行排序。
答案 1 :(得分:1)
如果你使用相对较小的数组(因此不要过分担心效率),那么这应该可行:
def down_to_array num, arr
arr.select{|y| y < num}.sort_by{|z| num-z }.first
end
E.g:
myarr = [0,5,7,8,11,16]
puts down_to_array 6.5, myarr #=> 5