【发布时间】:2012-06-02 00:06:35
【问题描述】:
我正在尝试转换位数组,例如[0,0,1,0].to_i = 2 或[0,1,0,1].to_i = 5。
在 Ruby 中有哪些可能的方法来做到这一点?
【问题讨论】:
我正在尝试转换位数组,例如[0,0,1,0].to_i = 2 或[0,1,0,1].to_i = 5。
在 Ruby 中有哪些可能的方法来做到这一点?
【问题讨论】:
这是一种方法:
[1] pry(main)> [0,0,1,0].join.to_i(2)
=> 2
[2] pry(main)> [0,1,0,1].join.to_i(2)
=> 5
[3] pry(main)>
【讨论】:
这是一个稍微复杂的 sn-p(与 Ryan 相比)。
a1 = [0,0,1,0]
a2 = [0,1,0,1]
def convert a
a.reverse.each.with_index.reduce(0) do |memo, (val, idx)|
memo |= val << idx
end
end
convert a1 # => 2
convert a2 # => 5
【讨论】: