2012-03-14 1 views
0

У меня есть матрица и массив:Рубин - определить, если значение лежит в пределах столбца матрицы

m = Matrix[ 
[1, 2, 3], 
[11, 15, 20] 
] 

array = [11, 13, 14, 18] 

Есть ли способ, чтобы определить, какие элементы из лежит массив между верхней и нижними строками каждого столбца матрицы? Благодарю.

+0

Ваша проблема утверждение немного неясно. Каков ваш ожидаемый результат? – dbenhur

ответ

1

Это не совсем понятно, что вы имеете в виду под «между», но простое понимание:

def filter_array_between_first_and_last_rows_of_matrix(array,m) 
    lower = m.row_vectors.first.max 
    upper = m.row_vectors.last.min 
    array.select{|e| lower < e && e < upper} 
end 

вот другая интерпретация:

def filter_array_between_first_and_last_rows_of_matrix(array,m) 
    bounds_pairs = m.column_vectors.map { |cv| [cv.first, cv[-1]] } 
    array.select {|e| bounds_pairs.any? { |lo,hi| lo < e && e < hi } } 
end 
+0

Спасибо, второй сделал трюк. Я имел в виду, что верхняя строка является верхней границей, а нижняя строка - нижней границей. Для тех, кто просматривает этот поток, убедитесь, что вы добавили закрывающий скобок после «cv [-1]». – EHNole

Смежные вопросы