def match_liner(val, array) # >>677と同等 array[0...-1].each_index do |i| if val <= array[i+1] return val-array[i] <= array[i+1]-val ? i : i+1 end end array.size - 1 end
def match_recursive(val, array) case array.size when 0 nil when 1 0 when 2 val-array[0] <= array[1]-val ? 0 : 1 else # ↑↓ 不等号に注意のこと i = array.size / 2 val < array[i] ? match_recursive(val,array[0..i]) : match_recursive(val,array[i..-1]) + i end end