Ruby:根据任意数字列表将舍入数字降至最接近的数字

use*_*154 9 ruby arrays rounding

假设我有一个整数数组:

arr = [0,5,7,8,11,16]
Run Code Online (Sandbox Code Playgroud)

我有另一个整数:

n = 6
Run Code Online (Sandbox Code Playgroud)

我需要一个向下舍入到数组中最接近的数字的函数:

foo(n) #=> 5
Run Code Online (Sandbox Code Playgroud)

如您所见,数字没有固定的模式.这是一种优雅的方式吗?

谢谢

Mar*_*ers 15

使用select后跟max:

arr = [0,5,7,8,11,16]
puts arr.select{|item| item < 6}.max
Run Code Online (Sandbox Code Playgroud)

结果:

5
Run Code Online (Sandbox Code Playgroud)

它以线性时间运行,不需要对数组进行排序.

  • 美丽.一个我喜欢Ruby的原因.非常感谢! (3认同)